Anda di halaman 1dari 15

BAB 4

Operasi Logika
4.1. Pendahuluan
Di dalam mikroprosesor Z80, terdapat 3 buah operasi logika, yaitu
AND, OR, dan XOR. Instruksi AND, OR, dan XOR dapat digunakan untuk
melakukan operasi logika antara isi register A (accumulator) dengan data
register 8 bit atau data 8 bit langsung atau data yang tersimpan pada alamat
memori.

4.2. Register Flag di Operasi Logika


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
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

BAB 4. Operasi Logika 79


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 logika 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
AND 0FH
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.
4. Muat program ke Simulator dengan mengklik menu Tools – Assemble &
Load.

BAB 4. Operasi Logika 80


Gambar 4.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 4.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
AND 0FH A ← A AND 0FH isi register A di-AND-
kan dengan data 0FH
dan hasilnya disimpan

BAB 4. Operasi Logika 81


pada register A = 01H
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 logika
yaitu dengan melihat harga-harga yang ada pada masing-masing bit dari
register F (flag). Setelah terjadi operasi logika pada prgram di atas maka
register flag yang terpengaruh adalah sebagai berikut:
S Z - H - P/V N C
Operasi AND 0FH 0 0 - 1 - 0 0 0
Keterangan:
Setelah terjadi operasi logika AND, maka register F yang terpengaruh
adalah S, Z, dan V dengan penjelasan sebagai berikut:
 S = 0 artinya tidak terjadi perubahan tanda
 Z = 0 artinya hasilnya tidak sama dengan nol
 V = 0 artinya pada operasi tersebut tidak terjadi overflow

4.3. Instruksi Logika AND


Instruksi AND mempunyai cara kerja yang sama dengan gerbang
logika AND, dimana logika AND akan mempunyai output berlogika 1 bila
semua inputnya bernilai 1. Bila salah satu atau lebih inputnya berlogika 0,
maka output dari logika AND akan berlogika 0. Logika AND berfungsi
sebagai pengali nilai pada inputnya misalnya jika input memiliki nilai 1 dan 0
(1 . 0) maka output akan berlogika 0, jika nilai inputnya 1 semua (1 . 1) maka
nilai output akan berlogka 1.

BAB 4. Operasi Logika 82


Tabel kebenaran dari operasi logika AND:
P Q P AND Q
0 0 0
0 1 0
1 0 0
1 1 1

Contoh perhitungan:
P = C5H = 11000101B
Q = 71H = 01110001B
AND
P AND Q = 41H = 01000001B

Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
AND s : A  A AND s
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)
n : data 8 bit

Contoh 4.1 Program logika AND antara dua buah data yang tersimpan pada
alamat memori:
Data pertama tersimpan pada alamat memori 1900H.
Data kedua tersimpan pada alamat memori 1902H.
Data hasil logika AND disimpan pada alamat memori 1904H.
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
AND D
LD (IX+04H), A
HALT
.END

BAB 4. Operasi Logika 83


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 4.3 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 = C5H
1902H = 71H

BAB 4. Operasi Logika 84


Gambar 4.4 Isi nilai pada Memory Editor
6. Jalankan simulator dengan mengklik menu Simulation – Start.
7. Pada jendela Memory Editor, pada alamat 1904H akan terisi data hasil
logika AND, yaitu 41H.

Gambar 4.5 Nilai-nilai pada Memory Editor


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

Gambar 4.6 Nilai-nilai register pada log.txt

BAB 4. Operasi Logika 85


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 = C5H
LD D, (IX+02H) D ← (IX+02H) isi register D = 71H
LD A, C A←C isi register A = C5H
AND D A ← A AND D isi register A di-AND-
kan dengan register D
dan hasilnya disimpan
pada register A = 41H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = 41H
HALT
.END

4.4. Instruksi Logika OR


Instruksi OR mempunyai cara kerja yang sama dengan gerbang
logika OR, dimana logika OR akan mempunyai output berlogika 1 bila salah
satu atau semua inputnya bernilai 1. Bila semua inputnya berlogika 0, maka
output dari logika OR akan berlogika 0. Logika OR berfungsi sebagai
penjumlah nilai pada inputnya misalnya jika input memiliki nilai 1 dan 0 (1 +
0) maka output akan berlogika 1, jika nilai inputnya 0 semua (0 + 0) maka
nilai output akan berlogka 0.
Tabel kebenaran dari operasi logika OR:
P Q P OR Q
0 0 0
0 1 1
1 0 1
1 1 1

Contoh perhitungan:
P = C5H = 11000101B
Q = 71H = 01110001B
OR
P OR Q = F5H = 11110101B
Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
OR s : A  A OR s
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)

BAB 4. Operasi Logika 86


n : data 8 bit

Contoh 4.2 Program logika OR antara dua buah data yang tersimpan pada
alamat memori:
Data pertama tersimpan pada alamat memori 1900H.
Data kedua tersimpan pada alamat memori 1902H.
Data hasil logika OR disimpan pada alamat memori 1904H.
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
OR D
LD (IX+04H), 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 4. Operasi Logika 87


Gambar 4.7 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 = C5H
1902H = 71H

Gambar 4.8 Isi nilai pada Memory Editor


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

BAB 4. Operasi Logika 88


Gambar 4.9 Nilai-nilai pada Memory Editor
8. Lihat nilai-nilai register yang terlibat dalam program pada tampilan file
log.txt.

Gambar 4.10 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 = C5H
LD D, (IX+02H) D ← (IX+02H) isi register D = 71H
LD A, C A←C isi register A = C5H
OR D A ← A OR D isi register A di-OR-
kan dengan register D
dan hasilnya disimpan
pada register A = F5H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = F5H
HALT program berhenti
.END
4.5. Instruksi Logika XOR
Instruksi Eksklusif-OR (XOR) merupakan operasi yang berbeda
dengan OR terutama saat kondisi inputnya bernilai 1 dan 1, pada operasi OR

BAB 4. Operasi Logika 89


akan menghasilkan output 1, namun pada XOR akan menghasilkan output 0.
Dengan kata lain, XOR tidak mencakup kondisi yang terakhir (input 1 dan 1)
pada OR.
Tabel kebenaran dari operasi logika XOR:
P Q P XOR Q
0 0 0
0 1 1
1 0 1
1 1 0

Contoh perhitungan:
P = C5H = 11000101B
Q = 71H = 01110001B
XOR
P XOR Q = B4H = 10110100B

Mnemonik dan arti simbolnya pada operasi 8 bit adalah sebagai berikut:
XOR s : A  A XOR s
Keterangan:
s : register A, B, C, D, E, H, L, n, (HL), (IX+d), (IY+d)
n : data 8 bit

Contoh 4.3 Program logika XOR antara dua buah data yang tersimpan pada
alamat memori:
Data pertama tersimpan pada alamat memori 1900H.
Data kedua tersimpan pada alamat memori 1902H.
Data hasil logika XOR disimpan pada alamat memori 1904H.
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
XOR D
LD (IX+04H), A

BAB 4. Operasi Logika 90


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 4.11 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 = C5H
1902H = 71H

BAB 4. Operasi Logika 91


Gambar 4.12 Isi nilai pada Memory Editor
6. Jalankan simulator dengan mengklik menu Simulation – Start.
7. Pada jendela Memory Editor, pada alamat 1904H akan terisi data hasil
logika XOR, yaitu B4H.

Gambar 4.13 Nilai-nilai pada Memory Editor


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

Gambar 4.14 Nilai-nilai register pada log.txt

BAB 4. Operasi Logika 92


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 = C5H
LD D, (IX+02H) D ← (IX+02H) isi register D = 71H
LD A, C A←C isi register A = C5H
XOR D A ← A XOR D isi register A di-XOR-
kan dengan register D
dan hasilnya disimpan
pada register A = B4H
LD (IX+04H), A (IX+04H) ← A isi alamat 1904H = B4H
HALT program berhenti
.END

BAB 4. Operasi Logika 93

Anda mungkin juga menyukai