120 likes | 345 Views
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
E N D
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
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
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
3. INC • 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
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
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
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
2.3. DEC • 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
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