Anda di halaman 1dari 9

Laporan Sementara

MK. Praktik Teknik Kendali

PERCOBAAN II

INSTRUKSI ARITHMETIK DAN OPERASI LOGIK

Oleh :

PARIDA
1925040008
S1

JURUSAN PENDIDIKAN TEKNIK ELEKTRONIKA


FAKULTAS TEKNIK
UNIVERSITAS NEGERI MAKASSA
2021
PERCOBAAN II

INSTRUKSI ARITHMETIK DAN OPERASI LOGIK

Tanggal Percobaan : 01 Maret 2021

A. Tujuan Percobaan
1. Membiasakan para pemakai dengan instruksi arithmetik dan isntruksi
operasi logik.
2. Menjelaskan tentang mode addressing memory.
3. Menjelaskan tentang status flag
4. Menyusun data untuk register-register CPU dan bahan memory

B. Teori Dasar
1. Instruksi Arithmetik 8 bit dan instruksi operasi logic
Instruksi arithmetik 8 bit dan operasi-operasi logik dalam CPU Z80
dilaksanakan pada register A (Acumulator). Register-register A, B, C, D,
E, H, dan L dapat digunakan sebagai operand bersama-sama dengan
register A pada instruksi-instruksi LD. Jika data ditransfer antara memory
dan register A, address memory dapat ditunjukkan oleh register-register
HL, IX, atau IY. Dibawah ini terdapat instruksi arithmetik dan instruksi
operasi logik veserta artinya.

ADD A ; data pada register A ditambahkan pada register A


sendiri, artinya data diduakalikan atau digeser ke kiri 1
bit

ADC B ; Isi register B bersama dengan Carry Flag ditambahkan


pada register A.

SUB C ; Data pada register A dikurangi dengan data pada


register C

SBC (HL); Isi register A dikurangi dengan isi memory yang


addresnya ditunjuk oleh HL, dikurangi lagi dengan
carry flag.

AND D ; Operasi AND logik antara register D dan register A

OR OFH; Operasi OR logik antara data OFH dan register A.

XOR A ; Operasi OR-exclusive antara register A dengan dirinya


sendiri. (karena register A sama dengan register A,
maka hasilya pasti nol).

NC H ; Menambah isi register H dengan 1 (increment).

INC (IX) ; Menambah isi memory pada address yang ditunjuk


oleh IX dengan 1.

DEC C ; Mengurangi isi register C dengan 1 (decrement)

DEC (1Y+3) Hasil penjumlahan dari isi register 1Y dan 3 diapakai


; sebagai penunjuk address pada memmory. Isi memory
pada address yang ditunjuk oleh IY+3 dikurangi
dengan 1

2. Mode Addressing Data


Pada instruksi-instruksi bahasa assembly diatas, mode addressing
yang dipakai dapat diringkas seperti dibawah ini. Mode addressing
yang dapat dilihat pada ‘Z80 CPU technical manual’.
 Addressing Register
Contoh : pada instruksi ADC A,B. ADC adalah opcode yang
menyatakan operasi macam apa yang akan dilaksanakan. Huruf A
di sebelah kanan menyatakan bahwa data akan ditambahkan
keregister A. Huruf B disebelah kanan huruf A menyatakan bahwa
data yang akan ditambahkan ke A diambil dari register B.

 Addressing Register tidak langsung


Suatu register 16 bit digunakan untuk menyimpan address
memory. Contoh : pada instruksi SBC A, (HL), bukan berarti
bahwa register A dikurangi HL (perhatikan bahwa HL berada di
dalam tanda kurung). Tetapi CPU akan melihat data 16 bit yang
terdapat pada HL sebagai address memory, lalu memeriksa data 8
bit yang tersimpan di memory pada address tersebut. Kemudian
register A dikurangi dengan data 8 bit yang ditunjuk oleh HL
tersebut.
IX dan IY disebut register-register indeks. Bila suatu
address pada memory ditunjuk oleh IX atau IY, suatu data 8 bit
yang kurang dari +127 tetapi lebih dari -128 dapat ditambahkan
dapat ditambahkan pada register ini.
Data instruksi berikut ini dapat digunakan untuk menambah
data yang tersimpan dalam memory yang addressnya ditunjukkan
dengan IX+2. hasilnya disimpan dalam register A.
LD A, (IX)
ADD A, (IX+2)
 Address langsung
Contoh: OR OFH. Disebelah kanan opcode OR, terdapat
bilangan OFH. Hal ini berarti bahwa bilangan OFH maupun dan
juga programnya disimpan di memory. Cpu mengambil data
dengan melihat PC (program counter atau penghitung Program)
sebagai address rujukan. Contoh-contoh di bawah ini juga
merupakan addressing lansung:
LD b, 8
ADD A, 44H
SUB A, 0A4H

 Status Flag
Setelah suatu operasi logik atau arithmetik selesai
dilaksanakan, hasilnya akan disimpan pada register A dan beberapa
status flag (Carry, overflow, change Sign, Yero result, Parity) juga
akan terpengaruh. Status flag ini akan disimpan dalam flip-flop di
CPU z8. flip-flop ini membentuk suatu register yang disebut flag
register. Data pada register ii dapat dipindahkan ke memory seperti
juga data pada register-register lain, dengan menggunakan
instruksi-instruksi khusus (instruksi PUSH). Beberapa status flag
diterangkan di bawah ini
a. Carry Flag
Carry flag ini akan berada dalamm keadaan set (1) bila
dalam operassi penjumlahan yang tidak diberi tanda (+ atau -)
hasil yang didapat lebih besar daripada bilangan 8 bit. Flag ini juga
berada dalam keadaan set apabila dalam operasi pengurangan,
terjadi peminjaman. Carry flag juga digunakan sebagai suatu syarat
untuk instruksi-instruksi ‘jump’, ‘call’, atau ‘return’. Flag ini juga
berfungsi sebagai penghubung yang penting dalaam operasi-operasi
arithmetik yang menggunakan lebih dari 1 byte. Tiga buah data 8
bit dapat dihubungkan sebagaai suatu data 24 bit dengan
menggunakan flag carry, empat data 8 bit dapat jugaa dihubungkan
sebagai data 32 bit.
b. Verlow / Parity Flag
Pada operasi arithmetik komplemen ke-dua yang
menggunakan tanda (dapat positif atau negatif), maka flag ini
berfungsi sebagai oferlow flag. Oferlow flag dalam Z80
menyatakan bahwa bilangan komplemen ke-dua yang bertanda
pada accumulator telah melebihi kapasitaas maximum (+127) atau
kurang dari kapasitas minimum (-128).
Ketika suatu operasi arithmetik dilaksanakan di dlam CPU
Z80, bilangan pada regoster A dapat dianggapp sebagaai data yang
tidak diberi tanda ( sampai 255) atau data yang bertanda (-123
sampai +127). Dengan demikian, baik carry flag maupun oferlow
flag dapat dpengaruhi oleh operasi arithmetik. Programmerlah yang
menetukan interpretasi mana yang diinginkan. Berikut ini ada;lah
operasi arithmetik dengan keterangan di sebelah kanannya.
Tabel 2.2
Operasi Arithmetik

10101100 Bilangan tak bertanda 172 atau


bilangan bertanda -84

+) 11101000 Bilangan bertanda 232 atau


bilangan bertanda -24

1 10010100 Bilangan bertanda 148, Carry


flag= atau bilangan bertanda
-108 dengan overflow flag=0

01001010 Bilangan tak bertanda 74


bertanda atau tidak.

+) 01000010 Bilangan 66 bertanda atau tidak.

0 10001100 Bilangan 140 tak bertanda,


dengan carry flag=0, atau
bilangan bertanda 116 dengan
overflow flag= hasilnya menjadi
negarif.

Untuk operasi logik pada CPU Z80, flag ini =”1” bila hasil paritiy
8 bit di accumulator adalah genap. Flag ini sangat berguna dalam
memeriksa transmisi data. Karena carry dan overflow tidak akan
terjadi ddalam operasi-operasi logik, status paritiy dan overflow
dapat disimpan dalam flip-flop yang sama. Flip=flop ini disebut
P/V flag. Dengan memeriksa flip-flop ini, programmer dapat
memeriksa overflow setelah operasi-operasi arithmetik dan
memeriksa parity setelah operasi-operasi logik.
c. Zero (Nol) Flag
Jika register A sama dengan nol (zero) setelah operasi logik
atau arithmetik, dengan keadaan atau status ini akan dicatat di
dalam flip-flop yang disebut zero flag. Zero flag dapat digunakan
sebagai syarat untuk instruksi=instruksi percabangan, juga sangat
berguna dalam program ‘loop’.
d. Sign (tanda ) Flag
Jika bit yang paling kiri (bit 7) dari register A adalah 1
setelah operasi logik atau arithmetik, bilangan pada register A
diinterpretasikan sebagai bilangan negatif. Sign flag ini akan di-set
menjadi 1. flag ini akan diabaikan bila programmer telah
menunjuk datanya sebagai bilangan-bilangan tanpa tanda.
Flag-flag lain yang diraancang untuk arithmetik BCD
tidaklah penting bagi programmer. Format register yang dibentuk
oleh flag-flag ini terlihat seperti di bawah ini :

S Z P/V C

Sign Zero Parity atau Carry


Overflow

Pada mikrokomputer, isi flag register biasanya dinyatakann dengan


dua digit hexadesimal. Pemakai harus menyatakan data dua digit ini
dengan suatu bilangan biner 8 bit. Dengan melihat format flag rgister
pemakai dapat memperoleh status flag. Misalnya, jika flag register
adalah 3CH, sign flag menytakan positif, nilai tidak nol, paritiy
genap, atau terjadi overflow tapi tidak ada carry. Untuk mengetahui
flag mana yang akan terpengaruh oleh suatu instruksi, pemakai harus
melihat pada appendiks C “Rujukan pemrograman CPU Z80”. Tidak
semua instruksi mempengaruhi status flag.
C. Alat dan Bahan
1. Adaptor 12 V 1 buah
2. Trainer Mikroprosessor 1 buah
3. Modul Mikroprosessor 1 buah

D. Langkah Percobaan
Percobaan berikut ini dapat dipakai untuk menjumlahkan isi
register D dan isi register E bersama-sama. Hasilnya akan disimpan
pada register HL. Masukkan program ini pada GMS-I dan kemudian
jalankan. Adapun langkah kerjanya adalah sebagai berikut :
 Mencari object code tersebut (address awal 1800 H)
 Lakukan pengisian pada register DE sesuai data pada tabel.
Dengan mereset terlebih dahulu data yang telah dimasukkan.
Kemudian tekan reg diikuti dengan menekan tombol DE.
 Periksa isi register HL dengan menekan tombol reg. HL.
 Catat hasil percobaan pada tabel 1. kemudian periksa register flag
dengan menekan reg kemudian diikuti .PNC untuk register low
(FL) dan reg SZH untuk register High (FH) masukkan hasilnya
pada tabel 1.
 Analisa hasil percobaan dan buatlah kesimpulan.
E. Program Percobaan

Addres Bahasa Bahasa keterangan


memory mesin assembly
1800H 7B LD A ,E Isi data E di reg A
1801H 82 ADD A,D Data pada register A ditambahkan
pada register D
1802H 6F LD L,A Isi data A di reg L
1803H 3E LD A ,0 Isi data 0 di reg A
1804H CE ADC A,0 Isi register A bersama dengan carry
flag ditambahkan pada register
1805H 67 LD H ,A Isi data A di reg H
1806H FF RST 38 H

Anda mungkin juga menyukai