Anda di halaman 1dari 4

Hand Out Tambahan OAK

Aritmatika

I.

Pendahuluan
Terdapat beberapa perintah aritmatika dalam mikroprosesor yang terbagi dalam beberapa
kelompok yaitu penjumlahan, pengurangan, perkalian dan pembagian.

II.

Penjumlahan
1. ADD
Berfungsi untuk melakukan penjumlahan Byte atau Word. Dalam setiap perintah
harus terdapat minimal satu register dan tujuannya harus berupa alamat atau register.
Selain itu lebar datanya harus sama. Bila terdapat carry, register CF akan bernilai 1.
Syntax : ADD tujuan, sumber
Operasi : Sumber + Tujuan + CF Tujuan
Carry CF
Contoh : - ADD AL, BL
Benar
- ADD AL, AX
Salah
- ADD AX, [22]
Benar
- ADD [22], BX
Benar
- ADD AX, 22
Benar
- ADD 22, AX
Salah
2. ADC
Berfungsi untuk melakukan penjumlahan Byte atau Word namun Carry Flag (CF) ikut
dijumlahkan.
Syntax : ADD tujuan, sumber
Operasi : Sumber + Tujuan Tujuan
Carry CF
Contoh : MOV AL, 0
ADD AL, 22
Bila CF bernilai 1 setelah perintah
dieksekusi AL akan bernilai 23
3. INC
Berfungsi untuk menambahkan satu ke tujuan. Tujuan dapat berupa byte atau word.
Syntax : INC tujuan
Operasi : Tujuan + 1 Tujuan
Contoh : - INC AX
Isi AX ditambah 1
- INC WORD [BX]
Isi alamat memori DS:BX ditambah 1
4. DAA
Berfungsi untuk menyesuaikan penjumlahan BCD agar hasilnya tetap BCD.
Syntax : DAA
Contoh : MOV AX, 09H
AX = 09 (BCD)
ADD AX, 1
Setelah instruksi ADD nilai AX = 0AH
DAA
Setelah instruksi DAA nilai AX =10H (BCD)

III.

Pengurangan
1. SUB
Berfungsi untuk melakukan pengurangan Byte atau Word dengan metode 2s
complement. Dalam setiap perintah harus terdapat minimal satu register dan
tujuannya harus berupa alamat atau register. Selain itu lebar datanya harus sama. Bila
terdapat borrow, register CF akan bernilai 1, tapi apabila dilihat dari proses
sebenarnya yang dilakukan dengan menjumlahkan bilangan hasil 2s Complement,
maka register CF akan bernilai 1 apabila tidak terjadi carry dalam proses penjumlahan
tersebut.
Misalnya pengurangan 23H dengan 22H adalah sebagai berikut:
22H
0010 0010
2s Complement dari 23
1101 1101
------------- +
Hasil
1111 1111
Tidak ada carry, jadi register
CF bernilai 1
2s Complement dari 1111 1111 = 0000 0001 atau 1H.
Syntax : SUB tujuan, sumber
Operasi : Tujuan Sumber Tujuan
Borrow CF
Contoh : - SUB AL, BL
Benar
- SUB AL, AX
Salah
- SUB AX, [22]
Benar
- SUB [22], BX
Benar
- SUB 22, AX
Salah
2. SBB
Berfungsi untuk melakukan pengurangan Byte atau Word namun dengan
memperhitungkan Carry Flag (CF).
Misalnya pengurangan 23H dengan 22H dan CF bernilai 1 adalah sebagai berikut:
23H
0010 0110
2s Complement dari 22
1101 1110
2s Complement dari CF
0000 0000
------------- +
Hasil
1 0000 0000
Register CF bernilai 0
Syntax
Operasi
Contoh

: SUB tujuan, sumber


: Sumber Tujuan CF Tujuan
Borrow CF
: MOV AL, 23
SUB AL, 22
Bila CF bernilai 0 setelah perintah
dieksekusi dan AL akan bernilai 0

3. DEC
Berfungsi untuk mengurangkan satu ke tujuan. Tujuan dapat berupa byte atau word.
Syntax : DEC tujuan
Operasi : Tujuan 1 Tujuan
Contoh : - DEC AX
Isi register AX dikurangi 1
- DEC WORD [BX]
Isi alamat memori DS:BX dikurangi 1
4. DAS

Berfungsi untuk menyesuaikan pengurangan BCD agar hasilnya tetap BCD.


IV.

Perkalian
1. MUL
Berfungsi untuk mengalikan antara operand dengan isi akumulator, bila operand
tersebut 8 bit, maka akan dikalikan dengan AL dan hasil disimpan di AX, namun bila
operand tersebut 16 bit, maka akan dilakukan perkalian antara operand dengan AX
dan hasilnya akan disimpan di DX (High Word atau separuh MSB) dan di AX (Low
Word atau separuh LSB). Flag register yang dipengaruhi adalah Overflow (OF) dan
Carry (CF) apabila OF dan CF bernilai 1 maka terjadi overflow dalam proses
perkalian.
Syntax : MUL operand
Operasi : - 8 bit : AL * operand AX
- 16 bit : AX * operand DX:AX
Contoh

: MOV AL, 12
MOV CL, 5
MUL CL

Register CL diisi dengan 12


Register CL diisi dengan 5
Hasil perkalian 60 desimal, AX = 003C
OF = CF = 0 karena AH = 0

2. IMUL
Fungsinya sama dengan MUL, hanya saja kedua bilangan yang dikalikan dianggap
sebagai bilangan bulat bertanda (signed integer). Bila OF dan CF bernilai 1 dalam
perkalian 8 bit, AH tidak berisi sign-extension bit atau AH <> 00, dalam perkalian 6
bit, DX tidak berisi sign-extension bit atau DX <> 0000.
Syntax : IMUL operand
Operasi : - 8 bit : AL * operand AX
- 16 bit : AX * operand DX:AX
Contoh : MOV AX, 0FF7H
Register AX diisi dengan FF7H
MOV WORD PTR[BX}, 5A10H Isi memori DS:BX bernilai 5A10H
IMUL WORD [BX]
DX=059D, AX = D570
OF = CF = 1
V.

Pembagian
1. DIV
Berfungsi untuk membagi sebuah operand dengan isi akumulator, bila operand itu 8
bit, maka AX dibagi operand dan hasil modulusnya disimpan di AL, sisanya disimpan
di AH. Bila operand 16 bit, maka DX:AX dibagi operand, hasil modulusnya disimpan
di AX, sisanya di DX. Jika hasil pembagian (modulus) lebih besar dari kapasitas
register penyimpan (AL > FFH dan AX > FFFFH) maka terjadi interupt 0 (Division
by Zero) dan program akan berhenti dengan tidak normal. Dalam operasi ini tidak ada
flag register yang terpengaruh.
Syntax : DIV operand
Operasi : - 8 bit : AX / operand AL = Modulus, AH = Sisa
- 16 bit : DX:AX / operand AX = Modulus, DX = Sisa
Contoh : MOV AX, 0F05H
MOV DX, 068AH
MOV CX, 8E9H
DIV CX
AX(Modulus)=BBE1 dan DX(sisa)=073C

2. IDIV
Fungsinya sama dengan DIV, hanya saja kedua bilangan yang dikalikan dianggap
sebagai bilangan bulat bertanda (signed integer).Division by Zero akan terjadi apabila
pada operasi 8 bit pembilang dan penyebut bertanda sama dan modulus > 7FH (>127)
atau pembilang dan penyebut bertanda lain dan modulus < 81H (<-127), sedangkan
pada operasi 16 bit pembilang dan penyebut bertanda sama dan modulus > 7FFFH
(>32767), atau pembilang dan penyebut bertanda lain dan modulus < 8001H
(<-32767).
Syntax : IDIV operand
Operasi : - 8 bit : AX / operand AL = Modulus, AH = Sisa
- 16 bit : DX:AX / operand AX = Modulus, DX = Sisa
Contoh : MOV AX, FFF9H
AX = -7
MOV CL, 0FDH
CL = -3
IDIV CL
AL = 2 dan AH -1
VI.

Instruksi Lain Pembantu Operasi Aritmatika


1. NEG
Berfungsi membuat isi operand menjadi 2s Complement.
Syntax : NEG sumber
Contoh : MOV BX, 1000
Isi register BX dengan 1000
NEG BYTE [BX]
2s Complement isi memori DS:BX
2. CBW
Berfungsi mengubah Byte ( 8 bit) pada AL menjadi Word (16 bit) dengan
menambahkan sign extension pada register AH.
Syntax : NEG sumber
Operasi : jika AL positif (<80H), maka AH = 00H
Jika Al negatif (>=80H) maka AH = FFH
Contoh : MOV AL, 80H
AL = 80H (-127)
MOV BL, 02H
BL = 02H
CBW
AX sekarang 0FF80 H
IDIV BL
AH = 0H, AL = C0H (-64)
3. CMP
Berfungsi untuk membandingkan 2 operand. Mirip dengan SUB tetapi hasil
pengurangan tidak disimpan pada operand tujuan, tetapi mempengaruhi register flag.
Syntax : CMP tujuan, sumber
Operasi : Tujuan - sumber
Contoh : MOV CH, 5
CH = 5
MOV DL, 5
DL = 5
CMP
Bandingkan CH dengan DL
setelah operasi ini Zero Flag (ZF) = 1
maka kedua bilangan dinyatakan sama

Anda mungkin juga menyukai