praktikum mikroprosesor z80
DESCRIPTION
mengamati bagaimana proses aritmatika pada mirkoprosesor Z80TRANSCRIPT
UNIT II
PEMROGRAMAN ARITMATIKA
I. Tujuan Percobaan
1. Mempelajari pengaruh bendera status (status flag).
2. Mempelajari operasi aritmatika dan operasi nalar.
II. Alat dan Bahan
1. Mikroprosesor MPF-I.
2. Buku manual MPF-I.
3. Penyedia daya (power supply).
III.Dasar Teori
Data yang dipakai dalam mikroprosesor Z-80 diimplementasikan dalam
sistem bilangan biner (basis 2) dan bilangan heksadesimal (basis 16). Bilangan
biner dipakai secara internal (di dalam sistem) maupun eksternal (diluar system
mikroprosesor), sedangkan bilangan heksadesimal hanya dipakai diluar sistem
(misalnya di penampil dan papan kunci).
Bilangan biner memiliki 2 keadaan yaitu “1” dan “0”. Secara umum
bilangan biner dengan lebar N bit (binary digit) dapat dirumuskan sebagai berikut:
Konversi bilangan biner ke bilangan heksadesimal dan desimal ditunjukkan pada
tabel berikut:
Tabel konversi bilangan biner-hex-desimal
Biner Hexadesimal Desimal Biner Hexadesimal Desimal
0000 0 0 1000 8 8
0001 1 1 1001 9 9
0010 2 2 1010 A 10
0011 3 3 1011 B 11
0100 4 4 1100 C 12
0101 5 5 1101 D 13
0110 6 6 1110 E 14
0111 7 7 1111 F 15
Data yang ada di memori mikroprosesor dapat diolah dengan berbagai
operasi aritmatik (penjumlah dan pengurangan) maupun operasi nalar (AND, OR,
NOR). Hasil dari operasi tersebut akan membawa perubahan status pada bit-bit
bendera register F, terutama bendera S (tanda), bendera V (luapan) dan bendera C
(bawaan). Bendera S akan diset 1 apabila data bernilai negatif dan sebaliknya.
Bendera C akan diset 1 apabila hasil operasi menghasilkan bit bawaan dan
sebaliknya. Bendera V akan mencatat jika dalam operasi aritmatik komplemen 2
terjadi “internal carry”, yaitu bawaan dari bit-6 ke bit-7 sehingga akan diset 1
apabila terjadi luapan dan sebaliknya.
Pada operasi aritmatik mikroprosesor, bilangan negatif biasanya
dinyatakan dalam bilangan biner komplemen 2. Pada operasi bilangan biner
komplemen 2, bawaan diabaikan. Cara mengubah bilangan biner menjadi
bilangan komplemen 2 adalah sebagai berikut:
Bilangan decimal -5 : 0000 0101
Bilangan komplemen 1 : 1111 1010
1 +
Bilangan komplemen 2 : 1111 1011
Berikut ini adalah contoh beberapa operasi aritmatik dan nalar bilangan
biner pada mikroprosesor dan hasil perubahan status pada register bendera:
1. (-4h) 1111 1100
(-7h) 1111 1001 +
(-11h) (1) 1111 0101
Bendera S=1, V=0, C=1
2. (81h) 1000 0001
(C2h) 1100 0010 +
(43h) (1) 0100 0011
Bendera S=0, V=1, C=1
3. (34h) 0011 0100
(A2h) 1010 0010 AND
(20h) 0010 0000
Bendera S=0, V=0, C=0
Untuk membuat program operasi aritmarik dalam bahasa assembly dapat
digunakan beberapa instruksi, antara lain: ADD, ADC (Add with carry), SUB
(Subtract), dan SBC (Subtract with carry). ADD A, nn atau ADD A, reg adalah
perintah untuk menjumlahkan data atau isi suatu register dengan isi akumulator
ADC A, nn adalah perintah untuk menjumlahkan kedua operand (isi akumulator
dengan data dari luar atau isi register) dan mengurangkan operand tujuan dengan
operand sumber (isi akumulator). SBC adalah ststus bendera pembawanya
(carry). Contoh:
SBC A, data
Dimisalkan isi register A: 3A 0011 1010 bendera C=1
data: 7C 0111 1100
Operasi aritmatik:
3A 0011 1010
bil. komplemen 2 dari 7C 1000 0100
bil. komplemen 2 dari 1 1111 1111
(1) 1011 1101
S=1, Ac=1 (ada carry dari bit orde rendah ke tinggi), V=0, C=1, N(SUB)=1
Dalam unit dipelajari instruksi-instruksi dasar bahasa assembly dan mesin
untuk membuat percabangan atau kalang. Perintah DEC mengurangkan operasi
operand dengan 1 dan perintah INC menambahkan operand dengan 1. JP (Jump)
adalah instruksi untuk melakukan percabangan tidak bersyarat ke alamat yang
ditunjukkan oleh operand. Instruksi JRNC (Jump Relative if No Carry) melakukan
percabangan ke alamat yang ditunjukkan operand bila status pembawa bernilai 0
secara relatif. DJNZ (Decrement reg B and Jump if Not Zero) adalah instruksi
untuk mengurangkan isi register B dan melakukan percabangan jika hasilnya
bukan/belum nol. RLCA (Rotate Accumulator Left Circular) adalah instruksi
untuk menggeser nilai bit-bit akumulator ke kiri secara sirkuler.
Dalam pemrograman juga dimungkinkan penggunaan Label sebagai
penunjuk lokasi suatu pernyataan. Label dapat berupa nama atau kata-kata yang
ditempatkan diawal suatu pernyataan dan diakhiri dengan tanda titik dua, sebagai
berikut:
Kalang1: LD A, (IX+00)
Label
IV. Cara Kerja
1. Menulis program penjumlahan ke dalam bahasa assembly kemudian diubah ke
dalam bahasa mesin.
2. Masukkan program ke dalam mikroprosesor MPF-I dengan alamat awal
1800h.
3. Periksa apakah program sudah benar kemudian eksekusi program dengan
menekan tombol RST-PC-GO.
4. Amati dan catat hasil eksekusi dan status bendera S, Z, V dan C jika
diinginkan.
5. Lakukan langkah yang sama untuk program pengurangan dan perkalian 2
bilangan.
V. Lembar Kerja
A. Penjumlahan
1) Tulis program untuk menjumlahkan dua bilangan 8-bit yang disimpan
pada lokasi memori.
bilangan x= (1900h)
bilangan y= (1901h)
hasil penjumlahan z= (1902h)
Gunakan program dibawah ini:
ORG 1800hXOR A ;hapus semua flagLD A, (1900h) ;A=xLD HL, (1901h)LD B, (HL) ;B=yADD A, B ;A=A+BLD (1902h), A ;z=ARST
Amati untuk:
x=06h, y=08h catat hasil dan kondisi flag S, Z, P/V dan C demikian juga
untuk:
x=7Fh, y=01h, z=……….h
x=04h, y=FEh, z=……….h
x=02h, y=FCh, z=……….h
x=FEh, y=FCh, z=……….h
x=81h, y=C2h, z=……….h
2) Penjumlahan bilangan 16-bit
bilangan x= (1901h-1900h)
bilangan y= (1903h-1902h)
hasil penjumlahan z= (1905h-1904h)
Buatlah programnya, untuk menjumlahkan:
x=007Fh, y=0001h, z=……….h
x=7F00h, y=1001h, z=……….h
x=0001h, y=00FEh, z=……….h
x=0400h, y=FE00h, z=……….h
x=0002h, y=00FCh, z=……….h
x=2000h, y=FC00h, z=……….h
x=00FEh, y=00FCh, z=……….h
x=FE00h, y=FC00h, z=……….h
x=0081h, y=00C2h, z=……….h
x=8100h, y=C200h, z=……….h
Catat hasil penjumlahan dan kondisi flag S, Z, P/V dan C
3) Penjumlahan dua bilangan 32-bit
bilangan x= (1A03h-1A02h-1A01h-1A00h)
bilangan y= (1A07h-1A06h-1A05h-1A04h)
hasil penjumlahan z= (1A0Bh-1A0Ah-1A09h-1A08h)
Menggunakan program dibawah ini:
ORG 1800LD B, 4hLD IX, 1A00hAND A
LOOP= LD A, (IX+00)ADC A, (IX+4)LD (IX+8), AINC IXDEC BJP NZ, LOOPRST 38h
Catat hasilnya dan kondisi flag S, Z, P/V dan C untuk bilangan-bilangan:
x=…………. y=………….
x=…………. y=………….
x=…………. y=………….
x=…………. y=………….
B. Pengurangan
1) Tulis program untuk pengurangan dua bilangan 8-bit.
bilangan x= (1900h)
bilangan y= (1901h)
hasil penjumlahan z= (1902h)
untuk:
x=08h, y=05h, z=……….h
x=05h, y=08h, z=……….h
x=80h, y=50h, z=……….h
x=50h, y=80h, z=……….h
Catat hasil pengurangan dan kondisi flag S, Z, P/V dan C.
2) Tulis program untuk pengurangan dua bilangan 16-bit.
bilangan x= (1901h-1900h)
bilangan y= (1903h-1902h)
hasil penjumlahan z= (1905h-1904h)
Catat hasil pengurangan dan kondisi flag S, Z, P/V dan C.
x=8080h, y=5050h, z=……….h
x=…… h, y=…… h, z=……….h
x=…… h, y=…… h, z=……….h
x=…… h, y=…… h, z=……….h
C. Perkalian
Suatu bilangan pengali (multiplier) disimpan di register E dan bilangan yang
dikalikan (multiplicand) disimpan di register A, hasil pekalian tersebut dalam
pasangan register HL. Gunakan program dibawah ini:
MULTI LD B, 8LD D, 0LD H, DLD L, D
LOOP1 ADD HL, HLRLCAJR NC, LOOP2ADD HL, DE
LOOP2 DJNZ LOOP1RST
Lakukan suatu perkalian untuk bilangan-bilangan dibawah ini:
02h x 05h, 00h x 05h, FFh x FFh
Catat hasil perkalian diatas.
VI. Analisa
Proses aritmatik yang terjadi pada mikroprosesor umumnya adalah
mengikuti pola berikut:
register X register X+immediate atauregister Y atau(memori)
Register X menyimpan data yang akan ditambahkan sekaligus menyimpan data
hasil penambahan atau operasi aritmatik lain. Data yang akan ditambahkan dapat
berupa nilai konstan immediate atau data pada suatu register atau data pada suatu
memori.
Mikroprosesor Z80 memungkinkan proses aritmatik penambahan dan
pengurangan untuk 8 dan 16 bit. Untuk opearasi 8 bit register yang digunakan
adalah register A sebagai tempat operasi dan penyimpan hasil operasi. Sedangkan
pada operasi 16 bit menggunakan pasangan register.
Register bantu dalam melaksanakan proses perhitungan adalah register
flag (F) yang memberikan informasi apakah hasil operasi bernilai nol, bernilai
negatif, menyimpan bawaan atau terjadi luapan. Bit-bit penanda ini dapat juga
dipergunakan sebagai pertanyaan percabangan.
VII. Kesimpulan
Karena tidak mempunyai kode program untuk operasi perkalian, maka
proses perkalian dilakukan melalui manipulasi program. Manipulasi yang
dilakukan adalah dengan menggeser ke kiri bilangan yang dikalikan. Melalui
pergeseran ini bilangan akan menjadi semakain besar.