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)