BAB 6
‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐‐
INSTRUKSI MIKROPROSESOR
Setiap mikroprosesor selalu dirancang dan dilengkapi dengan perangkat
instruksi. Bentuk perangkat instruksi masing-masing mikroprosesor bergantung
jenis arsitektur yang digunakan. Seperti telah dibahas dalam Bab 2 arsitektur
mikroprosesor ada tiga jenis yaitu CISC, RIS, dan Super Skalar. Dalam Bab 6
ini diuraikan arsitektur software instruksi mikroprosesor Zilog Z-80 CPU.
Kata kunci: set instruksi, CISC
Mikroprosesor Zilog Z-80 CPU adalah 134 perintah LOAD. Disamping itu ada 6
salah satu jenis mikroprosesor yang jenis perintah EXCHANGE yang disingkat
menggunakan arsitektur CISC. Jumlah dengan EX, EXX. Mikroprosesor Z-80 CPU
instruksi Z-80 CPU cukup banyak yaitu juga memiliki 12 jenis perintah PUSH dan
sekitar 141 jenis. Instruksi Z-80 CPU dapat POP yang digunakan untuk transfer data
digolongkan menjadi 13 kelompok yaitu: dalam operasi stack.
Instruksi Transfer Data 8 bit Data dapat ditransfer dalam 8 bit atau 16
Instruksi Transfer Data 16 bit
bit. Perintah transfer data memuat dua
Instruksi Pertukaran Data
Instruksi Pelacakan/Search Data operand yaitu operand pertama
Instruksi Aritmetika dan Logika 8 bit
menunjukkan lokasi dimana data akan
Instruksi Aritmetika Tujuan Umum
dan Kendali CPU disimpan, apakah dalam register atau di
Instruksi Aritmetika 16 bit
memori. Operand pertama Ini disebut
Instruksi Putar dan Geser
Instruksi Manipulasi bit Destinasi. Operand yang kedua
Instruksi Jump
menunjukkan lokasi asli atau asal sebuah
Instruksi Call dan Return
Instruksi RESTART data. Operand kedua ini disebut Source.
Instruksi Input dan Output
Operand dapat berupa register, memori,
atau data immediate. Lebar data yang
1. Instruksi Transfer Data ditransfer dapat berupa data 8 bit atau data
Operasi transfer data atau lebih tepat 16 bit. Bentuk umum transfer data pada
disebut sebagai operasi copy data pada Z-80 CPU adalah seperti Gambar 6.1.
Instruksi transfer data 8 bit dapat terjadi Gambar 6.2. Contoh-contoh transfer data 8
diantara: bit register ke register
berikutnya. Cara kerja transfer data 8 bit 1.1.5. Transfer data 8 bit dari
dari register ke memori dapat dijelaskan Memori ke Memori
menggunakan Gambar 6.5. Transfer data 8 dari memori ke memori
terjadi dalam unit memori diluar CPU. Data 8
No Assembly Operasi Keterangan
bit dari satu lokasi memori dicopy kan
isi memori lokasi
LD(1902), A (1902) Å A alamat 1902 kelokasi memori lainnya. Transfer data dari
1. (RWM) dengan
data dari register memori ke memori memerlukan persyaratan
A
bahwa harus ada mekanisme pemegangan
isi memori lokasi
LD (HL), B (HL) Å B alamat sama alamat memori. Seperti sudah dibahas
dengan isi
2.
register HL
sebelumnya dalam Z-80 CPU alamat
dengan data dari memori ada dua byte atau 16 bit.
register B
isi memori lokasi Transfer data dari memori ke memori
LD (IX+02), D (IX+02) Å D alamat sama
dapat terjadi diantara semua lokasi RWM
dengan isi
3.
register IX+ 02 dan dari ROM ke RWM. Transfer data ke
dengan data dari
register D ROM tidak bisa dilakukan karena ROM
Gambar 6.5. Contoh-contoh transfer data 8 tidak bisa diisi data baru. Hal harus menjadi
bit register ke memori perhatian khusus agar tidak terjadi
kegagalan proses. Untuk operasi transfer
Dari Gambar 6.5. kasus nomor 1
data dari memori ke memori ada tanda “( ) “
perintah LD (1902), A akan memberikan
sebagai penanda operasi memori. Untuk
proses meng-copy data 8 bit pada register A
menghindari kegagalan perintah maka peta
ke memori alamat 1902. Alamat 1902
memori sebuah mikrokomputer sangat
adalah alamat RWM dalam mikrokomputer.
penting dan diperlukan. Dengan peta
Sedangkan perintah LD(HL),B menunjukkan
memori diperoleh data lokasi dan luasan
proses copy data yang ada di register B ke
memori RWM dan ROM secara pasti.
memori yang alamatnya dicatat oleh register
Operasi transfer data dari memori ke
HL. Dalam kasus ini jika HL berisi data 1900
memori banyak sekali digunakan untuk
makan data yang ada pada register B akan
memindahkan data atau program dari suatu
di-copy-kan ke memori alamat 1900. Untuk
lokasi memori ke lokasi lain. Disamping juga
kasus nomor 3 sedikit berbeda karena
untuk membuat back-up data dalam suatu
register IX menggunakan indeks. Perintah
lokasi memori memerlukan transfer data dari
LD(IX+02),D bekerja meng-copy-kan data
memori ke memori. Untuk memahami cara
yang ada di register D ke memori alamat
kerja transfer data dari memori ke memori
IX+02.
pelajari Gambar 6.6.
LDI (DE) Å (HL) Transfer 1 byte data satu. Untuk kasus nomor 2 LDIR adalah
dari lokasi memori
DE Å DE+1 yang alamatnya singkatan dari Load Increament Repeat.
1. dicatat oleh HL ke
HL Å HL+1 lokasi memori yang Proses yang terjadi sama dengan LDI hanya
alamatnya dicatat
BC Å BC-1 oleh DE proses ini berulang sebanyak nilai register
Transfer 1 byte data BC. Karena register BC adalah register 16
LDIR (DE) Å (HL)
dari lokasi memori
DE Å DE+1 yang alamatnya
bit maka kemungkinan jumlah pengulangan-
dicatat oleh HL ke
HL Å HL+1 lokasi memori yang nya adalah diantara 1 sampai dengan 65536
2. alamatnya dicatat
BC Å BC-1 kali.
oleh DE , Diulang
Repeat until BC sampai isi reg BC
sama dengan nol
=0
(alamat naik) 1.1.6. Transfer data Immediate 8
Transfer 1 byte data
bit ke Memori
LDD (DE) Å (HL)
dari lokasi memori
DE Å DE-1 yang alamatnya Transfer data immediate ke memori
3. dicatat oleh HL ke
HL Å HL-1 lokasi memori yang menunjukkan transfer data langsung atau
alamatnya dicatat
BC Å BC-1 oleh DE
segera dari program dengan tujuan/destinasi
Transfer 1 byte data memori. Kembali hal penting yang harus
LDDR (DE) Å (HL)
dari lokasi memori
DE Å DE-1 yang alamatnya
diperhatikan adalah lokasi memori sebagai
dicatat oleh HL ke
HL Å HL-1 lokasi memori yang destinasi adalah RWM. Untuk lebih
4.
alamatnya dicatat mendalami perintah ini pelajari Gambar 6.7.
BC Å BC-1 oleh DE , Diulang
Repeat until BC sampai isi reg BC berkut ini.
=0 sama dengan nol.
isi register DE bertambah satu menjadi 1A01 Gambar 6.7. Contoh-contoh transfer data 8
bit immediate ke memori
dan isi register HL bertambah satu menjadi
Contoh Kasus 1
Berikut ini adalah contoh kasus susunan beberapa perintah transfer data. Identifikasi
untuk setiap perintah tergolong kategori transfer data 8 bit yang mana diantara enam
jenis perintah transfer data yaitu (1) Register Ke Register, (2) Memori Ke Register, (3)
Data Immediate Ke Register, (4) Register Ke Memori, (5) Memori Ke Memori, atau (6)
Data Immediate Ke Memori. Dan apa hasil dari masing-masing perintah tersebut.
Uraikan proses program Gambar 6.8. di bawah langkah demi langkah sehingga
diperoleh hasil seperti Gambar 6.9.
Jika dieksekusi penuh kasus program di atas maka maka akan diperoleh hasil
seperti Gambar 6.9. berikut.
Data 64 XX 64 93 93 93 19 90 64 64
dan AF. Perintah yang digunakan adalah Kemudian data pada alamat 0067 sebagai
LOAD dan POP. Gambar 6.11. byte high di-copy-kan ke byte high register
menunjukkan contoh operasi transfer data IY. Hasil akhir register IY berisi data 16 bit
16 bit dari memori ke register. dari memori alamat 0067 dan 0066. Pada
kasus 3 LD BC,(1800) menjalankan proses
No Assembly Operasi Keterangan
transfer data dua kali 8 bit. Data pada
IXH Å (1903) isi register IX
dengan data dari alamat 1800 sebagai byte low di-copy-kan
1. LD IX,(1902) IXL Å (1902) memori lokasi
alamat 1903 dan
ke register C. Kemudian data pada alamat
1902 1801 sebagai byte high di-copy-kan ke
IYH Å (0067) isi register IY
dengan data dari register B. Hasil akhir register BCberisi data
2. LD IY,(0066) IYL Å (0066) memori lokasi
16 bit dari memori alamat 1801 dan 1800.
alamat 0067 dan
0066 Pada kasus 4 perintah POP DE
B Å (1801) isi register BC
dengan data dari
memberikan proses transfer data dari
3. LD BC,(1800) C Å (1800) memori lokasi memori alamat yang dicatat oelh SP ke
alamat 1801 dan
1800 register E dan memori dari alamat SP+1 ke
D Å (SP+1) isi register DE
register D. Bersamaan perintah ini nilai SP
dengan data dari
E Å (SP) memori lokasi yang baru bertambah dua.
4. POP DE alamat sama
SP Å SP+2 dengan isi
register SP+1 Perintah atau instruksi mikroprosesor
dan SP,
banyak yang sulit difahami hanya dengan
Gambar 6.11. Contoh-contoh transfer data
16 bit dari memori ke register mencermati perintah assemblynya. Setiap
perintah atau instruksi harus difahami lebih
Pada Gambar 6.11. dari contoh kasus 1
detail dengan melihat operasi yang terjadi
perintah LD IX,(1902) memberikan proses
dengan memperhatikan kolom operasi.
transfer data dua kali 8 bit. Data pada
Dalam kolom operasi ditunjukkan skema
alamat 1902 sebagai byte low di-copy-kan
proses yang terjadi untuk setiap instruksi.
ke byte low register IX. Kemudian data pada
Setiap instruksi bisa memberikan satu
alamat 1903 sebagai byte high di-copy-kan
proses, dua proses,tiga proses, bahkan ada
ke byte high register IX. Dalam kasus ini
yang empat proses. Disamping itu hal lain
register IX berisi data 16 bit bersala dari
yang perlu dicermati adalah status flag
memori alamat 1903 dan alamat 1902.
sebagai akibat dari setiap perintah. Status
Untuk kasus 2 perintah LD IY,(0066)
ini penting sekali untuk beberapa hal dalam
memberikan proses transfer data dua kali 8
pengambilan keputusan dan pemilihan
bit. Data pada alamat 0066 sebagai byte low
instruksi khusus seperti DAA.
di-copy-kan ke byte low register IY.
operasi memori menggunakan salah satu dipasangkan dengan instruksi POP. Kedua
register 16 bit atau angka alamat. perintah ini digunakan pada operasi
pembentukan stack pointer. Sehingga selalu
Transfer data 16 bit dari register ke
berhubungan dengan register SP (Stack
memori dapat terjadi drai register BC, DE,
Pointer). PUSH mendorong data ke memori
HL, IX, IY, dan AF. Perintah yang
sehingga termasuk kategori transfer data 16
digunakan adalah LD (Load) dan PUSH.
bit dari register ke memori. Sedangkan
Untuk memahami perintah transfer data 16
instruksi POP bekerja menarik data 16 bit
bit dari register ke memori perhatikan
dari dua lokasi memori ke register 16 bit.
Gambar 6.13.
dapat terjadi hanya ke lokasi RWM atau dari Gambar 6.14. Contoh-contoh transfer data
16 bit dari memori ke memori
ROM ke RWM karena ROM tidak bisa diisi
data baru. Untuk operasi ini ada tanda “( ) “ Instruksi LDIR melakukan operasi copy
sebagai tanda operasi memori. Perintah data dari satu lokasi memori yang alamatnya
yang dapat digunakan hanya LDIR (load dicatat oleh register HL ke satu lokasi
increament repeat) dan LDDR (load memori yang alamatnya dicatat oleh
decreament repeat). Dalam hal ini jumlah regsister DE. Selanjutnya terjadi proses
byte data yang dapat ditransfer dua byte penambahan nilai register DE=DE+1,
atau lebih dengan kemampuan maksimum HL=HL+1, dan BC=BC-1. Proses ini akan
64 K byte bergantung isi register BC. berulang hingga isi register BC=0000H.
Dengan demikian sangat jelas jumlah byte
Jenis instruksi LDIR dan LDDR sangat
data yang di-copy bisa diatur dengan seting
baik digunakan untuk memindahkan atau
nilai data pada register BC. Jika diinginkan
meng-copy sejumlah data dari suatu lokasi
ada 10 byte data yang di-copy maka register
memori kelokasi memori lain untuk
BC diisi data 000AH. LDIR bekerja dari
keperluan penggandaan data dari suatu blok
alamat kecil ke alamat besar. Instruksi
memori ke blok lokasi memori lainnya. Untuk
LDDR bekerja hampir sama dengan LDIR.
memahami transfer data 16 bit dari memori
Perbedaannya terletak pada proses LDIR
ke memori dapat digambarkan seperti
dari memori besar ke kecil.
Gambar 6.14.
Contoh Kasus 2
Gambar 6.15 berikut ini adalah susunan beberapa perintah transfer data 16 bit. Identifikasi
untuk setiap perintah tergolong kategori transfer data 16 bit yang mana dan apa hasil dari
masing-masing perintah tersebut.
Dengan menguraikan proses program Gambar 6.15a. langkah demi langkah akan diperoleh
hasil-hasil akhir seperti Gambar 6.15b.
Gambar 6.15b. Hasil kasus program sederhana perintah transfer data 16 bit
Pertukaran data berbeda dengan transfer register alternatif BC’, DE’, HL’ maka
Contoh Kasus 3
Untuk melatih dan meningkatkan pemahaman maka analisislah program Gambar 6.17a
berikut ini dan tentukan hasil untuk setiap perintah !!
Dengan menguraikan proses program Gambar 6.17a. langkah demi langkah akan diperoleh
hasil-hasil akhir seperti Gambar 6.17b.
Gambar 6.17b. Hasil kasus program sederhana perintah transfer data 16 bit
Instruksi CP,s disediakan untuk BC, DE, HL, SP. Untuk lebih jelasnya
membandingkan isi akumulator dengan perhatikan Gambar 6.19. berikut.
sebuah data tanpa merubah isi akumulator.
Instruksi ini memberikan akibat pada Operasi Assembly Operasi Ket.
satu lokasi memori yang alamatnya dicatat kelompok instruksi ADD yaitu kelompok 8 bit
oleh register HL, IX, atau IY. dan kelompok16 bit. Dalam kelompok 8 bit
semua hasil operasi ADD tercatat di register
Pada operasi aritmetika 16 bit register A. Register A sebagai penampung hasil atau
HL, iX, dan IY berfungsi sebagai akumulator lebih umum disebut dengan akumulator.
yang dapat ditambahkan dengan isi register Dalam kelompok 16 bit register HL, IX,dan
IY salah satu bisa berfungsi sebagai Instruksi SUB digunakan hanya untuk
akumulator. melakukan operasi pengurangan 8 bit.
Pada operasi SUB isi register A dikurangkan
Instruksi ADD A,A akan menjalankan
dengan salah satu isi register A, B, C, D, E,
proses menjumlahkan data yang ada di
H, L, atau data immediate 8 bit. Disamping
register A dengan dirinya sendiri. Sehiingga
itu isi register A juga dapat dikurangkan
instruksi ini mewakili perkalian register A
dengan data pada suatu lokasi memori yang
dengan 2. Instruksi ADD A, B melakukan
alamatnya dicatat oleh register HL, IX, dan
perintah penjumlahan data yang ada di A
IY. Gambar 6.20. menunjukkan contoh-
dengan data yang ada di B dan hasilnya
contoh perintah SUB.
dicatat di register A. Demikian juga dengan
instruksi ADD yang lain yang terjadi antara Operasi Assembly Operasi Keterangan
register A dengan register 8 bit lainnya.
8 Bit SUB , A A Å A- A Mempengaruhi
Instruksi ADD A,N menunjukkan instruksi SUB , B A Å A- B Flag S, Z, H, V,
C
penjumlahan data yang ada di register A SUB , C A Å A- C
SUB , D A Å A- D N = data 8 bit
dengan data immediate dan hasilnya dicatat
SUB, E A ÅA- E
di register A. Instruksi ADD A, (HL) SUB , H A ÅA- H
menjalankan perintah penjumlahan data SUB , L AÅA-L
SUB, N A Å A- N
yang ada di A dengan data yang ada di
SUB , HL) AÅA-(HL)
memori yang alamatnya dicatat oleh register SUB, (IX+d) A ÅA-(IX+d)
HL. Dua perintah dibawahnya identik SUB,(IY+d) A ÅA-(IY+d)