Untuk penjumlahan ada dua jenis yaitu add dan addc. Add digunakan untuk
menjumlahkan isi register A dengan isi salah satu register serbaguna (R0…R7),
register A dengan data langsung, dan register A dengan isi alamat yang
ditunjukkan oleh register atau alamat yang ditunjukkan oleh angkalangsung.
Addc sama dengan add tetapi addc akan mengikutkan carry bit dalam setiap
operasi penjumlahan.
Perkalian hanya dilakukan untuk isi dua buah register yang berada pada register A
dan register B, dan hasilnya ditempatkan pada register A. Pembagian juga
dilakukan hanya untuk isi dua buah register yaitu register A dibagi isi register B,
hasilnya ditempatkan di register A dan sisa pembagian pada register B.
ADD A,Rn. Instruksi ini adalah instruksi penjumlahan isi register A dengan isi
salah satu register R0…R7.
1
Contoh ADD A,R3 ; menjumlahkan isi register A dengan isi register R3 dan
hasilnya ditempatkan pada register A.
Simbol operasinya: A A+R3
ADD A,direct. Instruksi ini digunakan untuk menjumlahkan isi register A dengan
data pada alamat memori tertentu secara langsung.
Contoh: ADD A,35h; menjumlahkan isi register A dengan isi memori pada alamat
35h.
Simbol operasinya: A A + (alamat 35h)
ADD A,@Ri. Instruksi ini digunakan untuk menjumlahkan isi register A dengan
isi alamat yang ditunjukkan oleh register serbaguna R0 atau R1.
Contoh: ADD A,@R1; menjumlahkan isi register A dengan isi memori yang
alamatnya ditunjukkan oleh register R1.
Simbol operasinya: A A+ (@R1)
ADD A,#data. Instruksi ini digunakan untuk menjumlahkan isi register A dengan
data langsung.
Contoh: ADD A,#50h; menjumlahkan isi register A dengan angka 50h.
Simbol operasi: A A + 50h
ADDC A,Rn. Contoh: ADDC A,R1; menjumlahkan isi register A dengan isi R1
ditambah carry bit.
Simbol operasi: A (A + R1 + CY)
ADDC A,direct. Contoh: ADDC A,40h; menjumlahkan isi register A dengan isi
alamat 40h ditambah carry bit.
Simbol operasi: A (A+ alamat 40h + CY)
ADDC A,@Ri. Contoh: ADDC A,@R0; menjumlahkan isi register A dengan isi
alamat yang ditunjukkan oleh register R0 ditambah carry bit.
Simbol operasi: A (A + @R0 + CY)
V. Langkah Kerja
1. Jalankan program MIDE51.exe
2. Buka file baru: dari Menu pilih File dan klik New
3. Ketik program di bawah ini :
; program operasi aritmatika
; programmer : ketik nama sendiri
direct equ 30h
data equ 0dh
org 00h
add a,r7 ; add register to accumulator
add a,direct ; add direct byte to accumulator
add a,@r1 ; add indirect ram to accumulator
add a,#data ; add immediate data to accumulator
addc a,r7 ; add register to acc. With carry
addc a,direct ; add direct byte to acc. With carry
addc a,@r1 ; add indirect ram to acc. With carry
addc a,#data ; add immediate data to acc. / carry
subb a,r7 ; subtract reg. From acc. With borrow
subb a,direct ; sub.Direct byte From acc. / borrow
subb a,@r1 ; sub.Indirect ram From acc. / borrow
subb a,#data ; sub.Indirect Data From acc. / borrow
inc a ; increment accumulator
inc r7 ; increment register
inc direct ; increment direct byte
inc @r1 ; increment Indirect ram
dec a ; decrement accumulator
dec r7 ; decrement register
dec direct ; decrement direct byte
dec @r1 ; decrement indirect ram
inc dptr ; increment data pointer
mul ab ; multiply a and b
div ab ; divide a by b
da a ; decimal adjust accumulator
end
4. Simpan dengan nama perc3.asm
5. Lakukan compile file sampai program dinyatakan benar dengan tampilan
seperti terlihat pada gambar 4.3 di bawah ini.
13. Catat juga hasil percobaan untuk data pada alamat RAM 0030h.
REGISTER
Tombol Alamat
DPTR
F7 ACC B CY R1 R7 (0030h)
0x 20h 06h 0H 20h 20h 0040h 07h
27
1. Berapa kalikah anda menekan tombol Trace into (F7) sampai program
selesai?
2. Apakah perbedaan instruksi ADD A,R1 dan ADD A,@R1?
3. Apakah perbedaan instruksi INC R1 dan INC @R1?
28