Transcript pertemuan 2

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
1
• 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
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
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
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
5
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
6
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
7
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 AB(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 EFFFFFFF 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
8
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
9
;~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~;
; 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
10
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
11
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
12