praktikum mikroprosesor z80

12
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:

Upload: rijowan

Post on 16-Apr-2015

622 views

Category:

Documents


72 download

DESCRIPTION

mengamati bagaimana proses aritmatika pada mirkoprosesor Z80

TRANSCRIPT

Page 1: praktikum mikroprosesor Z80

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

Page 2: praktikum mikroprosesor Z80

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

Page 3: praktikum mikroprosesor Z80

(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

Page 4: praktikum mikroprosesor Z80

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.

Page 5: praktikum mikroprosesor Z80

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

Page 6: praktikum mikroprosesor Z80

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:

Page 7: praktikum mikroprosesor Z80

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.

Page 8: praktikum mikroprosesor Z80

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.