Monday, November 12, 2012

Assembly @ 5 Operasi Aritmatika

    Kembali kita merangkum artikel bahasa rakitan, kali ini yang ke-5 yaitu mengenai operasi Aritmatika, sudah kita ketahui Operasi Aritmatika adalah hal yang sudah menyatu dengan kehidupan para manusia apa lagi jika kita adalah seorang pedagang, tentu kita tidak akan pernah lepas  dari sesuatu yang bernama Aritmatika.

    Tapi kali ini kita tidak akan membahas Aritmatika dalam tema perdagangan melainkan dalam bahasa rakitan. Sudah banyak MK yang membahas Operasi Aritmatika, sbg contohnya, Rangkaian digital, sistem berkas, Pemrograman matematika, dan masih banyak lagi, tidak akan saya panjang dan lebarkan mari kita ulas saja.


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

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.

No comments:

Post a Comment