OPERASI ARITMATIKA OPERASI PENAMBAHAN 1. ADD Untuk operasi penambahan digunakan perintah ADD dan ADC serta INC. Syntax : ADD Tujuan,Asal Perintah ADD akan menambahkan nilai pada Tujuan dan Asal. Hasil yang didapat akan ditaruh pada Tujuan. contoh : MOV AH,15h ; AH:=15h MOV AL,4 ; AL:=4 ADD AH,AL ; AH:=AH+AL, jadi AH=19h Pada perintah ADD antara Tujuan dan Asal harus mempunyai daya tampung yang sama, misalnya register AH(8 bit) dan AL(8 bit), AX(16 bit) dan BX(16 bit). Contoh : pertambahan 1234h dengan F221h. 1234 h Biner --> 0001 0010 0011 0100 F221 h Biner --> 1111 0010 0010 0001 ---------- +--------------------------------------- + 10455 h 1 0000 0100 0101 0101 pertemuan 4
MOV AX,1234h ; NIlai AX:=1234h dan carry=0 nilai binernya dihasilkan bit ke 17, padahal register terdiri atas 16 bit saja. Operasi pertambahan diatas menjadikan carry flag menjadi satu, Contoh : MOV AX,1234h ; NIlai AX:=1234h dan carry=0 MOV BX,0F221h ; Nilai BX:=F221h dan carry=0 ADD AX,BX ; Nilai AX menjadi 0455h dan carry=1 pertemuan 4
MOV BX,9ABCh ; BX = 9ABCh CF = 0 MOV CX,5678h ; BX = 5678h CF = 0 2. ADC Perintah ADC digunakan dengan cara yang sama pada perintah ADD, yaitu : ADC Tujuan,Asal Pada perintah ADC, Tujuan tempat menampung hasil pertambahan ditambah lagi dengan carry flag (Tujuan:=Tujuan+Asal+Carry). 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. pertemuan 4
Contoh : perintah INC AL akan menambah nilai di register AL dengan 1. Perintah INC(Increment) pertambahan dengan 1. INC hanya menggunakan 1 byte memory, sedang perintah ADD dan ADC menggunakan 3 byte Syntax : INC Tujuan Nilai pada tujuan akan ditambah dengan 1. Tujuan disini dapat berupa suatu register maupun memory. Contoh : perintah INC AL akan menambah nilai di register AL dengan 1. pertemuan 4
syntax: SUB Tujuan,Asal OPERASI PENGURANGAN 2.1. SUB syntax: SUB Tujuan,Asal Perintah SUB akan mengurangkan nilai pada Tujuan dengan Asal. Hasil yang didapat akan ditaruh pada Tujuan Contoh : MOV AX,15 ; AX:=15 MOV BX,12 ; BX:=12 SUB AX,BX ; AX:=15-12=3 SUB AX,AX ; AX=0 Untuk menolkan suatu register bisa kita kurangkan dengan dirinya sendiri seperti SUB AX,AX. pertemuan 4
Operasi pengurangan dengan bilangan yang besar(lebih dari 16 bit). 2.2. SBB Operasi pengurangan dengan bilangan yang besar(lebih dari 16 bit). Bisa kita gunakan perintah SUB disertai dengan SBB(Substract With Carry). Syntax: SBB Tujuan,Asal Perintah SBB mengurangkan nilai Tujuan dengan Asal, hasil yang didapat dikurangi lagi dengan Carry Flag(Tujuan:=Tujuan-Asal-CF). ;================================; ; PROGRAM : KURANG.ASM ; ; FUNGSI : MENGURANGKAN ANGKA ; ; 122EFFF-0FEFFFF ; .MODEL SMALL .CODE ORG 100h TData : JMP Proses ; Lompat ke Proses ALo EQU 0EFFFh AHi EQU 122h BLo EQU 0FFFFh Bhi EQU 0FEh HslLo DW ? HslHi DW ? Proses : pertemuan 4
SUB AX,Blo ; Kurangkan EFFF-FFFF, jadi AX=F000 MOV AX,ALo ; AX=EFFFh SUB AX,Blo ; Kurangkan EFFF-FFFF, jadi AX=F000 MOV HslLO,AX ; HslLo bernilai F000 MOV AX,AHi ; AX=122h SBB AX,BHi ; Kurangkan 122-FE-Carry, AX=0023 MOV HslHi,AX ; HslHi bernilai 0023 INT 20h ; Kembali ke DOS END TData pertemuan 4
Mendefinisikan suatu nilai constanta dan variabel dengan : ALo EQU 0EFFFh AHi EQU 122h BLo EQU 0FFFFh Bhi EQU 0FEh HslLo DW ? HslHi DW ? Data yang didefinisikan dengan perintah EQU tidak dapat dirubah. Dengan perintah EQU kita dapatka bahwa ALo = 0EFFF, AHi=122, BLo=FFFF dan BHi=0FE. Untuk menampung hasil dari pengurangan A-B(122EFFF-0FEFFFF) , adalah HslLo dan HslHi. Tanda '?' digunakan untuk menyatakan tempat yang dipesan sebanyak 1 word(DW) tidak diberikan data awal yang akan terdapat pada varibel tersebut(HslLo dan HslHi). Untuk mengurangkan angka 122EFFF dengan 0FEFFFF kurangkan word rendah dari angka tersebut dahulu, yaitu EFFF- FFFF. Ini dikarenakan daya tampung register hanya 16 bit. Pengurangan EFFF-FFFF akan menyebabkan terjadinya peminjaman(Borrow), hasil word rendah(F000) yang didapatkan kemudian kita simpan pada variabel HslLo. 122 EFFF FE FFFF ------------- - 023 F000 pertemuan 4
Perintah DEC(Decrement) digunakan khusus untuk pengurangan dengan 1. Perintah DEC hanya menggunakan 1 byte memory, perintah SUB dan SBB menggunakan 3 byte. Syntax: DEC Tujuan Nilai pada tujuan akan dikurangi 1. Tujuan disini dapat berupa suatu register maupun memory. pertemuan 4
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~; ; FUNGSI : MENCETAK KARAKTER ; ; “E".."A" DENGAN ; ; INT 21h SERVIS 02 ; ;==========================; .MODEL SMALL .CODE ORG 100h Proses : MOV AH,02h ; Nilai servis MOV DL,'E' ; DL=5Ah MOV CX,5 ; Banyaknya pengulangan yang akan dilakukan Ulang: INT 21h ; Cetak karakter !! DEC DL ; Kurang DL dengan 1 LOOP Ulang ; Lompat ke Ulang INT 20h END Proses Output Mencetak karakter "E".."A" pertemuan 4
Untuk perkalian bisa digunakan perintah MUL syntax: MUL Sumber 3. OPERASI PERKALIAN Untuk perkalian bisa digunakan perintah MUL syntax: MUL Sumber Sumber dapat berupa suatu register 8 bit(Mis:BL,BH,..), register16 bit(Mis: BX,DX,..) atau suatu varibel. Ada 2 pada perintah MUL, sesuai dengan jenis perkalian 8 bit atau 16 bit. Bila Sumber merupakan 8 bit seperti MUL BH, komputer akan mengambil nilai pada BH dan nilai pada AL untuk dikalikan. Hasilnya disimpan pada register AX. Bila sumber 16 bit seperti MUL BX, komputer akan mengambil nilai pada BX dan nilai pada AX untuk dikalikan. Hasilnya disimpan pada register DX dan AX(DX:AX), jadi register DX menyimpan Word tingginya dan AX menyimpan Word rendahnya. pertemuan 4
4. PEMBAGIAN Syntax: DIV Sumber Bila sumber merupakan operand 8 bit seperti DIV BH, komputer mengambil nilai pada register AX dan membaginya dengan nilai BH. Hasil pembagian 8 bit disimpan pada register AL dan sisa dari pembagian disimpan pada register AH. Bila sumber operand 16 bit seperti DIV BX, komputer mengambil nilai pada register DX:AX dan membaginya dengan nilai BX. Hasil pembagian 16 bit akan disimpan pada register AX, sisa dari pembagian disimpan pada register DX. pertemuan 4