Minggu, 11 November 2012

OPERASI ARITMATIKA

 
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

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.

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