pengenalan mikroprosesor mpf i mpf1

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 06 1F
1802 48
1803 3E 01
1805 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