15
LAPORAN PEMROGRAMAN ASSEMBLER KONSEP ARITMATIK DAN LOGIKA Oleh : Meyla Yan Sari 3.34.13.1.10 IK-2B PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2014

LAPORAN PEMROGRAMAN ASSEMBLER KONSEP ARITMATIK DAN LOGIKA PROGRAM STUDI TEKNIK INFORMATIKA JURUSAN TEKNIK ELEKTRO POLITEKNIK NEGERI SEMARANG 2014

Embed Size (px)

Citation preview

LAPORAN PEMROGRAMAN ASSEMBLERKONSEP ARITMATIK DAN LOGIKA

Oleh :Meyla Yan Sari

3.34.13.1.10IK-2B

PROGRAM STUDI TEKNIK INFORMATIKAJURUSAN TEKNIK ELEKTRO

POLITEKNIK NEGERI SEMARANG2014

I. Tujuan

Dalam praktikum ini mahasiswa mampu menggunakan instruksi logic dan aritmetik.

II. Dasar Teori

Kebanyakan Aritmatika dan Logika Instruksi mempengaruhi prosesor status register

(atau Flags).

Seperti yang Anda lihat ada 16 bit dalam register ini, setiap bit disebut bendera dan

dapat mengambil nilai 1 atau 0.

- Carry Flag (CF) - bendera ini diatur ke 1 ketika ada melimpah unsigned.

Misalnya ketika Anda menambahkan byte 255 + 1 (hasil tidak dalam kisaran

0 ... 255). Ketika tidak ada melimpah bendera ini diatur ke 0.

- Nol Flag (ZF) - set ke 1 ketika hasilnya adalah nol. untuk tidak nol hasil

bendera ini diatur ke 0.

- Sign Flag (SF) - set ke 1 ketika hasilnya negatif. Kapan Hasil positif itu diatur

ke 0. Sebenarnya bendera ini mengambil nilai bit yang paling signifikan.

- Overflow Flag (OF) - set ke 1 ketika ada yang ditandatangani overflow.

Sebagai contoh, ketika Anda menambahkan byte 100 + 50 (hasil tidak dalam

kisaran -128 ... 127).

- Parity Flag (PF) - bendera ini diatur ke 1 ketika ada bahkan jumlah satu bit

dalam hasil, dan 0 bila ada yang aneh jumlah satu bit. Bahkan jika hasilnya

adalah sebuah kata hanya 8 bit rendah dianalisis!

- Auxiliary Flag (AF) - set ke 1 bila ada unsigned melimpah untuk menggigit

rendah (4 bit).

- Interrupt mengaktifkan Flag (IF) - ketika bendera ini diatur ke 1 CPU bereaksi

untuk menyela dari perangkat eksternal.

- Direction Flag (DF) - bendera ini digunakan oleh beberapainstruksi untuk

memproses rantai data, ketika bendera ini diatur ke 0 - pengolahan dilakukan

ke depan, ketika bendera ini diatur ke 1 pengolahan dilakukan mundur.

Terdapat 3 grup :

1. ADD, SUB,CMP, AND, TEST, OR, XOR

Jenis operan yang didukung:

REG, memory

memory, REG

REG, REG

memory, immediate

REG, immediate

REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.

Memori: [BX], [BX + SI + 7], variabel, dll ...

langsung: 5, -24, 3Fh, 10001101b, dll ...

Setelah operasi antara operan, hasilnya selalu disimpan dalam pertama

operan. CMP dan instruksi UJI mempengaruhi bendera saja dan tidak

menyimpan hasil (instruksi ini digunakan untuk membuat keputusan

selama eksekusi program).

Instruksi ini mempengaruhi bendera ini hanya:

CF, ZF, SF, OF, PF, AF.

ADD – menambahkan operan kedua terlebih dahulu.

SUB – Kurangi operan kedua terlebih dahulu.

CMP – Kurangi operan kedua dari pertama bendera saja.

AND – Logika AND antara semua bit dari dua operan. ini

aturan berlaku :

1 AND 1 = 1

1 AND 0 = 0

0 AND 1 = 0

0 AND 0 = 0

Seperti yang Anda lihat kita mendapatkan 1 hanya jika kedua bit adalah 1.

TEST – Sama seperti AND tetapi untuk bendera saja.

OR – Logical OR antara semua bit dari dua operan. ini

aturan berlaku :

1 OR 1 = 1

1 OR 0 = 1

0 OR 1 = 1

0 OR 0 = 0

Seperti yang Anda lihat kita mendapatkan 1 setiap saat setidaknya satu dari bit

adalah 1.

XOR – XOR Logical (eksklusif OR) antara semua bit dari dua operan.

Aturan-aturan ini berlaku :

1 XOR 1 = 0

1 XOR 0 = 1

0 XOR 1 = 1

0 XOR 0 = 0

Seperti yang Anda lihat kita mendapatkan 1 setiap kali ketika bit yang

berbeda

satu sama lain.

2. MUL, IMUL, DIV, IDIV

Tipe operand yang mendukung :

REG

Memory

REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.

memory: [BX], [BX+SI+7], variable, etc

MUL dan instruksi imul mempengaruhi bendera ini hanya : CF, OF

Ketika hasil lebih ukuran operan bendera ini diatur ke 1, ketika hasil cocok

dalam ukuran operan bendera ini diatur ke 0.

Untuk DIV dan IDIV bendera tidak terdefinisi.

MUL - kalikan Unsigned:

ketika operan adalah byte:

AX = AL * operan.

ketika operan adalah kata:

(DX AX) = AX * operan.

imul - Signed multiply:

ketika operan adalah byte:

AX = AL * operan.

ketika operan adalah kata:

(DX AX) = AX * operan.

DIV - membagi Unsigned:

ketika operan adalah byte:

AL = AX / operan

AH = sisa (modulus)

ketika operan adalah kata:

AX = (DX AX) / operan

DX = sisa (modulus)

IDIV - Menandatangani membagi:

ketika operan adalah byte:

AL = AX / operan

AH = sisa (modulus). .

ketika operan adalah kata:

AX = (DX AX) / operan

DX = sisa (modulus)

3. INC, DEC, NOT, NEG

Operan yang mendukung :

REG

Memory

REG: AX, BX, CX, DX, AH, AL, BL, BH, CH, CL, DH, DL, DI, SI, BP, SP.

memory: [BX], [BX+SI+7], variable, dll

INC, instruksi Desember mempengaruhi bendera ini hanya:

ZF, SF, OF, PF, AF.

TIDAK instruksi tidak mempengaruhi bendera!

Instruksi NEG mempengaruhi bendera ini hanya:

CF, ZF, SF, OF, PF, AF.

TIDAK - Reverse setiap bit operan.

NEG - Membuat operan negatif (melengkapi dua itu).

Sebenarnya membalikkan setiap bit operan dan kemudian menambahkan 1

sampai itu. Misalnya 5 akan menjadi -5, dan -2 akan menjadi 2.

III. Alat dan Bahan

1. Software Emu8086

2. Ms.Word

IV. Langkah Kerja

1. Hidupkan komputer

2. Buka emulator 8086 yang telah dinstal pada laptop anda

3. Setelah terbuka, klik new untuk lembar kerja baru

4. Akan muncul form seperti berikut, klik COM Template > OK

5. Lembar kerja yang sudah siap untuk digunakan seperti pada gambar

berikut

6. Mulai ketikan code berikut untuk membuat aritmatika untuk rundom >

klik emulate

7. Muncul form seperti berikut. Kemudian klik run.

8. Rundom diamond berhasil anda buat

V. Analisis

Membuat karakter muncul secara random

org 100h JMP Mulai BibitRandom dw 0 ;mengambil dari waktu dw=bibit random bernilai wordPosX db ? ;?menunjukkan nilai randomPosY db ?

Mulai: MOV CX,100Ulang: CALL GenRandom ;call generatorRandom CALL SetCursor MOV AH,02H ;menggambar MOV DL,4 INT 21H MOV AH,02H ;suara MOV DL,7 INT 21H LOOP Ulang INT 20Hret

InitRandom: ;mengambil tic dalam PUSH AX PUSH CX PUSH DX MOV AH,00H INT 1AH MOV BibitRandom,DX ;data diambil dari DX disimpan di bibit random POP DX POP CX POP AXret

GenRandom: PUSH AX PUSH BX PUSH DX

Call InitRandom

MOV AX,BibitRandom MOV BX,25 ;25=set kursor posisi baris DIV BX MOV PosX,DL CALL InitRandom MOV AX,BibitRandom MOV BX,80 DIV BX MOV PosY,DL ;DL karena menggunakan 16bit POP DX POP BX POP AXret SetCursor: PUSH AX PUSH DX MOV AH,2 MOV DH,PosX MOV DL,PosY INT 10H POP DX POP AXret

END

VI. TugasMembuat karakter pacman muncul secara random

org 100h JMP Mulai BibitRandom dw 0 ;mengambil dari waktu dw=bibit random bernilai wordPosX db ? ;?menunjukkan nilai randomPosY db ?

Mulai: MOV CX,100

Ulang: CALL GenRandom ;call generatorRandom CALL Pacman ;memanggil pacman CALL SetCursor MOV AH,02H ;suara MOV DL,7 INT 21H LOOP Ulang INT 21Hret

InitRandom: ;mengambil tic dalam PUSH AX PUSH CX PUSH DX MOV AH,00H INT 1AH MOV BibitRandom,DX ;data diambil dari DX disimpan di bibit random POP DX POP CX POP AXret

GenRandom: PUSH AX PUSH BX PUSH DX

Call InitRandom MOV AX,BibitRandom MOV BX,25 ;25=set kursor posisi baris DIV BX MOV PosX,DL CALL InitRandom MOV AX,BibitRandom MOV BX,80 DIV BX MOV PosY,DL ;DL karena menggunakan 16bit

POP DX POP BX POP AXret SetCursor: PUSH AX PUSH DX MOV AH,2 MOV DH,PosX MOV DL,PosY INT 10H POP DX POP AXret

Pacman: PUSH AX ;register yang di save PUSH BX PUSH CX PUSH DX MOV AH,02H ;memposisikan kursor MOV BH,00H MOV DH,PosY MOV DL,PosX INT 10H;penggambaran karakter MOV AH,09H MOV BH,00H MOV BL,44H MOV CX, 3 MOV AL, 179 INT 10H ;gotoXY ke2 MOV AH,02H MOV BH,00H MOV DH,PosY INC DH MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H

MOV BL,44H MOV CX, 1 MOV AL, 179 INT 10H ;gotoXY ke3 MOV AH,02H MOV BH,00H MOV DH,PosY ADD DH,2 MOV DL,PosX INT 10H MOV AH,09H MOV BH,00H MOV BL,44H MOV CX, 3 MOV AL, 179 INT 10H ;harus urut POP DX POP CX POP BX POP AX retEND

Hasil :

VII. Kesimpulan

Instrusi logika dan aritmatik di bagi menjadi tiga kelompok instruksi yaitu kelompok

pertama : ADD, SUB, CMP, AND, TEST, OR, XOR. Untuk kelompok kedua

diantaranya MUL, IMUL, DIV, IDIV. Dan untuk kelompok yang ketiga ada INC,

DEC, NOT, dan NEG. Dimana masing masing kelompok digunakan pada saat-saat

tertentu dengan fungsi masing-masing yang dimiliki oleh ketiga kelompok instruksi

aritmatika dan logika tersebut.