PERCOBAAN 1
PENGENALAN MIKROPROSESOR MPF-I Oleh : Sumarna, Jurdik Fisika, FMIPA, UNY E-mail :
[email protected]
Percobaan ini akan memperkenalkan MPF-I Z80 dan memahami cara menggunakannya, mempelajari berbagai register dalam MPF-I, serta memahami operasi aritmatik dan logik dalam kaitannya dengan register flag. Register pada MPF-I Register merupakan tempat untuk menyimpan data meskipun sangat terbatas, sehingga register memiliki sifat yang sama dengan RAM (Random Access Memory). Data yang tersimpan di dalam register setiap saat dapat diubah dan dibaca. Di dalam sistem mikroprosesor terdapat beberapa jenis register antara lain : a. Register 8 bit yang memiliki kemampuan untuk menyimpan data 8 bit atau 1 byte. b.
Register 16 bit yang memiliki kemampuan untuk menyimpan data 16 bit atau 2 byte.
Berdasarkan penggunaannya, register 8 bit dipisahkan menjadi 2 kelompok, yaitu Register Utama dan register alternatif. Kelompok register utama bersifat identik dengan kelompok register alternatif, tetapi yang boleh digunakan setiap saat hanya salah satu kelompok saja. Dengan kata lain kelompok register itu tidak boleh digunakan bersamasama. Register utama terdiri dari : 1.
Register Akumulator atau register A a. sekedar untuk menyimpan data 1 byte, b. data pada register A dapat dikenai operasi aritmatik , c. data pada register A dapat dikenai operasi logik, d. lintas data antar komponen penunjang harus disinggahkan terlebih dahulu pada register A baru kemudian dikirim ke tujuan.
2.
Register Flag atau register F Register flag merupakan register pembantu terhadap operasi aritmatik dan logik. Bentuk bantuannya berupa menyimpan tanda keadaan bilamana terjadi carry, non 1
carry, borrow, zero, dan parity/overflow. Letak definisi dari simpan keadaan flag pada register F adalah sebagai berikut :
Bit 7
Bit 6
Bit 5
Bit 4
Bit 3
Bit 2
Bit 1
Bit 0
S
Z
-
H
-
P/V
N
C
dengan
S Z H P/V N C
: : : : : :
sign zero half carry parity/overflow non carry carry
Register untuk penggunaan umum (general purpose) terdiri dari : 1.
Register B (8 bit) dan register C (8 bit) yang dapat dipasangkan menjadi register BC (16 bit),
2.
Register D (8 bit) dan register E (8 bit) yang dapat dipasangkan menjadi register DE (16 bit),
3.
Register H (8 bit) dan register L (8 bit) yang dapat dipasangkan menjadi register HL (16 bit).
Register B, C, D, E, H, dan L dapat digunakan secara umum, masing-masing berupa register 8 bit yang bebas dioperasikan sediri-sendiri. Isi setiap register itu dapat dioperasikan secara aritmatik dan logik terhadap register A. Selain itu, register-register tersebut dapat dioperasikan berpasangan seperti di atas (BC, DE, dan HL) dan tidak boleh membentuk pasangan lain (BD, CE, DL, EH dll.). Register umum memiliki sifat sebagai berikut : a. Sekedar untuk menyimpan dara 1 byte, b. Isinya dapat dikutipkan dari satu register ke register lainnya, c. Isinya dapat dioperasikan secara aritmatik atau logik terhadap isi register A, d. Dapat dioperasikan dalam register berpasangan sehingga mampu menyimpan data 2 byte, e. Sebagai pencatat address,
2
f. Register HL dapat berfungsi sebagai akumulator untuk operasi aritmatik 16 bit.
Selain register di atas, ada beberapa jenis register lain untuk penggunaan khusus, yaitu : 1. Register Interupsi atau register I yang besarnya 8 bit khusus untuk melayani keperluan operasi interupsi (penyelaan), 2. Register Memory Refresh atau register R yang besarnya 8 bit khusus untuk melayani keperluan operasi dynamic memory refresh. 3. Register indeks IX atau register IX, 4. Register indeks IY atau register IY, 5. Register Stack Pointer atau register SP Stack adalah memori tempan menyimpan isi register 16 bit yang berkaitan dengan operasi penyimpanan PUSH dan operasi pengambilan POP. Selain itu register SP merupakan pencatat address stack dan memiliki sifat menunjuk ke address memori, dan memiliki sifat yang berbeda dengan penunjuk address memori lainnya. Operasi register SP selalu berkaitan dengan operasi PUSH dan POP, di mana opersi ini khusus menyimpan dan mengambil isi register BC, DE, HL, IX, IY, dan register AF di stack. 6. Register Program Counter atau register PC.
Modus Pengalamatan pada Pemrograman 1. Pengalamatan Tersirat Adddress data tidak perlu disebutkan karena sudah tersirat pada instruksi tersebut. Contoh :
NEG CPL
mengubah isi register A menjadi negatif, komplemenkan isi dari register A.
2. Pengalamatan Dekat Dalam pengalamatan ini nilai data disebutkan dalam instruksi. Contoh :
LD LD
A, 05H BC,1200H
isi register A dengan bilangan 05 H isi pasangan register BC dengan bilangan 1200 H.
3. Pengalamatan Tidak Langsung Dalam modus ini data terletak pada alamat yang tersimpan di suatu pasangan register. Contoh :
LD
HL, 1200H
isi pasangan register HL dengan bilangan 1200H 3
LD
B,(HL)
isi register B dengan data pada address yang ditunjukkan oleh register HL.
Misalkan pada address 1200H berisi data 06H, maka regsiter B akan berisikan data yang berupa bilangan 06H tersebut. 4. Pengalamatan Berindeks Pada mikroprosesor Z80 terdapat 2 buah register berindeks yaitu register IX dan IY yang masing-masing berukuran 16 bit dan berguna untuk menunjukkan suatu data pada lokasi address tertentu. Contoh :
LD IX,1200H LD (IX + 5),02H
isi regiater IX dengan bilangan 1200H isi memori pada lokasi IX+5 yakni 1205H dengan data yang berupa bilangan 02 H.
Operasi Aritmatik Pada dasarnya hanya ada 5 macam operasi aritmatik yang dapat dilaksanakan oleh mikroprosesor Z80. Operasi
aritmatik tersebut meliputi penjumlahan,
pengurangan, tambah satu, kurang satu, dan membandingkan.
Operasi
penjumlahan ada 2 macam yaitu ADD dan ADC (penjumlahan dengan carry-nya). Operasi pengurangan juga ada 2 macam yaitu SUB dan SBC (pengurangan dengan carry-nya). Selain itu dapat dibedakan operasi 8 bit dengan operasi 16 bit. Untuk operasi 8 bit salah satu datanya harus berada pada register A (akumulator). Mnemonic dan arti simbol operasi 8 bit adalah sebagai berikut : ADD ADC SUB SBC INC DEC CP
A,s A,s A,s A,s s s s
: : : : : : :
A A+s A A + s + cy A A–s A A – s – cy s s+1 s s–1 A – s di mana harga A tetap
Keterangan s n cy
: register A, B, C, D, E, H, l, n, (HL), (IX + d), (IY + d). : data 8 bit langsung : carry.
Sedangkan mnemonic dan arti simbol pada operasi 16 bit adalah sebagai berikut : ADD HL,ss ADC HL,ss
: HL HL + ss : HL HL + ss + cy 4
SBC ADD ADD INC DEC
HL,ss IX,pp IY,rr tt tt
: : : : :
HL HL – ss – cy IX IX + pp IY IY + rr tt tt + 1 tt tt – 1
Keterangan ss pp rr tt
: : : :
untuk BC, DE, SP, HL untuk BC, DE, SP, IX untuk BC, DE, SP, IY untuk semua register 16 bit.
Operasi Logik Operasi logik di dalam mikroprosesor Z80 terdiri dari AND, OR, NOT, dan XOR yang tabel kebenarannya dapat dirangkum kembali sebagai berikut : A
B
AND
OR
XOR
0 0 1 1
0 1 0 1
0 0 0 1
0 1 1 1
0 1 1 0
A
NOT
0
1
1
0
Contoh program operasi aritmatik dan logik adalah sebagai berikut : 1800 1802 1803 1805
06 1F 48 3E 01 80
LD B, 1FH LD C, B LD A, 01H ADD A, B
1806
E6 0F
AND 0FH
1808
04
INC B
isikan 1FH ke register B kutip isi register B ke register C isikan 01H ke register A isi register B dijumlahkan dengan isi register A dan hasilnya disimpan pada register A, (A = 1F + 01 = 20H) isi register A di-AND-kan dengan) 0FH dan hasilnya disimpan pada register A, (A = 20H AND 0FH = 0H) isi register B ditambah 1 dan hasilnya disimpan pada register B, (B = 1FH + 1 = 20H).
Dari program di atas jika dilihat isi registernya masing-masing akan seperti pada keterangan program. Selain itu dapat juga dilihat pengaruhnya terhadap isi register
5
flagnya setelah terjadi operasi arotmatik atau logik, yaitu dengan melihat harga-harga yang ada pada masing-masing bit dari register F (flag). Setelah terjadi operasi aritmatik dan logik pada program di atas maka register flag yang terpengaruh adalah sebagai berikut : Setelah operasi ADD A, B AND 0F H INC B
S
Z
-
H
-
P/V
N
C
0 0 0
0 1 0
-
1 1 1
-
0 1 0
0 0 0
0 0 0
Setelah terjadi operasi aritmatik ADD maka register F yang terpengaruh adalah S, Z, H, V, C. Sehingga setelah terjadi operasi ADD A, B tersebut di atas dapat dijabarkan sebagai berikut : S=0 Z=0 H=1 V=0 C=0
: : : : :
tidak terjadi perubahan tanda (hasilnya adalah positif) hasilnya tidak nol terjadi half carry (terjadi carry pada bit 4 dalam register A) pada operasi tersebut tidak terjadi overflow tidak terjadi carry.
Setelah terjadi operasi logik AND 0FH, maka isi register F dapat dijabarkan sebagai berikut : S = 0 : tidak terjadi perubahan tanda Z = 1 : hasilnya sama dengan nol P = 1 : paritasnya ganjil. Setelah terjadi operasi INC B, maka isi register F dapat dijabarkan sebagai berkut : S=0 Z=0 H=1 V=0
: : : :
tidak terjadi perubahan tanda (hasilnya positif) hasilnya tidak sama dengan nol terjadi half carry (terjadi carry pada bit 4 dalam register A) pada operasi tersebut tidak terjadi overflow.
6