Anda di halaman 1dari 30

BAB 3

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.

3.2. Register Flag di Operasi Aritmatika


Register flag merupakan register pembantu terhadap operasi
aritmatika dan operasi logika. Bantuk bantuannya berupa manyimpan tanda
keadaan bilamana terjadi carry, non carry, borrow, zero, parity/overflow.
Letak definisi keadaan flag pada register F dapat dilukiskan sebagai berikut:
bit7 bit6 bit5 bit4 bit3 bit2 bit1 bit0
S Z - H - P/V N C

Keterangan:
S : sign
Z : zero
H : half carry
P/V : parity/overflow (=P/O)
N : non carry

BAB 3. Operasi Aritmatika 48


C : carry

Dengan adanya operasi aritmatika atau logika, maka kejadian dari


register F dapat dibuat tabel sebagai berikut:
Bit Nama Flag Keterangan
0 C 0 : operasi aritmatika/logika tidak terjadi carry
1 : operasi aritmatika/logika terjadi carry
1 N 0 : operasi yang telah terjadi bukan substract
1 : operasi yang telah terjadi adalah substract
2 P/V 0 : parity even/genap tidak terjadi overflow
1 : parity old/ganjil terjadi overflow
3 - TIDAK DIGUNAKAN
4 H 0 : add/substract non carry di bit 4 register A
1 : add/substract ada carry di bit 4 register A
5 - TIDAK DIGUNAKAN
6 Z 0 : hasil operasi aritmatika/logika tidak nol
1 : hasil operasi aritmatika/logika sama dengan nol
7 S 0 : hasil operasi aritmatika/logika adalah positif
1 : hasil operasi aritmatika/logika adalah negatif

Contoh berikut terdapat operasi aritmatika beserta penjelasan untuk masing-


masing bit pada register flag:
1. Jalankan Z80 Simulator IDE.
2. Klik pada menu Tools – Assembler atau tekan kombinasi tombol Ctrl+A
pada keyboard dan ketik program berikut:
LD B, 1FH
LD C, B
LD A, 01H
ADD A, B
INC B
HALT
.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.

BAB 3. Operasi Aritmatika 49


4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.1 Hasil Assemble kode program


5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

Gambar 3.2 Nilai-nilai register pada log.txt


7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:

Mnemonik Simbol Operasi Keterangan


LD B, 1FH B ← 1FH isi register B = 1FH
LD C, B C ← B isi register C = 1FH
LD A, 01H A ← 01H isi register A = 01H
ADD A, B A ← A+B isi register A ditambah

BAB 3. Operasi Aritmatika 50


dengan isi register B
dan hasilnya disimpan
kembali ke register A
= 20H
INC B B←B+1 isi alamat B = 20H
HALT program berhenti
.END

8. Dari program di atas jika dilihat isi registernya masing-masing akan


terlihat seperti pada keterangan program. Selain itu dapat dilihat
pengaruhnya terhadap isi register flagnya setelah terjadi operasi
aritmatika yaitu dengan melihat nilai-nilai yang ada pada masing-masing
bit dari register F (flag). Setelah terjadi operasi aritmatika pada program
di atas maka register flag yang terpengaruh adalah sebagai berikut:
S Z - H - P/V N C
Operasi ADD A, B 0 0 - 1 - 0 0 0
Keterangan:
Setelah terjadi operasi logika ADD, maka register F yang terpengaruh
adalah S, Z, H, V, dan C dengan penjelasan sebagai berikut:
 S = 0 artinya tidak terjadi perubahan tanda (hasilnya adalah
positif)
 Z = 0 artinya hasilnya tidak sama dengan nol
 H = 1 artinya terjadi half carry (terjadi carry di bit 4 pada reg. A)
 V = 0 artinya pada operasi tersebut tidak terjadi overflow
 C = 0 artinya tidak terjadi carry

BAB 3. Operasi Aritmatika 51


3.3. Instruksi Penjumlahan (ADD dan ADC)
Instruksi penjumlahan dalam mikroprosesor Z80 dapat dilakukan
pada operasi penjumlahan 8 bit dan 16 bit. Pada operasi 8 bit, register A
(accumulator) digunakan sebagai register untuk menampung data yang akan
dijumlahkan dan data hasil penjumlahan. Sedangkan pada operasi 16 bit,
register HL, IX, dan IY dapat digunakan sebagai akumulator.
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
ADD A, s : A  A + s
ADC A, s : A  A + s + cy
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)
n : data 8 bit
cy : 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.1 Program penjumlahan 8 bit dengan menggunakan instruksi ADD:


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, 00H
ADD A, 02H
ADD A, A
LD B, 05H
LD C, 06H

BAB 3. Operasi Aritmatika 52


LD A, B
ADD A, C
HALT
.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.3 Hasil Assemble kode program


5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Cek hasil tampilan jendela Simulator Z80, selanjutnya dapat dilihat nilai-
nilai register yang terlibat dalam program, apakah sudah sesuai dengan
yang diisikan dan cek pula pada tampilan file log.txt.

BAB 3. Operasi Aritmatika 53


Gambar 3.4 Nilai-nilai register pada log.txt
7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD A, 00H A ← 00H isi register A = 00H
ADD A, 02H A ← A + 02H isi register A = 02H
ADD A, A A ← A+A isi register A = 04H
LD B, 05H B ← 05H isi register B = 05H
LD C, 06H C ← 06H isi register C = 06H
LD A, B A ← B isi register A = 05H
ADD A, C A ← A+C isi register A = 0BH
HALT program berhenti
.END

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

BAB 3. Operasi Aritmatika 54


.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.5 Hasil Assemble kode program


5. Pada jendela Z80 Simulator IDE, klik pada menu Tools – Memory
Editor atau tekan kombinasi tombol Ctrl+M pada keyboard. Masukkan
data-data sebagai berikut pada alamat yang ditentukan:
1900H = 8FH
1901H = 9FH
1902H = F5H
1903H = AFH

BAB 3. Operasi Aritmatika 55


Gambar 3.6 Isi nilai pada Memory Editor
6. Jalankan simulator dengan mengklik menu Simulation – Start.
7. Pada jendela Memory Editor, pada alamat 1904H akan terisi data 84H,
alamat 1905H akan terisi data 4FH dan alamat 1906H akan terisi data 01H.

Gambar 3.7 Nilai-nilai pada Memory Editor


8. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

Gambar 3.8 Nilai-nilai register pada log.txt

BAB 3. Operasi Aritmatika 56


9. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD IX, 1900H IX ← 1900H isi register IX = 1900H
LD A, (IX+00H) A ← (IX+00H) isi register A = 8FH
ADD A, (IX+02H) A ← A + (IX+02H) isi register A = 84H
carry = 01H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = 84H
LD A, (IX+01H) A ← (IX+01H) isi register A = 9FH
ADC A, (IX+03H) A ← A + (IX+03H) + cy isi register A = 4FH
carry = 01H
LD (IX+05H), A (IX+05H) ← A isi alamat 1905H = 4FH
LD A, 00H A ← 00H isi register A = 00H
ADC A, A A ← A + A + cy isi register A = 01H
carry = 00H
LD (IX+06H), A (IX+06H) ← A isi alamat 1906H = 01H
HALT program berhenti
.END

10. Hasil penjumlahan dapat dilihat pada ilustrasi berikut:


9FH (1901H) 8FH (1900H)
AFH (1903H) F5H (1902H)
01H (1906H) 4FH (1905H) 84H (1904H) +

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.

BAB 3. Operasi Aritmatika 57


Misal, data pertama bernilai 02H dan data kedua bernilai 04H, maka
pemecahan masalah tersebut dapat diilustrasikan sebagai berikut:
hasil_perkalian = 02H x 04H
= 02H + 02H + 02H x 02H
4x

9. Jalankan Z80 Simulator IDE.


10. Klik pada menu Tools – Assembler atau tekan kombinasi tombol Ctrl+A
pada keyboard dan ketik program berikut:
LD IX, 1900H
LD C, (IX+00H)
LD D, (IX+02H)
LD A, 00H
LD B, D
LOOP ADD A, C
DJNZ LOOP
LD (IX+04H), A
HALT
.END

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.

BAB 3. Operasi Aritmatika 58


Gambar 3.9 Hasil Assemble kode program
13. Pada jendela Z80 Simulator IDE, klik pada menu Tools – Memory
Editor atau tekan kombinasi tombol Ctrl+M pada keyboard. Masukkan
data-data sebagai berikut pada alamat yang ditentukan:
1900H = 02H
1902H = 04H

Gambar 3.10 Isi nilai pada Memory Editor


14. Jalankan simulator dengan mengklik menu Simulation – Start.

BAB 3. Operasi Aritmatika 59


15. Pada jendela Memory Editor, pada alamat 1904H akan terisi data hasil
perkalian, yaitu 08H.

Gambar 3.11 Nilai-nilai pada Memory Editor


16. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

Gambar 3.12 Nilai-nilai register pada log.txt


17. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD IX, 1900H IX ← 1900H isi register IX = 1900H
LD C, (IX+00H) C ← (IX+00H) isi register C = 02H
LD D, (IX+02H) D ← (IX+02H) isi register D = 04H
LD A, 00H A ← 00H isi register A = 00H
LD B, D B←D isi register B = 04H
ADD A, C A←A+C isi register A = 02H
DJNZ B←B-1 isi register B = 03H
ADD A, C A←A+C isi register A = 04H
DJNZ B←B-1 isi register B = 02H
ADD A, C A←A+C isi register A = 06H
DJNZ B←B-1 isi register B = 01H
ADD A, C A←A+C isi register A = 08H

BAB 3. Operasi Aritmatika 60


DJNZ B←B-1 isi register B = 00H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = 08H
HALT
.END

3.4. Instruksi Pengurangan (SUB dan SBC)


Instruksi pengurangan dalam mikroprosesor Z80 dapat dilakukan
pada operasi pengurangan 8 bit dan 16 bit. Pada operasi 8 bit, register A
(accumulator) digunakan sebagai register untuk menampung data yang akan
dikurangkan dan data hasil pengurangan. Sedangkan pada operasi 16 bit,
register HL digunakan sebagai akumulator.
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
SUB A, s : AA-s
SBC A, s : A  A - s - cy
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)
n : data 8 bit
cy : carry

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.4 Program pengurangan 8 bit dengan menggunakan instruksi SUB:


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, 08H
SUB 02H
SUB A
LD B, 06H
LD C, 05H
LD A, B
SUB C
HALT

BAB 3. Operasi Aritmatika 61


.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.13 Hasil Assemble kode program


5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Cek hasil tampilan jendela Simulator Z80, selanjutnya dapat dilihat nilai-
nilai register yang terlibat dalam program, apakah sudah sesuai dengan
yang diisikan dan cek pula pada tampilan file log.txt.

BAB 3. Operasi Aritmatika 62


Gambar 3.14 Nilai-nilai register pada log.txt
7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD A, 08H A ← 08H isi register A = 08H
SUB 02H A ← A - 02H isi register A = 06H
SUB A A ← A-A isi register A = 00H
LD B, 06H B ← 06H isi register B = 06H
LD C, 05H C ← 05H isi register C = 05H
LD A, B A ← B isi register A = 06H
SUB C A ← A-C isi register A = 01H
HALT program berhenti
.END

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

BAB 3. Operasi Aritmatika 63


.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.15 Hasil Assemble kode program


5. Pada jendela Z80 Simulator IDE, klik pada menu Tools – Memory
Editor atau tekan kombinasi tombol Ctrl+M pada keyboard. Masukkan
data-data sebagai berikut pada alamat yang ditentukan:
1900H = 8FH
1901H = F5H
1902H = 9FH
1903H = AFH

BAB 3. Operasi Aritmatika 64


Gambar 3.16 Isi nilai pada Memory Editor
6. Jalankan simulator dengan mengklik menu Simulation – Start.
7. Pada jendela Memory Editor, pada alamat 1904H akan terisi data F0H,
alamat 1905H akan terisi data 45H dan alamat 1906H akan terisi data 00H.

Gambar 3.17 Nilai-nilai pada Memory Editor


8. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

BAB 3. Operasi Aritmatika 65


Gambar 3.18 Nilai-nilai register pada log.txt
9. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD IX, 1900H IX ← 1900H isi register IX = 1900H
LD A, (IX+00H) A ← (IX+00H) isi register A = 8FH
SUB (IX+02H) A ← A - (IX+02H) isi register A = F0H
carry = 01H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = F0H
LD A, (IX+01H) A ← (IX+01H) isi register A = F5H
SBC A, (IX+03H) A ← A - (IX+03H) - cy isi register A = 45H
carry = 00H
LD (IX+05H), A (IX+05H) ← A isi alamat 1905H = 45H
LD A, 00H A ← 00H isi register A = 00H
SBC A, 00H A ← A - 00H - cy isi register A = 00H
carry = 00H
LD (IX+06H), A (IX+06H) ← A isi alamat 1906H = 00H
HALT program berhenti
.END

10. Hasil pengurangan dapat dilihat pada ilustrasi berikut:


F5H (1902H) 8FH (1900H)
AFH (1903H) 9FH (1901H)
00H (1906H) 45H (1905H) F0H (1904H) –

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

BAB 3. Operasi Aritmatika 66


hasil pengurangan adalah 0, maka banyaknya perulangan merupakan hasil
dari pembagian.
Misal, data pertama bernilai 08H dan data kedua bernilai 02H, maka
pemecahan masalah tersebut dapat diilustrasikan sebagai berikut:
hasil_pembagian = 08H / 02H
08H - 02H = 06H
06H - 02H = 04H
4x perulangan merupakan hasil pembagian
04H - 02H = 02H
02H - 02H = 00H

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 C, (IX+00H)
LD D, (IX+02H)
LD A, C
LD B, 00H
LOOP INC B
SUB D
JP NZ, LOOP
LD (IX+04H), B
HALT
.END

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

BAB 3. Operasi Aritmatika 67


Gambar 3.19 Hasil Assemble kode program
5. Pada jendela Z80 Simulator IDE, klik pada menu Tools – Memory
Editor atau tekan kombinasi tombol Ctrl+M pada keyboard. Masukkan
data-data sebagai berikut pada alamat yang ditentukan:
1900H = 08H
1902H = 02H

Gambar 3.20 Isi nilai pada Memory Editor

BAB 3. Operasi Aritmatika 68


6. Jalankan simulator dengan mengklik menu Simulation – Start.
7. Pada jendela Memory Editor, pada alamat 1904H akan terisi data hasil
pembagian, yaitu 04H.

Gambar 3.21 Nilai-nilai pada Memory Editor


8. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

Gambar 3.22 Nilai-nilai register pada log.txt


9. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD IX, 1900H IX ← 1900H isi register IX = 1900H
LD C, (IX+00H) C ← (IX+00H) isi register C = 08H
LD D, (IX+02H) D ← (IX+02H) isi register D = 02H
LD A, C A←C isi register A = 08H
LD B, 00H B ← 00H isi register B = 00H
INC B B←B+1 isi register B = 01H
SUB D A←A-D isi register A = 06H
JP NZ isi flag Z = 00H

BAB 3. Operasi Aritmatika 69


INC B B←B+1 isi register B = 02H
SUB D A←A-D isi register A = 04H
JP NZ isi flag Z = 00H
INC B B←B+1 isi register B = 03H
SUB D A←A-D isi register A = 02H
JP NZ isi flag Z = 00H
INC B B←B+1 isi register B = 04H
SUB D A←A-D isi register A = 00H
JP NZ isi flag Z = 01H
LD (IX+04H), B (IX+04H) ← B isi alamat 1904H = 04H
HALT program berhenti
.END

3.5. Instruksi Tambah Satu (INC)


Instruksi INC digunakan untuk menambah isi suatu register baik
register 8 bit maupun register 16 bit dengan nilai satu. Selain itu juga bisa
diterapkan untuk menambah satu pada alamat memori. Instruksi ini biasa
digunakan untuk counter naik.

Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
INC s : ss+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

Contoh 3.7 Program counter naik dengan menggunakan instruksi INC:


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, 00H
LD B, 05H
LOOP INC A
DJNZ LOOP
HALT
.END

BAB 3. Operasi Aritmatika 70


3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui
apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.23 Hasil Assemble kode program


5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Cek hasil tampilan jendela Simulator Z80, isi register A akan ditambah 1
terus-menerus sampai 5 kali sehingga register A berisi data 05H. Cek pula
pada tampilan file log.txt.

Gambar 3.24 Nilai-nilai register pada log.txt


7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan

BAB 3. Operasi Aritmatika 71


LD A, 00H A ← 00H isi register A = 00H
LD B, 05H B ← 05H isi register B = 05H
INC A A ← A + 01H isi register A = 01H
DJNZ B ← B-1 isi register B = 04H
INC A A ← A + 01H isi register A = 02H
DJNZ B ← B-1 isi register B = 03H
INC A A ← A + 01H isi register A = 03H
DJNZ B ← B-1 isi register B = 02H
INC A A ← A + 01H isi register A = 04H
DJNZ B ← B-1 isi register B = 01H
INC A A ← A + 01H isi register A = 05H
DJNZ B ← B-1 isi register B = 00H
HALT program berhenti
.END

3.6. Instruksi Kurang Satu (DEC)


Instruksi DEC digunakan untuk mengurangi isi suatu register baik
register 8 bit maupun register 16 bit dengan nilai satu. Selain itu juga bisa
diterapkan untuk mengurangi satu pada alamat memori. Instruksi ini biasa
digunakan untuk counter turun.

Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
DEC s : ss-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.8 Program counter turun dengan menggunakan instruksi DEC:


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, 05H
LOOP DEC A
JP NZ, LOOP
HALT
.END

BAB 3. Operasi Aritmatika 72


3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui
apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

Gambar 3.25 Hasil Assemble kode program


5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Cek hasil tampilan jendela Simulator Z80, isi register A akan dikurangi 1
terus-menerus sampai nilai pada register A menjadi 00H. Cek pula pada
tampilan file log.txt.

Gambar 3.26 Nilai-nilai register pada log.txt


7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD A, 05H A ← 05H isi register A = 05H

BAB 3. Operasi Aritmatika 73


DEC A A ← A - 01H isi register A = 04H
JP NZ isi flag Z = 00H
DEC A A ← A - 01H isi register A = 03H
JP NZ isi flag Z = 00H
DEC A A ← A - 01H isi register A = 02H
JP NZ isi flag Z = 00H
DEC A A ← A - 01H isi register A = 01H
JP NZ isi flag Z = 00H
DEC A A ← A - 01H isi register A = 00H
JP NZ isi flag Z = 01H
HALT program berhenti
.END

3.7. Instruksi Perbandingan (CP)


Instruksi CP digunakan untuk membandingkan isi register A dengan
data 8 bit atau isi register 8 bit atau data pada alamat memori. Instruksi CP
sering kali digunakan untuk mengetahui apakah sebuah data sama dengan
atau lebih besar atau lebih kecil dengan nilai tertentu.
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
CP s : A-s
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)

Kasus 1. Data pertama sama dengan data kedua:


Mnemonik Simbol Operasi Keterangan
LD A, 05H A ← 05H isi register A = 05H
LD B, 05H B ← 05H isi register B = 05H
CP B A-B isi flag Z = 01H (true)
isi flag C = 00H (false)
Flag Zero bernilai 01H menunjukkan bahwa data pertama sama dengan data
kedua.

Kasus 2. Data pertama lebih besar dari data kedua:


Mnemonik Simbol Operasi Keterangan
LD A, 07H A ← 07H isi register A = 07H
LD B, 05H B ← 05H isi register B = 05H
CP B A-B isi flag Z = 00H (false)
isi flag C = 00H (false)
Flag Zero bernilai 00H menunjukkan bahwa data pertama tidak sama dengan
data kedua.

BAB 3. Operasi Aritmatika 74


Flag Carry bernilai 00H menunjukkan bahwa data pertama lebih besar dari
data kedua.

Kasus 3. Data pertama lebih kecil dari data kedua:


Mnemonik Simbol Operasi Keterangan
LD A, 07H A ← 07H isi register A = 07H
LD B, 09H B ← 09H isi register B = 09H
CP B A-B isi flag Z = 00H (false)
isi flag C = 01H (true)
Flag Zero bernilai 00H menunjukkan bahwa data pertama tidak sama dengan
data kedua.
Flag Carry bernilai 01H menunjukkan bahwa data pertama lebih kecil dari data
kedua.

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

3. Pada jendela Assembler, klik menu Tools – Assemble untuk mengetahui


apakah ada kesalahan atau tidak. Simpan file ASM ke folder anda
masing-masing.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

BAB 3. Operasi Aritmatika 75


Gambar 3.27 Hasil Assemble kode program
5. Jalankan simulator dengan mengklik menu Simulation – Start.
6. Cek hasil tampilan jendela Simulator Z80, register C akan berisi data nilai
terbesar, yaitu 03H. Cek pula pada tampilan file log.txt.

Gambar 3.28 Nilai-nilai register pada log.txt


7. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD A, 03H A ← 03H isi register A = 03H
LD B, 02H A ← 02H isi register B = 02H
CP B A-B isi flag Z = 00H (false)
isi flag C = 00H (false)
JP NC isi flag C = 00H
LD C, A C←A isi register C = 03H

BAB 3. Operasi Aritmatika 76


HALT program berhenti
.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:

Gambar 3.29 Nilai-nilai register pada log.txt


9. Hasil nilai-nilai register yang terlibat dapat dilihat pada tabel berikut:
Mnemonik Simbol Operasi Keterangan
LD A, 02H A ← 02H isi register A = 02H
LD B, 03H A ← 03H isi register B = 03H
CP B A-B isi flag Z = 00H (false)
isi flag C = 01H (true)
JP NC isi flag C = 01H
LD C, B C←B isi register C = 03H
HALT program berhenti
.END

BAB 3. Operasi Aritmatika 77

Anda mungkin juga menyukai