BAB 3 BAB 3
Pemrograman Zilog Pemrograman Zilog
Z80Z80
Lanjutan Lanjutan
OlehOleh
::
Setiawardhana Setiawardhana
BukuBuku
::
Bahasa Bahasa
Assembly ( Assembly (
Buku Komputer Buku Komputer
3)3)
oleholeh
: Son : Son
Kuswadi Kuswadi
Politeknik Elektronika Negeri Politeknik Elektronika Negeri
Surabaya Surabaya

Pokok Bahasan Pokok Bahasan 
Addressing Mode Addressing Mode
??

FLAGFLAG
??

Instruksi Aritmatika Instruksi Aritmatika
??

Branch Branch
??

Instruksi Logika Instruksi Logika
??

Addressing mode Addressing mode 
Register Register

Direct Direct

Immediate Immediate

Register Indirect Register Indirect

Indexed Indexed

Addressing mode Addressing mode
--
Register Register

Perpindahan dari Perpindahan dari
source operand internal source operand internal
register register
keke
destination operand internal register destination operand internal register

Contoh Contoh
: :
LD A,B LD A,B LD B,C LD B,C

Addressing mode Addressing mode
--
Direct Direct

Menyebut langsung alamat memori pada Menyebut langsung alamat memori pada bagian instruksi bagian instruksi

Contoh Contoh
: (: (
Instruksi Instruksi
33
--
byte) byte)
LD A,(800Ah) LD A,(800Ah) LD (8050h),A LD (8050h),A

Addressing mode Addressing mode
--
Immediate Immediate

Data yang Data yang
diolah merupakan bagian dari diolah merupakan bagian dari
instruksi instruksi

Contoh Contoh
: (: (
Instruksi Instruksi
22
atauatau
3 byte) 3 byte)
LD A,4Eh LD A,4Eh LD H, LD H,
FFhFFh
LD HL,8003h LD HL,8003h

Addressing mode Addressing mode
––
Register Indirect Register Indirect

Menggunakan Menggunakan
register internal (16 bit) register internal (16 bit)
atau atau
pasangan pasangan
register register
sebagai sumber dari alamat sebagai sumber dari alamat
memori memori

Contoh Contoh
::
LD (HL),A LD (HL),A LD A,(DE) LD A,(DE) LD (BC),A LD (BC),A

Addressing mode Addressing mode
--
Indexed Indexed

Register IX Register IX
dandan
IYIY

Bisa diisi Bisa diisi
datadata
sembarang sembarang

Sebagai penunjuk alamat Sebagai penunjuk alamat
source source
atauatau
destination destination

Contoh Contoh
::
LD A,(IY+3) LD A,(IY+3) LD (IX+2),B LD (IX+2),B

Addressing mode Addressing mode
--
Indexed Indexed

Contoh Contoh
::

Register IY Register IY
: 8060h : 8060h

Instruksi Instruksi
: LD (IY+3),A : LD (IY+3),A

Hasil Hasil
::
memindahkan memindahkan
datadata
dari dari
register A register A
ke alamat ke alamat
8060h+3 8060h+3
= 8063h = 8063h

Konsep Konsep
--
Indexed Addressing Indexed Addressing 4A A
IY
8060
8063
(8060)+3
XX
SEBELUM INSTRUKSI
4A A
IY
8060
8063
(8060)+3
4A
SESUDAH INSTRUKSI

FLAGFLAG 
Menandai operasi Menandai operasi
CPUCPU

Flag register Z80 : Flag register Z80 :
CYCY
NN
P/VP/V
XX
HH
XX
ZZ
SS
CY Carry Flag
P/V Parity/Overflow Flag
H Half Carry Flag
Z Zero Flag
S Sign Flag
N Flagutk operasi desimal

FlagFlag 
CY : Carry Flag CY : Carry Flag

“1” = true , “1” = true ,
bila mikroprosessor membangkitkan bila mikroprosessor membangkitkan
carry internal carry internal
keke
carry bit carry bit

Operasi aritmatika dan logika Operasi aritmatika dan logika

BitBit
keke
--
9 ?9 ?
CY bit
Bit 7 - Bit 0 (D7-D0)

FlagFlag 
P/VP/V

Parity Parity

Contoh Contoh
::
0101000 0101000 0001000 0001000 ----------- -----------
++
0110000 = parity 0110000 = parity
genap genap

Overflow Overflow

Contoh Contoh
::
penambahan penambahan
22
bilangan positif bilangan positif
0111 1110 = +126 0111 1110 = +126 0000 0010 = + 2 0000 0010 = + 2 ----------- -----------
++
1000 0000 = 1000 0000 =
--
128 (invalid = overflow) 128 (invalid = overflow)

Contoh Contoh
::
penambahan penambahan
22
bilangan negatif bilangan negatif
1000 0010 = 1000 0010 =
--
126126
1000 1000 = 1000 1000 =
--
120120
----------- -----------
++
0000 1010 carry 1 ( 0000 1010 carry 1 (
mestinya negatif mestinya negatif
,,
ttpttp
overflow) overflow)

FlagFlag 
Half Carry Half Carry

Flag “true” Flag “true”
bila ada bila ada
carry carry
daridari
bit 3 bit 3
dandan
44

Instruksi Instruksi
DAA ( DAA (
desimal desimal
adjust accumulation) adjust accumulation)

DAADAA
menangani menangani
4 bit 4 bit
dandan
carry carry
daridari
bit 3 bit 3
keke
bit 4 bit 4

FlagFlag 
ZeroZero

“true” “true”
bila hasil dari operasi adalah bila hasil dari operasi adalah
““
nolnol
””

Contoh Contoh
::
0111 1000 0111 1000 0111 1000 0111 1000
--
0000 0000 0000 0000

FlagFlag 
Sign Flag Sign Flag

“true” “true”
bilabila
MSBMSB
dari hasil dari hasil
“1”“1”

Operasi aritmatika bertanda Operasi aritmatika bertanda

MSBMSB
sebagai penentu tanda bilangan sebagai penentu tanda bilangan

FlagFlag 
N : flag N : flag

Operasi Operasi
BCD, 4 bit BCD, 4 bit

Instruksi Instruksi
DAADAA
bergantung pada bergantung pada
bit N bit N

NN
didi
set “1” set “1”
setelah pengurangan setelah pengurangan

NN
didi
set “0” set “0”
setelah penambahans setelah penambahans

Praktek Praktek
Addressing mode Addressing mode

Register Register
LD A,3Ah LD A,3Ah LD B,A LD B,A LD C,B LD C,B LD D,C LD D,C LD E,D LD E,D HALTHALT

Praktek Praktek
Addressing mode Addressing mode

Direct Direct
LD A,(8040h) LD A,(8040h) OUT (0FEh),A OUT (0FEh),A OUT (0FDh),A OUT (0FDh),A HALTHALT

Praktek Praktek
Addressing mode Addressing mode

Immediate / Register Indirect Immediate / Register Indirect
LD A,36h LD A,36h LD H,80h LD H,80h LD L,40h LD L,40h LD (HL),A LD (HL),A HALTHALT

Praktek Praktek
Addressing mode Addressing mode

Indexed Indexed
LD IX,8040h LD IX,8040h LD A,(IX+3) LD A,(IX+3) OUT (0FDh),A OUT (0FDh),A LD A,(IX+4) LD A,(IX+4) OUT (0FEh),A OUT (0FEh),A HALTHALT

Instruksi Aritmatika Instruksi Aritmatika 
Penambahan Penambahan

Pengurangan Pengurangan

Penambahan Penambahan 
IsiIsi
register register
ke akumulator ke akumulator
ADDADD
A,BA,B
ADD A,C ADD A,C

Isi memori ke akumulator Isi memori ke akumulator
ADD A,(HL) ADD A,(HL)

Penambahan segera Penambahan segera
(immediate) (immediate)
ADD A,25h ADD A,25h
So’al So’al
::Tambahkan angka Tambahkan angka
01F3h 01F3h
dengan dengan
03A6h ? 03A6h ?
Kurangkan angka Kurangkan angka
0100h 0100h
dengan dengan
00FFh ? 00FFh ?


Menambahkan Menambahkan
duadua
data data
padapada
suatu suatu
alamat alamat
memori memori
tertentu tertentu
ORG 8020H ORG 8020H LD HL,8040H LD HL,8040H LD DE,8042H LD DE,8042H LD BC,8044H LD BC,8044H LD A,(HL) LD A,(HL) EX DE,HL EX DE,HL ADD A,(HL) ADD A,(HL) LD (BC),A LD (BC),A INC HL INC HL LD A,(HL) LD A,(HL) EX DE,HL EX DE,HL INC HL INC HL ADC A,(HL) ADC A,(HL) INC BC INC BC LD (BC),A LD (BC),A HALTHALT
Penambahan Penambahan
--
Penyelesaian Penyelesaian


Mengurangkan Mengurangkan
duadua
data data
padapada
suatu suatu
alamat alamat
memori memori
tertentu tertentu
ORG 8050H ORG 8050H LD DE,8052H LD DE,8052H LD BC,8054H LD BC,8054H LD A,(HL) LD A,(HL) EX DE,HL EX DE,HL SUB A,(HL) SUB A,(HL) LD (BC),A LD (BC),A EX DE,HL EX DE,HL INC HL INC HL LD A,(HL) LD A,(HL) EX DE,HL EX DE,HL INC HL INC HL SBC A,(HL) SBC A,(HL) INC BC INC BC LD (BC),A LD (BC),A HALTHALT
Pengurangan Pengurangan
--
Penyelesaian Penyelesaian

Double Add Double Add
pasangan pasangan
register register

Menambah bilangan Menambah bilangan
16 bit 16 bit
dari pasangan dari pasangan
register register
(BC,DE,HL,SP) (BC,DE,HL,SP)
ke pasangan ke pasangan
register HL. register HL.

Hasil disimpan di Hasil disimpan di
HLHL

Mnemonic : Mnemonic :
ADD HL,BC ADD HL,BC ADD HL,DE ADD HL,DE ADD HL,HL ADD HL,HL ADD HL,SP ADD HL,SP

Increment Increment 
8 bit increment 8 bit increment
INC INC
rr
INCINC
(HL)(HL)

16 bit increment 16 bit increment
INC INC
BCBC
INCINC
DEDE
INCINC
HLHL
INCINC
SPSP

Decrement Decrement 
8 bit decrement 8 bit decrement
DECDEC
rr
DECDEC
(HL)(HL)

16 bit decrement 16 bit decrement
DECDEC
BCBC
DECDEC
DEDE
DECDEC
HLHL
DECDEC
SPSP

Percabangan bersyarat Percabangan bersyarat
B = 0
YA (Loncat)
TIDAK (Abaikan Loncat)

Percabangan bersyarat Percabangan bersyarat 
Mnemonic Mnemonic
lengkap lengkap
::

JPJP
Z,Z,
addraddr
JumpJump
bilabila
Zero true Zero true

JPJP
NZ,NZ,
addraddr
JumpJump
bilabila
Zero false Zero false

JPJP
C,C,
addraddr
JumpJump
bilabila
Carry true Carry true

JPJP
NC,NC,
addraddr
JumpJump
bilabila
Carry false Carry false

JPJP
PE,PE,
addraddr
JumpJump
bilabila
Parity Parity
genap genap

JPJP
PO,PO,
addraddr
JumpJump
bilaParity ganjil bilaParity ganjil

JPJP
M,M,
addraddr
JumpJump
bilabila
minus minus

JPJP
P,P,
addraddr
JumpJump
bilabila
plusplus

Instruksi Logika Instruksi Logika 
ANDAND

OROR

ExORExOR

ANDAND 
Contoh Contoh
IN A,(0FCh) IN A,(0FCh) AND 0BFh AND 0BFh
11
00
11
00
00
11
11
00
11
11
11
00
00
00
11
11
11
00
11
00
00
00
11
00
A
B
Hasil

OROR 
Contoh Contoh
::
IN A,(0FCh) IN A,(0FCh) OR 0BFh OR 0BFh
11
00
11
00
00
11
11
00
11
11
11
00
00
00
11
11
11
11
11
00
00
11
11
11
A
B
Hasil

XORXOR 
Contoh Contoh
::
IN A,(0FCh) IN A,(0FCh) XOR 0BFh XOR 0BFh
11
00
11
00
00
11
11
00
11
11
11
00
00
00
11
11
00
11
00
00
00
11
00
11
A
B
Hasil

Instruksi Instruksi
Compare Compare

Bandingka Bandingka
2 operand 2 operand

Set flag Set flag
sesuai hasil sesuai hasil
compare compare

Contoh Contoh
LD A,44h LD A,44h LD B,45h LD B,45h CP BCP B
Proses Proses
: :
44h 44h
––
45h = 45h =
--
1 = 0FFh 1 = 0FFh
Zero Flag Zero Flag
= false = false
Carry Flag Carry Flag
= true = true

Instruksi Instruksi
Rotate Rotate

Rotate Rotate
tanpa tanpa
carry carry
RLCARLCA
rotate rotate
kekiri kekiri
RRCARRCA
rotate rotate
kekanan kekanan
11
00
11
00
00
11
00
11
11
11
00
11
00
00
11
00
00
11
00
00
11
00
11
11
Awal
RLCA
RRCA

Instruksi Instruksi
Rotate Rotate

Rotate Rotate
dengan dengan
carry carry
RLCARLCA
rotate rotate
kekiri kekiri
RRCARRCA
rotate rotate
kekanan kekanan
Data yang Data yang
digeser disimpan ke digeser disimpan ke
register CY register CY
11
00
11
00
00
11
00
11
00
11
00
11
00
00
11
00
00
11
00
00
11
00
11
00
Awal
RLCA
RRCA

Complement Accumulator, Carry Complement Accumulator, Carry
dan dan
Set Carry Set Carry

Complement Accumulator Complement Accumulator Mnemonic Mnemonic
: CPL : CPL
Bit CPL Bit CPL
1 1
jadijadi
0 0
dan dan
0 0
jadi jadi
11

Carry Carry
dan dan
Set Carry Set Carry
Mnemonic Mnemonic
: CCF (Complement Carry Flag) : CCF (Complement Carry Flag) : SCF (Set Carry Flag) : SCF (Set Carry Flag)