Anda di halaman 1dari 14

HALAMAN PENGESAHAN

Judul Percobaan

: Instruksi Dasar Aritmatika dan Operasi Logika

No Praktikum

: 02

Nama Pratikan

: Sayyid Al Fuad

No BP

: 1301041028

Kelas/ Kelompok

: 2 B EC / 11

Partner

: Naufal Ichsan

Pembimbing

: 1. Era Madona,SST.M.Sc
2. Muhamad Irmansyah, ST.MT.

Tanggal Praktikum

: 23 Maret 2015

Tanggal Penyerahan

: 30 Maret 2015

Keterangan

Nilai

KATA PENGANTAR

Puji dan syukur penulis ucapkan atas rahmat dan karunia yang diberikan oleh Allah SWT,
sehingga penulis dalam keadaan sehat wal afiat sehingga dapat menyelesaikan laporan
mikroprosesor ini dengan baik dan tepat pada waktunya.
Dalam penyusunan dan penulisan laporan ini masih banyak kekurangan dan kesalahan
dikarenakan kuranganya informasi dan ilmu dalam bidang maintenance. Namun laporan ini
dapat selesai karena bantuan dari beberapa pihak. Oleh karena itu penulis ingin mengucapkan
terimakasih yang sebesar-besarya kepada :
l. Bapak Muhamad Irmansyah, ST.MT. dan Ibuk Era Madona,SST.M.Sc selaku dosen
pembimbing di mata kuliah Mikroprosesor dan Interface.
2. Teman kelompok yang telah mau saling berbagi pengalaman dan saling membantu
dalam praktek di mata kuliah Mikroprosesor dan Interface.
Penulis mengharapakan kritik dan saran yang bersifat membangun demi kelancaran dan
kesempurnaan dalam penyusanan dan penulisan laporan selanjutnya.
Penulis berharap laporan nantinya tidak hanya sebagai pelengkap dari nilai mata kuliah
yang bersangkutan, tetapi juga dapat digunakan sebagai sumber informasi dan ilmu bagi
pembaca, terutama bagi penulis sendiri. Akhir kata penulis minta maaf apabila ada kata-kata
yang kurang berkenan.

Padang, 15 Maret 2015


Penulis

Sayyid Al Fuad

DAFTAR ISI

LEMBAR PENGESAHAN i
DAFTAR ISI ... ii
KATA PENGHANTAR iii
BAB I PENDAHULUAN
1.1 Tujuan Percobaan....................................................................................1
1.2 Landasan Teori........................................................................................1
BAB II PERCOBAAN
2.1 Langkah Kerja ........................................................................................6
2.2 Membuat Program ...................................................................................7
BAB III HASIL PERCOBAAN
3.1 Data Hasil Percobaan..............................................................................9
3.2 Analisa Data .............................................................................................9
BAB IV PENUTUP
4.3 Kesimpulan..............................................................................................12
4.4 Saran..........................................................................................................12
DAFTARPUSTAKA ..13

BAB I
PENDAHULUAN

1.1.

Tujuan
Membiasakan para pemakai dengan instruksi aritmatika dan operasi logika.
Menjelaskan tentang mode pengelamatan memori.
Latihan menyusun data untk register-register CPU dan bagian memori.

1.2. Landasan Teori


a. Instruksi aritmatika 8 bit dan instruksi operasi logika.
Instruksi aritmatika 8 bit dan operasi-operasi logika dalam CPU Z80 dilandaskan
pada register A (acculumator). Register-register A,B,C,D,E,H dan L dapat digunakan
sebagai operand bersama-bersama dengan register A pada instruksi-instruksi LD. Jika data
ditransfer antara memori dan register A, alamat memori dapat ditunjukkan oleh registerregister HL, IX, IY. Dibawah ini terdapat instruksi aritmatika dan instruksi operasi logika
beserta artinya :
ADD A

: Data pada register A ditambahkan pada register A sendiri,


Artinya data diduakalikan atau digeser ke kiri satu 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 memori yang alamatnya
Ditunkukkan ileh HL, dikurangi lagi dengan carry flag.
AND D
: Operasi logika AND antara register D dengan register A.
OR 0FH
: Operasi logika OR antara data 0FH dengan register A.
XOR A
: Operasi Exclusive-OR antara register A dengan dirinya sendiri
INC H
: Menambah isi register H dengan 1.
INC (IX)
: Menambah isi memori pada alamat yang ditunjukkan oleh IX
dengan 1.
DEC C
: Mengurangi isi register C dengan 1.
DEC (IY+3) : Hasil penjumlahan isi register IY dan tiga dipakai sebagai
penunjuk alamat pada memori. Isi memori pada alamat yang
ditunjukkan oleh IY+3 dikurangi dengan 1.

b. Metode pengelamatan data.

Pada instruksi-instruksi bahasa assembly diatas, mode pengelamatan yang dipakai


dapat diringkas seperti dibawah ini. Mode pengelamatan yang lain dapat dilihat bahwa Z80
CPU technical manual.
Pengelamatan Register.
Contoh : pada instruksi ACD A,B,ADC adalah opcode yang menyatakan operasi
macam apa yang akan dilaksanakan. Huruf A disebelah kanan menyatakan
bahwa a=data akan ditambahkan ke register A. Huruf B disebelah kanan huruf A
yang menyatakan bahwa data ditambahkan ke A diambil dari register A.
Pengelamatan register tak langsung.
Suatu register 16 bit digunakan untuk menyimpan alamat memori.
Contoh : pada instruksi SBC A,(HL), bukan berarti bahwa register A dikurangi
isi register HL. Tetapu CPU akan melihat data 16 bit yang terdapat pada HL
sebagai alamat memori, lalu memeriksa data 8bit yang tersimpan di memori
pada alamat yang alamtnya ditunjukkan dengan IX+2. Hasilnya disimpan dalam
register A.
LD
A,(IX)
ADD
A,(IX+2)
Pengelamatan langsung.
Contoh : OR 0FH. Disebelah kanan op-code OR, terdapat bilangan 0FH. Hal ini
berarti bahwa bilangan 0FH di OR kan secara logika dengan register A. Baik
data 0FH maupun juga programnya disimpan di memori. CPU mengambil data
dengan melihat PC sebagai alamat rujukan. Contoh-contoh dibawah ini juga
merupakan pengelamatan langsung.
LD
ADD
SUB

B,8
A,44H
A,0A4H

c. Status flag.
Setelah suatu operasi logika atau arithmatika selesai dilaksanakan, hasilnya akan
disimpan pada register A dan beberapa status flag (carry, overflow, chage sign, zero result,
parity) juga akan terpengaruh. Status flag ini akan disimpan dalam flip-flop di CPU Z80.
Flip-flop ini membentuk suatu register yang disebut flag register. Data pada register ini
dapat dipindahkan ke memori seperti juga register-register lain dengan menggunakan
instruksi-instruksi khusus (instruksi PUSH). Beberapa status flag diterangkan dibawah ini :
Carry flag.

Carry flag ini akan berada dalam keadaan set (1) bila dalam operasi
penjumlahan yang tidak diberi tanda (+ atau -) hasil yang didapat lebih besar
daripada dalam operasi pengurangan, terjadi dalam keadaan set apabila dalam
operasi pengurangan, terjadi peminjaman. Carry flag juga digunakan sebagai
suatu syarat untuk instruksi-instruksi jam, call, atau atau return. Flag ini
juga berfungsi sebagai penghubung dalam operasi-operasi aritmatika yang
digunakan lebih dari 1 bit. Tiga buah data 8 bit dapat dihubungkan dengan suatu
data 24 bit dengan menggunakan flag carry, 4 data 8 bit juga dihubungkan
sebagai data 32 bit.
Over flow atau Parity flag.
Pada operasi aritmatika komplemen kedua yang menggunakan data ( dapat +
maupun -) maka flag ini berfungsi sebagai overflow flag. Overflow flag dalam
Z80 menyatakan bahwa bilangan komplemen kedua bertanda pada accumulator
telah melebihi kapasitas maksimum (+127) atau kurang dari kapasitas minimum
(-128).
Ketika suat operasi aritmatika dilakukan didalam CPU Z80, bilangan pada
register A dapat dianggap sebagai data yang tidak diberi tanda (0 sampai 255)
atau data yang bertanda (-128 sampai +127). Dengan demikian baik carry flag
maupun overflow flag dapat dipengaruhi oleh operasi aritmatika dengan
keterangan disebelah kananya.
10101100
bilangan tak bertanda 172 atau bilangan bertanda -84.
+

11101000

bilangan tak bertanda 232 atau bilangan bertanda -24.

-----------10010100

bilangan tak bertanda 184, carry flag = 1 atau


bilangan bertanda -180 dengan overflow flag = 0.

01001010

bilangan 74 bertanda atau tidak.

01000010

bilangan 66 bertanda atau tidak.

-----------1

10001100

bilangan 140 tak bertanda, dengan carry flag = 0,

atau bilangan bertanda -166 dengan overflow flag =


-1, hasilnya menjadi negative.
Untuk operasi logika pada CPU Z80, flag ini = 1 bila hasil parity 8 bit pada
accumulator adalah genap. Flag ini sangat berguna untuk transmisi data. Karna
carry dan overflow tidak akan terjadi dalam operasi logika.. status parity dan
overflow dapat disimpan dalam flip-flop yang sama. Flip-flop disebut P/V flag.
Dengan memeriksa parity ini programmer dapat memeriksa overflow setelah
operasi-operasi aritmatika dan memriksa parity setelah operasi-operasi logika.
Zero flag
Jika register A sama dengan 0 setelah operasi logika atau aritmatika, keadaan
atau status ini akan dicatat dalam flip-flop yang disebut zero flag. Zero flag
dapat digunakan sebagai sarat untuk instruksi-instruksi bercabang, juga berguna
dalam pembuatan LOOP.

Sign flag
Jika bit yang paling kiri (bit 7) dari register A adalah satu setelah operasi logika
atau aritmatika, bilangan pada register A di interprestasikan sebagai bilangan
negative. Sign flag ini akan diset menjadi satu. Flag ini akan diabaikan bila
programmer telah menunjuk datanya sebagai bilangan-bilangan tanpa ada.
Flag-flag lain
Flag-flag lain yang dirancang untuk operasi aritmatika BCD tidak lah penting
bagi programmer. Format register yang dibentuk oleh flag ini terlihat seperti
dibawah ini.

S
Sign

Z
Zero

P/V
C
Parity/
Carry
Overflow
Pada mikrokomputer, isi flag register biasanya dinyatakan dengan dua digit
hexadecimal. Pemakai harus menyatakan data dua digit ini dengan suatu
bilangan bener delapan bit. Misalnya, jika flag register adalah 3CH, sign flag

menyatakan positif, nilai tidak nol, parity genap, atau terjadi overflow tapi tidak
ada carry.

BAB II
PERCOBAAN

2.1. Langkah Kerja


PERCOBAAN 1
1. Tulislah program bahasa assembly dan akhiri dengan instruksi terakhir RST 38H.
Instruksi ini akan mengambilkan control uPro-1 pada program monitor setelah
menjalankan seluruh program.
2. Dengan menggunakan table instruksi, terjemahkan program ke dalam bahasa
mesin dengan 1800H sebagai alamat awal. Tuliskan alamat yang sesuai untuk tiaptiap instruksi.
3. Siapkan mikrokomputer uPro-1. Catat data sebelum eksekusi dengan mengisi data
pada register/memori sesuai dengan nilai preset pada table.
4. Masukkan program dengan menekan tombol-tombol pada keyboard. Periksa
program yang tersimpan dalam memori.
5. Jalankan program (eksekusi), dengan menekan tombol ADDR dan tekan alamat
awal yang digunakan pada program (1800) kemudian tekan tombol GO.

6. Catatlah kembali data setelah eksekusi yang ada pada register dengan mengisi data
pada register/memori sesuai dengan tebel.
7. Bandingkanlah data pada register sebelum program dieksekusi dan seetelah
eksekusi. Periksalah apakah tiap-tiap register sudah benar. Bila masih ada
kesalahan, kemballilah pada langkah 1 dan periksa lagi.
8. Ulangi langkah 1 sampai 3 untuk percobaan II dan III.

2.2.

Membuat Program
a. Pertambahan (Percobaan 1).
D
E
A
A
L

Start
54
64
D
A+ E
A
Stop

Mnnemonic
LD D, 54
LD E, A6
LD A, D
ADD, A, E
LD L, A
RST-38

Op-Code
16 54
1E A6
7A
83
6F
FF

Alamat
1800 1801
1802 1803
1804
1805
1806
1807

Op-Code
16 FE
1E CE
7A
83
6F
FF

Alamat
1800 1801
1802 1803
1804
1805
1806
1807

b. Pertambahan (Percobaan 2).


D
E
A
A
L

Start
FE
CE
D
A+ E
A
Stop

Mnnemonic
LD D, FE
LD E, CE
LD A, D
ADD, A, E
LD L, A
RST-38

c. Pertambahan 16-bit dengan menggunakan memori (Percobaan 3).


Start
A
99
(1A00)
A
A
(1A00)
E
BC
A
A+ E
L
A

Mnemonic
LD A, 99
LD (1A00), A
LD A, (1A00)
LD E, BC
ADD A, E
LD L,A

Op-Code
3E 99
32 00 1A
3A 00 1A
1E BC
83
6F

Alamat
1800 1801
1802 1803 1804
1805 1806 1807
1808 1809
180A
180B

A
(1A01)
A
E
A
HL

FF
A
(1A01)
98
A+E+CY
A
Stop

LD A, FF
LD (1A01), A
LD A, (1A01)
LD E, 98
ADC A+E+CY
LD H,A
RST-38

3E FF
32 01 1A
3A 01 1A
1E 98
8B
67
FF

180C 180D
180E 180F
1810 1811
1812 1803
1804 1805
1806 1807
1808

d. Pertambahan 16-bit dengan menggunakan memori (Percobaan 4)


A
(1A00)
A
E
A
L
A
(1A01)
A
E
A
HL

Start
99
A
(1A00)
BC
A+ E
A
FF
A
(1A01)
98
A+E+CY
A
Stop

Mnemonic
LD (1A00), A
LD A, (1A00)
LD E, EF
ADD A, E
LD L,A
LD A, AF
LD (1A01), A
LD A, (1A01)
LD E, EC
ADC A+E+CY
LD H,A
RST-38

BAB III

Op-Code
3E FC
32 00 1A
3A 00 1A
1E EF
83
6F
3E AF
32 01 1A
3A 01 1A
1E EC
8B
67
FF

Alamat
1800 1801
1802 1803 1804
1805 1806 1807
1808 1809
180A
180B
180C 180D
180E 180F
1810 1811
1812 1803
1804 1805
1806 1807
1808

HASIL PERCOBAAN

3.1. Tabel Hasil Percobaan


Percobaan 1 dan 2
Nilai Preset
Register
D
E
54h
A6h
FEh
CEh

Register
HL
BC FA
BC CC

Hasil Pelaksanakan Program


Flag
Sign
Zero
P/V
1
1
0
1
0
0

Carry
0
1

Percobaan 3 dan 4
Nilai Preset
Memori
Register
(1A01
(1A00)
DE
)
FFh
99h
98 BC
AEh
FCh
EC EF

Register
HL
98 55
9C EB

Hasil Pelaksanakan Program


Flag
Sign
Zero
P/V
1
1

0
0

0
0

Carry
1
1

3.2. Analisa Data


Percobaan 1 dan 2 adalah pertambahan suatu isi register dengan isi register. Register
yang ditambah adalah register D dengan E. Namun, karena dalam Instruction Set tidak ada
instruksi untuk menambah D dengan E, maka kita akali sedikit dengan memindahkan isi
register D ke register A, barulah kita melakukan operasi A + E karena operasi A + E ada
dalam Instruction Set Z-80. A + E tidak ada bedanya dengan D + E karena isi register A
sama dengan isi register D karena telah dipindahkan isinya. Mnemonic yang dipakai dalam
pertambahan adalah ADD. Hasil pada percobaan ini disimpan dalam register L.
Pada suatu penjumlahan, ada dua kemungkinan. Ada carry atau tidak. Cara untuk
mengetahui ada atau tidaknya Carry dalam suatu penjumlahan adalah dengan mengecek isi
dari register F, karena isi register F mewakili suatu penjumlahan tersebut terhadap Carry.
Karena isi dari suatu register dalam bentuk bilangan BCD, untuk menentukan ada atau
tidaknya Carry kita ubah formatnya kedalam bilangan Biner.
Berikut hasil Penjumlahan beserta Carry pada percobaan 1 dan 2

Percobaan 1 :
54h + A6h = FAh
Register F = A8h = 1010 1000
Sign
1

Zero
0

P/V
0

Carry
0

P/V
0

Carry
1

Percobaan 2
FEh + CE = CC
Register F = 99h = 1001 1001
Sign
1

Zero
0

Jika percobaan 1 dan 2 penjumlahan dilakukan dengan metode 8 bit, maka pada
percobaan 3 dan 4 secara 16-bit. Pada percobaan dengan metode 16-bit, digunakan bantuan
alamat untuk pengopersian suatu penjumlahan. Jika diteliti lebih lanjut, percobaan ini sama
saja dengan metode 8-bit namun dilakukan 2 kali dalam suatu waktu. Alamat dibutuhkan
karena pada penjumlahan 8-bit pertama (dimulai dari low bit) bisa terdapat Half Carry yang
akan mempengaruhi operasi penjumlahan 8-bit selanjutnya.
Operasi penjumlahan pertama disimpan sementara pada alamat 1A00, lalu operasi
kedua pada alamat 1A01. Pada opersi penjumlahan di 8-bit kedua, kita harus memasukkan
perintah tambahkan 1 (Carry) yang didapatkan dari hasil pertambahan di 8-bit pertama,
kedalam operasi pertambahan pada 8-bit yang kedua. Mnemonic yang digunakan untuk
menyertakan Half Carry adalah ADC.
Berikut hasil penjumlahan pada percobaan 3 dan 4 :

Percobaan 3 :
8-bit pertama = (1A00) = 99 + BC = 55 (terdapat Carry dan akan dimasukkan ke 1A01).
8-bit kedua = (1A01) = FF + 98 = 198 / 98 (1 adalah carry yang akan dimasukkan pada
1A02).
Jadi hasil penjumlahan dari : FF99 + 98BC adalah = 9855 (terdapat carry).

Percobaan 4 :

8-bit pertama = (1A00) = FC + EF = EB (terdapat Carry dan akan dimasukkan ke 1A01).


8-bit kedua = (1A01) = AF + EC = 19C / 9C (1 adalah carry yang akan dimasukkan pada
1A02).
Jadi hasil penjumlahan dari : AFFC + EFEC adalah = 9CEB (terdapat carry).
Kita cek register F untuk menentukan flagnya, karena pada percobaan 3 dan 4 isi
dari register F adalah sama-sama 99h dan jika diubah ke bilanga Biner menjadi 1001 1001
maka flagnya :

Sign
1

Zero
0

BAB IV
PENUTUP

4.1. Kesimpulan

P/V
0

Carry
1

a. Dalam pengoperasian penjumlahan, jika suatu instruksi tidak tersedia pada modul
maka kita harus memindahkan variabel tersebut kedalam instruksi yang tersedia.
b. Mnemonic untuk menambahkan suatu register dengan register lain adalah ADD.
c. Untuk mengetahui suatu penjumlahan terdapat Carry atau tidak adalah dengan
memeriksa register F lalu ubah hasilnya kedalam bentuk biner dan sesuaikan denga
flag-flag yang sudah ditentukan.
d. Dibutuhkan bantuan alamat untuk pengoprasian penjumlahan 16-bit
e. Pada penjumlahan 16-bit, pengoperasian penjumlahan dari 8-bit high harus
melibatkan Carry yang didapatkan dari pengopersian penjumlahan 8-bit high low jika
ada.
f. Mnemonic yang digunakan untuk melibatkan Carry dalam pengoperasian
penjumlahan 16-bit adalah ADC.
4.2. Saran
a. Berdoalah terlebih dahulu sebelum melakukan praktek.
b. Pakailah jas lab ketika memasuki labor.
c. Dengarkan instruksi dosen demi kelancaran dalam praktek.
d. Gunakan alat alat seusuai dengan fungsinya demi mencegah terjadinya kerusakan
alat.
e. Kembalikan alat alat dan rapikan meja kerja apabila telah selesai melakukan praktek.

DAFTAR PUSTAKA

JOBSHEET PRATIKUM LABORATORIUM MIKROPROSESOR DAN INTERFACE

Anda mungkin juga menyukai