Bahasa Rakitan #5 / Operasi Aritmatika

Istilah Aritmatika sepertinya sudah tidak asing lagi ditelinga kita, karena memang kata itu tidak akan lepas dari kehidupan kita sehari-hari. apalagi yang sedang punya hutang, hitung teruusss tagihannya..tambah, kurang, bagi, kali🙂

Tapi 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 beberapa 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, hasilnya akan 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 bisa 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

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.

Perintah INC dapat digunakan apabila kita ingin menambah sebuah bilangan dengan 1. apa keuntungannya menggunakan perintah INC ini ? sebetulnya kita bisa saja menggunakan ADD atau 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

contoh diatas akan menghasilkan nilai 68h yang tersimpan langsung di register DL.

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.

Namun, 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.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: