Operasi Aritmatika
3.1. Pendahuluan
Dalam mikroprosesor Z80, pada dasarnya hanya terdapat 5 macam
operasi aritmatika yang dapat dilakukan. Operasi aritmatika tersebut adalah
penjumlahan, pengurangan, tambah satu, kurang satu, dan membandingkan.
Operasi penjumlahan terdapat dua macam yaitu ADD dan ADC
(ADD with carry). Operasi pengurangan juga terdapat dua macam yaitu SUB
dan SBC (SUB with carry). Operasi tambah satu yaitu INC (increment) dan
operasi kurang satu yaitu DEC (decrement). Selain itu juga terdapat operasi
membandingkan yaitu CP (compare).
Dengan operasi aritmatika yang disebutkan di atas, bukan berarti
operasi aritmatika lainnya seperti perkalian dan pembagian tidak dapat
diselesaikan. Dengan menggabungkan beberapa instruksi yang tersedia, dapat
digunakan untuk menyelesaikan permasalahan operasi perkalian dan
pembagian.
Keterangan:
S : sign
Z : zero
H : half carry
P/V : parity/overflow (=P/O)
N : non carry
Memonik dan arti simbolnya pada operasi 16 bit adalah sebagai berikut:
ADD HL, ss : HL HL + ss
ADD IX, pp : IX IX + pp
ADD IY, rr : IY IY + rr
ADC HL, ss : HL HL + ss + cy
Keterangan:
ss : register BC, DE, SP, HL
pp : register BC, DE, SP, IX
rr : register BC, DE, SP, IY
cy : carry
Contoh 3.2 Program penjumlahan dua data 16 bit yang tersimpan pada alamat
memori dengan melibatkan instruksi ADD dan ADC:
Data pertama tersimpan pada alamat memori 1900H dan 1901H.
Data kedua tersimpan pada alamat memori 1902H dan 1903H.
Data hasil penjumlahan disimpan pada alamat memori 1904H, 1905H, dan
1906H.
1. Jalankan Z80 Simulator IDE.
2. Klik pada menu Tools – Assembler atau tekan kombinasi tombol Ctrl+A
pada keyboard dan ketik program berikut:
LD IX, 1900H
LD A, (IX+00H)
ADD A, (IX+02H)
LD (IX+04H), A
LD A, (IX+01H)
ADC A, (IX+03H)
LD (IX+05H), A
LD A, 00H
ADC A, A
LD (IX+06H), A
HALT
Contoh 3.3 Program perkalian dua data 8 bit yang tersimpan pada alamat
memori dengan melibatkan instruksi ADD:
Data pertama tersimpan pada alamat memori 1900H.
Data kedua tersimpan pada alamat memori 1902H.
Data hasil perkalian disimpan pada alamat memori 1904H.
Pada mikroprosesor Z80, tidak terdapat instruksi perkalian, dengan
menggunakan instruksi penjumlahan yang diulang-ulang sebanyak jumlah
pengalinya, maka dapat digunakan untuk membuat program perkalian.
11. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui
apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
12. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.
Memonik dan arti simbolnya pada operasi 16 bit adalah sebagai berikut:
SBC HL, ss : HL HL - ss - cy
Keterangan:
ss : register BC, DE, SP, HL
cy : carry
Contoh 3.5 Program pengurangan dua data 16 bit yang tersimpan pada
register 16 bit dengan melibatkan instruksi SUB dan SBC:
Data pertama tersimpan pada alamat memori 1900H dan 1901H.
Data kedua tersimpan pada alamat memori 1902H dan 1903H.
Data hasil pengurangan disimpan pada alamat memori 1904H, 1905H, dan
1906H.
1. Jalankan Z80 Simulator IDE.
2. Klik pada menu Tools – Assembler atau tekan kombinasi tombol Ctrl+A
pada keyboard dan ketik program berikut:
LD IX, 1900H
LD A, (IX+00H)
SUB (IX+02H)
LD (IX+04H), A
LD A, (IX+01H)
SBC A, (IX+03H)
LD (IX+05H), A
LD A, 00H
SBC A, 00H
LD (IX+06H), A
HALT
Contoh 3.6 Program pembagian dua data 8 bit yang tersimpan pada alamat
memori dengan melibatkan instruksi SUB:
Data pertama tersimpan pada alamat memori 1900H.
Data kedua tersimpan pada alamat memori 1902H.
Data hasil pembagian disimpan pada alamat memori 1904H.
Pada mikroprosesor Z80, tidak terdapat instruksi pembagian, dengan
menggunakan instruksi pengurangan yang diulang-ulang sampai didapatkan
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
INC s : ss+1
Keterangan:
s : register A, B, C, D, E, H, L, (HL), (IX+d), (IY+d)
Memonik dan arti simbolnya pada operasi 16 bit adalah sebagai berikut:
INC ss : ss ss + 1
Keterangan:
ss : register BC, DE, SP, HL, IX, IY
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
DEC s : ss-1
Keterangan:
s : register A, B, C, D, E, H, L, (HL), (IX+d), (IY+d)
Memonik dan arti simbolnya pada operasi 16 bit adalah sebagai berikut:
DEC ss : ss ss - 1
Keterangan:
ss : register BC, DE, SP, HL, IX, IY
Contoh 3.9 Program menentukan nilai terbesar dari dua buah data:
Data pertama tersimpan pada register A.
Data kedua tersimpan pada register B.
Register C digunakan untuk menyimpan hasil nilai terbesar.
1. Jalankan Z80 Simulator IDE.
2. Klik pada menu Tools – Assembler atau tekan kombinasi tombol Ctrl+A
pada keyboard dan ketik program berikut:
LD A, 03H
LD B, 02H
CP B
JP NC, LOMPAT
LD C, B
HALT
.END
LOMPAT LD C, A
HALT
.END
8. Misalkan isi register A ditukar dengan isi register B, maka register A akan
terisi data 02H dan register B akan terisi data 03H. Register C akan tetap
berisi data nilai terbesar, yaitu 03H. Perhatikan file log.txt berikut: