You are on page 1of 8

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:
b-(n-1) b-(n-2) MSB (Most Significant Bit) b1 b0 LSB (Least Significant Bit)

Konversi bilangan biner ke bilangan heksadesimal dan desimal ditunjukkan pada tabel berikut: Tabel konversi bilangan biner-hex-desimal
Biner 0000 0001 0010 0011 0100 0101 0110 0111 Hexadesimal 0 1 2 3 4 5 6 7 Desimal 0 1 2 3 4 5 6 7 Biner 1000 1001 1010 1011 1100 1101 1110 1111 Hexadesimal 8 9 A B C D E F Desimal 8 9 10 11 12 13 14 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 Bilangan komplemen -5 : 1 : 0000 0101 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) (-7h) (-11h) (1) 1111 1100 1111 1001 + 1111 0101

Bendera S=1, V=0, C=1 2. (81h) (C2h) (43h) (1) 1000 0001 1100 0010 + 0100 0011

Bendera S=0, V=1, C=1 3. (34h) (A2h) (20h) 0011 0100 1010 0010 AND 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 data: 7C 0011 1010 0111 1100 bendera C=1

Operasi aritmatik:
3A bil. komplemen 2 dari 7C bil. komplemen 2 dari 1 (1) 0011 1010 1000 0100 1111 1111 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: Label

LD A, (IX+00)

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 bilangan hasil penjumlahan x= (1900h) y= (1901h) z= (1902h)

Gunakan program dibawah ini:


ORG XOR LD LD LD ADD LD RST 1800h A A, (1900h) HL, (1901h) B, (HL) A, B (1902h), A ;hapus semua flag ;A=x ;B=y ;A=A+B ;z=A

Amati untuk: x=06h, y=08h catat hasil dan kondisi flag S, Z, P/V dan C demikian juga untuk: x=7Fh, x=04h, x=02h, x=FEh, x=81h, y=01h, y=FEh, y=FCh, y=FCh, y=C2h, z=.h z=.h z=.h z=.h z=.h

2) Penjumlahan bilangan 16-bit


bilangan bilangan hasil penjumlahan x= (1901h-1900h) y= (1903h-1902h) z= (1905h-1904h)

Buatlah programnya, untuk menjumlahkan: x=007Fh, x=7F00h, x=0001h, x=0400h, x=0002h, y=0001h, y=1001h, y=00FEh, y=FE00h, y=00FCh, z=.h z=.h z=.h z=.h z=.h

x=2000h, x=00FEh, x=FE00h, x=0081h, x=8100h,

y=FC00h, y=00FCh, y=FC00h, y=00C2h, y=C200h,

z=.h z=.h z=.h z=.h z=.h

Catat hasil penjumlahan dan kondisi flag S, Z, P/V dan C 3) Penjumlahan dua bilangan 32-bit
bilangan bilangan hasil penjumlahan x= (1A03h-1A02h-1A01h-1A00h) y= (1A07h-1A06h-1A05h-1A04h) z= (1A0Bh-1A0Ah-1A09h-1A08h)

Menggunakan program dibawah ini:


ORG LD LD AND LOOP= LD ADC LD INC DEC JP RST 1800 B, 4h IX, 1A00h A A, (IX+00) A, (IX+4) (IX+8), A IX B NZ, LOOP 38h

Catat hasilnya dan kondisi flag S, Z, P/V dan C untuk bilangan-bilangan: x=. x=. x=. x=. B. Pengurangan 1) Tulis program untuk pengurangan dua bilangan 8-bit.
bilangan bilangan hasil penjumlahan x= (1900h) y= (1901h) z= (1902h)

y=. y=. y=. y=.

untuk: x=08h, y=05h, z=.h

x=05h, x=80h, x=50h,

y=08h, y=50h, y=80h,

z=.h z=.h z=.h

Catat hasil pengurangan dan kondisi flag S, Z, P/V dan C. 2) Tulis program untuk pengurangan dua bilangan 16-bit.
bilangan bilangan hasil penjumlahan x= (1901h-1900h) y= (1903h-1902h) z= (1905h-1904h)

Catat hasil pengurangan dan kondisi flag S, Z, P/V dan C. x=8080h, x= h, x= h, x= 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 LD LD LD ADD RLCA JR ADD DJNZ RST B, 8 D, 0 H, D L, D HL, HL NC, LOOP2 HL, DE LOOP1

y=5050h, y= h, y= h, y= h,

z=.h z=.h z=.h z=.h

LOOP1

LOOP2

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 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.

You might also like