Laporan Mikroprosesor
Laporan Mikroprosesor
Laporan Mikroprosesor
Oleh :
Nama : M. Fachroel Achyar (021500440)
Rekan kerja : Lasmarito Panggabean (021500439)
M. Ramli Pratama (021500441)
Prodi : Elektronika Instrumentasi
Jurusan : Teknofisika Nuklir
I. TUJUAN
1. Membiasakan pemakaian instruksi aritmatik dan instruksi operasi Logik.
2. Menjelaskan tentang mode pengalamatan memori.
3. Menjelaskan tentang status flag (bendera).
4. Latihan menyusun data untuk register-register CPU dan bagian memori.
II. TEORI
1. Instruksi Aritmatik 8 bit dan instruksi Operasi Logik.
Instruksi aritmatik 8 bit dan operasi-operasi logik dalam CPU Z80 dilaksanakan pada
register A (Accumulator). Register-register A, B, C, D, E, H dan L dapat digunakan sebagai
operand bersama-sama dengan register A pada instruksi LD. Jika data dipindahkan antara memori
dan register A, alamat memori dapat ditunjukkan oleh register-register HL, IX atau IY. Berikut ini
terdapat instruksi aritmatik dan instruksi operasi logik beserta artinya :
a) ADD A : Data pada register A ditambahkan pada register A sendiri, artinya data
di dua kalikan atau isi register digeser kekiri 1 bit.
b) ADC B : Isi register B bersama dengan carry Flag ditambahkan pada register A.
c) SUB C : Data pada register A dikurangi dengan data pada register C.
d) SBC (HL) : Isi register A dikurangi dengan isi memori yang alamatnya ditunjuk oleh
HL, dikurangi lagi dengan Carry Flag.
e) AND D : Operasi AND logik antara register D dan register A.
f) OR 0FH : Operasi OR logik antara data 0FH dan register A.
g) XOR A : Operasi Exclusive-OR antara register A dengan dirinya sendiri, karena
register A sama dengan register A maka hasilnya pasti nol.
h) INC H : Menambah isi register H dengan 1 (increment).
i) INC (IX) : Menambah isi memori pada alamat yang ditunjuk oleh IX dengan 1.
j) DEC C : Mengurangi isi register C dengan 1 (decrement).
k) DEC (IY+3) : Hasil penjumlahan dari isi register IY dan 3 dipakai sebagai penunjuk alamat. Isi
memori pada alamat yang ditunjuk oleh IY+3 dikurangi dengan 1.
III. PERCOBAAN-PERCOBAAN
1. Program berikut dapat dipakai untuk menjumlahkan isi register D dan isi register E
bersama- sama. Hasilnya disimpan pada pasangan register HL. Masukkan program ini
pada uPF-1 dan kemudian jalankan serta catat hasilnya.
OPCODE Operand Keterangan
ORG 1800H Alamat awal 1800H
LD A,E Isi reg A dengan isi reg E
ADD A, D Tambahkan isi reg D ke reg A
LD L,A Masukkan isi reg A ke reg L
LD A, 0 Isi reg A dengan nol
ADC A,0 Jumlahkan isi reg A dgn 0 dan Cy
LD H,A Masukkan isi reg A ke reg H
RST 38H Kembali ke monitor
2. Program berikut ini dapat dipakai untuk menjumlahkan data 16 bit di memori pada alamat
1A00H 1A01H pada data 16 bit yang ada pada pasangan register DE dan hasilnya
disimpan pada pasangan register HL. Masukkan program pada uPF-1 dan diskusikan hasil
yang didapat.
OPCODE Operand Keterangan
ORG 1800H Alamat awal 1800H
LD A, (1A00H) Isi reg A dgn data di alamat 1A00H
ADD A, E Tambahkan isi reg E ke reg A
LD L,A Masukkan isi reg A ke reg L
LD A, (1A01H) Isi reg A dgn data di alamat 1A01H
ADC A,D Jumlahkan isi reg A dgn reg D & Cy
LD H,A Masukkan isi reg A ke reg H
RST 38H Kembali ke monitor
Nilai Preset Hasil pelaksanaan program
Memory Register Register Flag
(1A01H) (1A00H) DE HL Sign Zero P/V Carry
.. .. .. .. .. .. .. .. .. .. .. ..
.. .. .. .. .. .. .. .. .. .. .. ..
5. Jika instruksi ADC A, (IX+4) diganti dengan SBC A, (IX+4), prgram diatas dapat digunakan
untuk operasi pengurangan. Jika instruksi DAA diselipkan setelah instruksi ADC atau SBC,
program tersebut akan menjadi program untuk penjumlahan atau pengurangan desimal.
Masukkan program yang telah diubah ke uPF-1 dan periksalah hasilny
IV. DATA DAN HASIL PERCOBAAN
1. Program berikut dapat dipakai untuk menjumlahkan isi register D dan isi register E bersama-
sama. Hasilnya disimpan pada pasangan register HL. Masukkan program ini pada uPF-1 dan
kemudian jalankan serta catat hasilnya.
OPCODE Operand Keterangan
ORG 1800H Alamat awal 1800H
LD A,E Isi reg A dengan isi reg E
Tambahkan isi reg D ke reg
ADD A, D A
LD L,A Masukkan isi reg A ke reg L
LD A, 0 Isi reg A dengan nol
ADC A,0 Jumlahkan isi reg A dgn 0 dan Cy
Masukkan isi reg A ke reg
LD H,A H
RST 38H Kembali ke monitor
Hasil pelaksanaan
Nilai Preset program
Namun sebelumnya pada percobaan ini terlebih dilakukan perhitungan manual untuk
mengetahui nilai dari register HL. Berikut adalah perhitungan manualnya:
5A 0101 1010
A6 1010 0110
maka diperoleh hasil penjumlahannya 0000 0000. Kemudian dari hasil pelaksanaan program
didapatkan flag register (reg F) yaitu 00H dengan status flag bahwa sign flag menyatakan hasil
operasi aritmatika sebelumnya bertanda positif (b7=0), zero=0 menunjukkan hasil operasi
aritmatika sebelumnya bernilai tidak nol, P/V = 0 menunjukkan bahwa hasil operasi aritmetika
sebelumnya adalah peritas ganjil atau tidak terjadi overflow, dan tidak menghasilkan carry
pada operasi sebelumnya.
Kemudian, pengambilan data yang kedua adalah sama seperti yang pertama. Untuk
perhitungan manual adalah sebagai berikut:
77 0111 0111
45 0100 0101
maka diperoleh hasil penjumlahannya 1101 1100 yang apabila dikonversikan ke bilangan hexa
akan diperoleh DC.
Namun sebelumnya pada percobaan ini terlebih dilakukan perhitungan manual untuk
mengetahui nilai dari register HL. Berikut adalah perhitungan manualnya:
maka diperoleh hasil penjumlahannya = 1011 1110 1001 1100 yang apabila dikonversikan ke
bilangan hexa akan diperoleh BE9C.
Dari perhitungan manual dan perhitungan pada percobaan mikroprosesor yang telah
dilakukan dapat disimpulkan bahwa hasil akhir yang diperoleh adalah sama.
Kemudian pada data 2, sama seperti data 1 dilakukan perhitungan manual untuk
mengetahui nilai dari register HL. Berikut adalah perhitngan manualnya:
maka diperoleh hasil penjumlahannya = 1110 1010 1101 0001 yang apabila
dikonversikan ke bilangan hexa akan diperoleh EAD1.
Isikan data pada alamat 1A0H dan 1A00H dengan data A6H dan 5AH dan register DE
diisi 4477 sehingga diperoleh data pada register HL yaitu EAD1 kemudian dapat dilihat pada
register F yang diperoleh A8 yang dibinerkan menjadi 1010 1000 sehingga diperoleh status
flag sebagai berikut: Sign=1, Zero=0, P/V=0, Carry=0 .
Dari perhitungan manual dan perhitungan pada percobaan mikroprosesor yang telah
dilakukan dapat disimpulkan bahwa hasil akhir yang diperoleh adalah sama.
maka dengan dicomplement terlebih dahulu diperoleh hasil pengurangannya = 0010 1111 1110
1110 yang apabila dikonversikan ke bilangan hexa akan diperoleh 2FEE.
Dari perhitungan manual dan perhitungan pada percobaan mikroprosesor yang telah
dilakukan dapat disimpulkan bahwa hasil akhir yang diperoleh adalah sama.
Kemudian pada data 2, sama seperti data 1 dilakukan perhitungan manual untuk
mengetahui nilai dari register HL pada operasi pengurangan. Berikut adalah perhitungan
manualnya:
maka dengan dicomplement terlebih dahulu diperoleh hasil pengurangannya = 0110 0111 0011
0101 yang apabila dikonversikan ke bilangan hexa akan diperoleh 6735.
Dari perhitungan manual dan perhitungan pada percobaan mikroprosesor yang telah
dilakukan dapat disimpulkan bahwa hasil akhir yang diperoleh adalah sama.
Kemudian hasil penjumlahan dari keduanya diperoleh 0101 0101 0011 0100 1001 1010
0101 0111 dan kemudian diubah menjadi heksadesimal yaitu 55 34 9A 57.
Selanjutnya, perhitungan ini dilakukan pada mikroprosesor Z80. Pada saat di
program hasil sudah dalam bentuk hexadecimal. Dimana pada alamat 1A03H-1A00H diisi
data 10 00 77 45 dan pada alamt 1A07H-1A04H diisi data 45 34 23 12 dan hasil penjumlahan
tertera pada alamat 1A0B-1A08H yaitu 55 34 9A 57 dan kemudian di register F sehingga
diperoleh sign=0, zero=1, P/V=0 dan carry=0.
Dari perhitungan manual dan perhitungan secara praktikum diatas diperoleh hasil
yang sama.
Untuk percobaan kedua sama saja, yaitu dengan melakukan percobaan pada
perhitungan manual dan perhitungan secara praktek.
Untuk perhitungan manual terlebih dahulu dibinerkan, dan diperoleh hasil sebagai
berikut:
Kemudian hasil penjumlahan dari keduanya diperoleh 0101 0101 0100 0011 1010 1001
0111 0101 dan kemudian diubah menjadi heksadesimal yaitu 55 43 A9 75.
Dari perhitungan manual dan perhitungan secara praktikum diatas diperoleh hasil
yang sama.
Dengan dicomplement terlebih dahulu maka hasil dari keduanya diperoleh 0100 0001 0000
0000 0010 0000 0100 0011 dan kemudian diubah menjadi heksadesimal yaitu 41 00 20 43.
Selanjutnya, perhitungan ini dilakukan pada mikroprosesor Z80 dan diperoleh hasil
yang sa ma yaitu 41 00 20 43. Selanjutnya diregister F sehingga diperoleh sign=0, zero=1,
P/V=0 dan carry=0.
Dengan cara dicomplement terlebih dahulu maka hasil pengurangan dari keduanya
diperoleh 0001 0001 0000 0010 0011 0000 0000 0010 dan kemudian diubah menjadi
heksadesimal yaitu 11 02 30 02.
Selanjutnya, perhitungan ini dilakukan pada mikroprosesor Z80 dan diperoleh hasil
yang sama yaitu 11 02 30 02. Selanjutnya diregister F sehingga diperoleh sign=0, zero=1,
P/V=0 dan carry=0.
Dari kedua perhitungan manual dan perhitungan secara praktek terbukti hasil keduanya
sama.
1. Praktikan dapat terbiasa dalam pemakaian instruksi aritmatik dan isntruksi operasi logik:
Operasi aritmatik pada saat penjumlahan menggunakan instruki ADD dan ADC,
sedangankan operasi aritmatik pengurangan menggunakan instruksi SUB dan SBC.
2. Praktikan dapat menjelaskan tentang mode pengalamatan memori
Operasi aritmatik 8 bit menggunakan 2 buah register yakni register DE sebagai input
data dan register HL sebagai output/penyimpan hasil operasi aritmatik (register H
berfungsi menyimpan carry).
Operasi aritmatik 16 bit menggunakan 2 alamat sebagai penyimpan data yang akan
dioperasikan dan 2 buah register (register DE menyimpan data yang akan
dioperasikan, register HL sebagai penyimpan hasil operasi aritmatik).