ASEMBLY
PART 5
OPERASI
ARITMATIKA
Saat ini kita tidak mbahas tentang aritmatika
di hutang melainkan di komputer khususnya bahasa rakitan. jika kita menilik ke
rangkaian digital, maka kita akan menemukan rangkaian atau sistem yang disebut
adder, multiplexer dan lain sebagainya. namun secara programming maka kita
hanya akan menggunakan simbol-simbol sebagai perwakilan dari operator
aritmatikanya alias tidak bersentuhan secara fisik dengan sistem elektrisnya
seperti rangkaian digital.
Berikut operator Aritmatika :
1. Operasi Penambahan
Dalam bahasa rakitan, perintah penambahan bisa menggunakan perintah ADD, ADC, dan INC.
Perintah ADD akan
menambahkan nilai pada Tujuan dan Asal, hasilnyaakan
diletakan pada Tujuan.
Contoh :
MOV AH,4h ; isi AH dengan 4h
MOV AL,12h ;isi AH dengan 12h
ADD AH,AL ; tambahkan nilai AH dan AL dan letakan
hasilnya di AH
contoh diatas akan menghasilkan nilai 16h
yang diletakan di register AH. Dalam
penggunaan perintah ADD kita harus memperhatikan register yang
kita gunakan,yaitu kedua register (Tujuan dan Asal) harus mempunyai daya
tampung yang sama. misalkan
Register AH (8 bit) dan Register AL (8 bit), AX (16 bit) dan BX (16 bit).
Perbedaannya pada perintah ADC ini Tujuan
tempat menampung hasil pertambahan Tujuan dan Asal ditambah lagi dengan carry
flag (Tujuan:=Tujuan+Asal+Carry).Pertambahan yang demikian bias memecahkan masalah seperti yang pernah kita
kemukakan,seperti pertambahan pada bilangan 12345678h+9ABCDEF0h.Seperti yang telah kita ketahui bahwa
satu register hanya mampu menampung 16 bit, maka untuk pertambahan seperti yang
diatas bisa kita gunakan perintah ADC untuk memecahkannya, Contoh:
MOV AX,1234h ; AX =
1234h CF = 0
MOV BX,9ABCh ; BX = 9ABCh CF = 0
MOV CX,5678h ; BX = 5678h CF = 0
MOV DX,0DEF0h ; DX = DEF0h CF = 0
ADD CX,DX ; CX = 3568h CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1
MOV BX,9ABCh ; BX = 9ABCh CF = 0
MOV CX,5678h ; BX = 5678h CF = 0
MOV DX,0DEF0h ; DX = DEF0h CF = 0
ADD CX,DX ; CX = 3568h CF = 1
ADC AX,BX ; AX = AX+BX+CF = ACF1
Hasil penjumlahan akan ditampung pada register
AX:CX yaitu ACF13568h.
Adapun flag-flag yang terpengaruh oleh perintah ADD dan ADC ini adalah CF,PF,AF,ZF,SF dan OF
Adapun flag-flag yang terpengaruh oleh perintah ADD dan ADC ini adalah CF,PF,AF,ZF,SF dan OF
Perintah INC dapat digunakan
apabila kita ingin menambah sebuah bilangan dengan 1. apa keuntungannya
menggunakan perintah INC ini ? sebetulnya kita bisa saja
menggunakan ADDatau ADC, namun kedua perintah
tersebut akan membutuhkan 3 byte memory sedangkan INC hanya
membutuhkan 1 byte memory saja.
MOV DL, 67h ; isi DL dengan 67h
INC DL ;
tambahkan DL dengan bilangan 1
2. Operasi Pengurangan
Sama seperti ADD, perintah SUB akan
mengurangkan nilai pada tujuan dengan Asal dan hasilnya diletakan pada Tujuan.
MOV DL, 80h ;isi DL dengan 80h
MOV DH, 3h ; isi DH dengan 3h
SUB DL, DH ; kurangkan DL dengan DH
contoh diatas akan menghasilkan nilai 77h
yang tersimpan di register DL.
Perintah ini memiliki ketentuan yang sama
seperti ADD, yaitu register tujuan dan asal harus memiliki daya
tampung yang sama.
Perintah DEC dapat kita
gunakan untuk mengurangkan nilai yang berada di Tujuan dengan bilangan 1
kemudian meletakannya ke dalam tujuan kembali.
MOV DL, 67h ; isi DL dengan 67h
DEC DL ; kurangkan DL dengan bilangan 1
contoh diatas akan menghasilkan nilai 66h
yang tersimpan ke register DL.
operasi aritmatika dalam bahasa rakitan memang
sangat jarang sekali bahkan hampir tidak ada yang mau menggunakannya untuk
aplikasi-aplikasi seperti layaknya operasi aritmatika di bahasa tingkat tinggi.
penggunaan aritmatika di bahasa rakitan lebih cenderung digunakan hanya untuk
proses didalam mesin saja yang outputnya bukan berupa angka.Sebagai bahan percobaan kita coba terapkan ke pemunculan karakter di layar. coba anda buatkan program yang mampu menampilkan huruf M namun DL awal harus berisi A, tidak boleh lagi ada pengisin nilai di DL kecuali dengan operasi aritmatika.
Tidak ada komentar:
Posting Komentar