Skip to content


Instruksi Aritmatika dan Logika emulator8086

Setiap instruksi artimatika dan logika berpengaruh pada flag register di prosesor. Dalam register 16bit, tiap bit flag disebut flag dan dapat bernilai 0 atau 1.

  • CF/ Carry Flag – bernilai 1 jika ada unsigned overflow, kalo gak ada overflow, maka diset 0
  • ZF/ Zero Flag – diset 1 jika hasilnya 0, hasil selain flag bernilai 0
  • SG/ Sign Flag – diset 1 jika hasilnya negatif, saat hasilnya positif diset ke 0, flag ini mengambil dari nilai MSB (most significant byte)
  • OF/ Overflow Flag – diset 1 kalo ada signed yg overflow
  • PF/ Parity Flag – diset 1 kalo ada angka genap dari satu bit dalam hasilnya, bernilai 0 jika ada angka ganjil
  • AF/ Auxillary Flag – bernilai 1 jika ada unsigned yg overflow untuk low nibble(4bit)
  • IF/ Interrupt Enable Flag – diset 1 kalo CPU mendapatkan interupsi dari piranti eksternal
  • DF/ Direction Flag – flag ini digunakan oleh beberapa instruksi untuk memproses rantai data, jika diset 0, proses diselesaikan kedepan, jika flagnya 1 proses diselesaikan kebelakang

 

3 kelompok instruksi:

kelompok pertama: ADD, SUB, CMP, AND, TEST, OR, XOR

Tipe operan yg didukung:

REG, memory

memory, REG

REG,REG

memory, immediate

REG, immediate

 

reg itu registry, memory itu variablenya atau addressnya, kalo immediate berarti nilainya dimasukin secara langsung

setelah operasi diantara operan, hasilnya selalu disimpan pada operan pertama. instruksi CMP dan TEST hanya berakibat pada flag register dan tidak menyimpan hhasilnya (instruksi ini digunakan untuk membuat keputusan selama eksekusi program).

 

instruksi – instruksi yg berpengaruh hanya pada flag:

CF,ZF,SF,OF,PF,AF

  • ADD – Menambahkan operan kedua ke operan pertama
  • SUB – mengurangi operan pertama dengan operan kedua
  • CMP – Membandingkan kedua operan, dan hasilnya mempengaruhi register flag
  • AND – logika AND antara semua bit dari kedua operan
  • TEST – sama dengan AND cuma perubahan hanya terjadi pada register flag
  • OR – Logika OR antara seua bit pada dua operan
  • XOR – Logika XOR antara semua bit dari dua operan

 

kelompok ke dua: MUL, IMUL, DIV, IDIV

Tipe operan yg mendukung:

REG

memory

 

instruksi MUL dan IMUL hanya mempengarugi flag CF dan OF

Jika hasilnya diatas ukuran operan, flag diset 1, jika tidak flag diset 0. Untuk flag yg dipengaruhi operasi DIV dan IDIV tidak didefinisikan.

  • MUL – Perkalian unsigned
  • jika operannya byte:
  • AX= AL * operan
  • Jika operannya word:
  • (DX AX)= AX * Operan

 

  • IMUL – Perkalian Signed
  • DIV – Pembagian Unsigned
  • IDIV – pembagian signed

 

kelompok ketiga INC, DEC, NOT, NEG

TIPE operan yg mendukung

REG

memory

 

  • instruksi INC, DEC, hanya mempengaruhi flag: ZF, CF, OF, PF, AF
  • instruksi NOT tidak mempengaruhi flag apapun
  • NOT = Kebalikan untuk setiap bit
  • Instruksi NEG hanya mempengaruhi flag CF,ZF,SF,OF,PF,AF
  • NEG: membuat operan menjadi negatif (bilangan komplemen 2). Sebenarnya dicadangkan untuk setiap bit operand dan ditambahkan 1, contoh 5 menjadi -5, dan 2 menjadi -2

 

CONTOH PROGRAM ARITMATIKA DAN LOGIKA

Compile dan Analisislah tiap perubahan pada flag dan registernya! Lihat apakah proses perhitungannya sesuai dengan yang tampil pada register!

org 100h

;Soal: operasikan 
;AX = (2-512)^2/(10-8)(64x16)
;tanpa menggunakan variable

;Pengoperasian (10-8)
mov AX,0Ah
mov BX,08h
sub AX,BX
mov DI,AX ;simpan sementara hasilnya ke DI

;Pengoperasian (64x16)
mov AX,10h 
mov BX,40h
mul BX ;AX = AX x BX

;Pengoperasian (10-8)(64x16)
mov BX,DI
mul BX ;kalikan
mov DI,AX ;simpan sementara hasilnya ke DI

;Pengoperasian (2-512)kuadrat
mov AX,02h
mov BX,200h
sub AX,BX ;kurangi 2 - 512
mov BX,AX ;simpan ke BX
imul BX ;kalikan

;Pengoperasian Hasil AX 
mov BX,DI ;masukkan kembali nilai BX dari DI
idiv BX ;bagi hasil AX dengan BX

ret

Posted in Computer and Electronics, Depan.

Tagged with , , , , , , , , , , , , , , , .


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.