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
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).
- 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 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
OR – Logical OR antara semua bit dari dua operan. ini
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
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
4. Akan muncul form seperti berikut, klik COM Template > OK
8. Rundom diamond berhasil anda buat
V. Analisis
org 100h
CALL GenRandom ;call generatorRandom CALL SetCursor
MOV BibitRandom,DX ;data diambil dari DX disimpan di bibit random
MOV BX,25 ;25=set kursor posisi baris
MOV AX,BibitRandom MOV BX,80
Membuat karakter pacman muncul secara random
org 100h
CALL SetCursor
MOV BibitRandom,DX ;data diambil dari DX disimpan di bibit random
MOV AX,BibitRandom
MOV BX,25 ;25=set kursor posisi baris
;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
ret END
VII. Kesimpulan