Laporan Mikroprosesor

Unduh sebagai docx, pdf, atau txt
Unduh sebagai docx, pdf, atau txt
Anda di halaman 1dari 27

LAPORAN PRAKTIKUM MIKROPROSESOR

APLIKASI DASAR INSTRUKSI ARITMATIK DAN OPERASI LOGIK

Oleh :
Nama : M. Fachroel Achyar (021500440)
Rekan kerja : Lasmarito Panggabean (021500439)
M. Ramli Pratama (021500441)
Prodi : Elektronika Instrumentasi
Jurusan : Teknofisika Nuklir

SEKOLAH TINGGI TEKNOLOGI NUKLIR


BADAN TENAGA NUKLIR NASIONAL
YOGYAKARTA
2017
APLIKASI DASAR INSTRUKSI ARITMATIK DAN
OPERASI LOGIK

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.

2. Mode Pengalamatan Data.


Pada instruksi-instruksi bahasa rakitan diatas, mode pengalamatan yang dipakai dapat
diringkas seperti dibawah ini. Mode pengalamatan yang lain dapat dilihat pada Z80 CPU
Technical Manual.
2.1. Pengalamatan Register.
Contoh: Pada ADC A,B : ADC adalah opcode yang menyatakan operasi macam apa yang
akan dilaksanakan. Huruf A disebelah kanan menyatakan bahwa data akan
ditambahkan ke register A. Huruf B disebelah kanan huruf A menyatakan bahwa
data yang akan ditambahkan ke A diambil dari register B.
2.2. Pengalamatan Register tidak langsung.
Suatu register 16 bit digunakan untuk menyimpan alamat memori.
Contoh : Pada instruksi SBC A, (HL); bukan berarti bahwa register A dikurangi HL
(perhatikan bahwa HL berada didalam tanda kurung). Tetapi CPU akan melihat data
16 bit yang terdapat pada HL sebagai alamat memori, dan memeriksa data 8 bit
yang tersimpan di memori pada alamat tersebut. Kemudian register A dikurangi
dengan data 8 bit yang ditunjuk oleh HL tersebut. IX dan IY disebut register-register
index. Bila suatu alamat pada memori ditunjuk IX dan IY, suatu data 8 bit yang
kurang dari +127 tetapi lebih dari 128 dapat ditambahkan pada register ini.
Dua instruksi berikut ini dapat digunakan untuk menambah data yang tersimpan dalam
memori yang alamatnya ditunjukkan dengan IX + 2. Hasilnya disimpan dalam register A.
LD A, (IX)
ADD A, (IX+2)
2.3. Pengalamatan Langsung.
Contoh : OR 0FH.
Di sebelah kanan opcode OR, terdapat bilangan 0FH. Hal ini berarti bahwa bilangan 0FH
di OR kan secara Logik dengan isi register A. Baik data 0FH maupun programnya
disimpan dimemori. CPU mengambil data dengan melihat PC (progarm Counter) sebagai
alamat rujukan. Contoh-contoh dibawah ini juga merupakan pengalamatan langsung :
LD B, 8H
ADD A, 44H
SUB A, 0AH
3. Status Flag.
Setelah suatu operasi logik atau aritmatik selesai dilaksanakan, hasilnya akan disimpan pada
register A dan beberapa status Flag (Carry, Overflow, change 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 (Reg. F). Data pada register ini dapat dipindahkan ke
memori, seperti juga data register-register lain, dengan menggunakan instruksi- instruksi khusus
(instruksi PUSH). Beberapa status flag diterangkan dibawah ini.
3.1. Carry Flag.
Carry flag (biasa disingkat Cy) ini akan berada dalam keadaan set (1) bila dalam operasi
penjumlahan yang tidak diberi tanda (+ atau -) hasil yang didapat lebih besar dari 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 dalam
operasi-operasi aritmatik yang menggunakan lebih dari 1 byte. Tiga buah data 8 bit dapat
dihubungkan sebagai suatu data 24 bit dengan menggunakan carry flag, empat data 8 bit dapat
juga dihubungkan sebagai data 32 bit.
3.2. Overflow / Parity Flag.
Pada operasi aritmatik komplemen ke 2 yang menggunakan tanda (dapat positif atau
negatif), maka flag ini berfungsi sebagai overflow flag. Overflow flag dalam Z80
menyatakan bahwa bilangan komplemen ke dua yang bertanda pada accumulator telah
melebihi kapasitas maksimum (+127) atau kurang dari kapasitas minimum (-128). Ketika
suatu operasi aritmatik dilaksanakan 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 ataupun overflow flag dapat dipengaruhi
oleh operasi aritmatik. Berikut ini adalah operasi aritmatik dengan keterangan disebelah
kanannya.
10101100 : bilangan tak bertanda 172 atau bilangan bertanda 84
+ 11101000 : bilangan tak bertanda 232 atau bilangan bertanda 24
1 10010100 : bilangan tak bertanda 148, carry flag = 1 atau bilangan
bertanda 108 dengan overflow flag = 0.

01001010 : bilangan 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 = 1, hasilnya
menjadi negatif.
Untuk operasi logik pada CPU Z80, flag ini = 1 bila hasil parity 8 bit di accumulator adalah
genap. Flag ini sangat berguna dalam memeriksa tramsmisi data. Karena carry dan overflow
tidak akan terjadi overflow dapat disimpan dalam flip-flop yang sama. Flip-flop ini disebut
P/V flag. Dengan memeriksa flip-flop ini, pemrogram dapat memeriksa overflow setelah
operasi aritmatik dan memeriksa parity setelah operasi logik.
3.3. Zero (nol) Flag.
Jika register A sama dengan nol (zero) setelah operasi logik atau aritmatik, keadaan atau
status ini akan dicatat dalam flip-flop yang disebut zero flag.
Zero flag dapat digunakan sebagai syarat untuk instruksi-instruksi percsbangan, juga berguna
dalam program loop.
3.4. Sign (tanda) Flag.
Jika bit yang paling kiri (bit 7) dari register A adalah 1 setelah operasi logik atau aritmatik,
bilangan pada register A di interpretasi kan sebagai bilangan begatif dan sign flag ini akan
di set menjadi 1. Flag ini akan diabaikan bila pemrogram telah menunjuk datanya sebagai
bilangan-bilangan tanpa tanda.
3.5. Flag-flag lain yang dirancang untuk aritmatik BCD tidaklah penting bagi pemrogram.
Format register yang dibentuk oleh flag-flag ini terlihat seperti dibawah ini :
S Z X H X P/V N C
Sign Zero Parity/ Carry
Overflow
Pada mikroprosesor isi flag register biasanya dinyatakan dengan 2 digit hexadecimal. Pemakai
harus menyatakan data 2 digit ini dengan suatu bilangan biner 8 bit. Dengan melihat format flag
register pemakai dapat memperoleh status flag. Misalnya jika flag register adalah 3CH, sign flag
menyatakan positif, nilai tidak nol, parity genap, atau terjadi overflow tetapi tidak ada carry.

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

Nilai Preset Hasil pelaksanaan program


Register Register Flag
D E HL Sign Zero P/V Carry
5AH A6H .. .. .. .. .. ..
45H 77H .. .. .. .. .. ..

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

3. Gantikan program diatas untuk operasi pengurangan.


4. Program berikut dapat digunakan untuk menjumlahkan data 32 bit di memori pada
alamat 1A00H 1A03H kepada data 32 bit yang terdapat pada alamat 1A04H 1A07H
dan hasilnya disimpan pada alamat 1A08H 1A0BH. Byte berorde tinggi disimpan pada
alamat yang lebih tinggi (hal ini mutlak dalam program-program mikroprosesor).
Bhs msn Label Opcode Operand Keterangan
alamat awal ORG 1840H Alamat awal 1800H
1840 06 04 LD B, 4 Isi reg B dgn data 04H sbg counter
1842 DD 21 00 1A LD IX, 1A00H Isi reg IX dgn 100AH
1846 A7 AND A ANDkan reg A dgn reg A
1847 DD 7E 00 Loop LD A, (IX) Isi reg A dgn data di alamat IX
184A DD 8E 04 ADC A, (IX+4) Jmlh isi reg A dgn data di IX+4 & Cy
184D DD 77 08 LD (IX+8),A Masukkan isi reg A ke alamat IX+8
184F DD 23 INC IX Naikkan dgn 1 reg IX
1850 05 DEC B Kurangi isi reg B dgn 1
1852 20 F2 JP NZ, Loop Jika belum = nol lari ke Loop
1854 FF RST 38H Kembali ke monitor

Nilai Preset Hasil Pelaksanaan program


Memory Memory Flag
(1A03H-1A00H) (1A07H-1A04H) (1A0B-1A08H) 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

Nilai Preset Hasil pelaksanaan program


Register Register Flag
D E HL Sign Zero P/V Carry
5AH A6H 0100 0 0 0 0
45H 77H 00BC 0 1 0 0

2. Penjumlahan Data 16 bit


Penjumlahan data 16 bit di memori pada alamat 1A00H 1A01H.

No Opcode Operand Keterangan


.
1. ORG 1800H Alamat Awal
2. LD A, (1A00H) Isi reg A dgn data di alamat 1A00H
3. ADD A, E Tambahkan isi reg E ke reg A
4. LD L, A Masukkan isi reg A ke reg L
5. LD A, (1A01H) Isi reg A dgn data di alamat 1A01H
6. ADC A, D Tambahkan isi reg A dgn reg D &
Cy
7. LD H, A Masukkan isi reg A ke reg H
8. RST 38H Kembali ke monitor

Hasil pelaksanaan
Nilai Preset program

Memory Register Register Flag

(1A01H) (1A00H) DE HL Sign Zero P/V Carry


77 45 47 57 BE 9C 1 0 1 0
A6 5A 44 77 EA D1 1 0 0 0

3. Operasi Pengurangan 16 Bit


No. Opcode Operand Keterangan
1. ORG 1800H Alamat Awal
2. LD A, (1A00H) Isi reg A dgn data di alamat 1A00H
3. SUB A, E Kurangkan isi reg E ke reg A
4. LD L, A Masukkan isi reg A ke reg L
5. LD A, (1A01H) Isi reg A dgn data di alamat 1A01H
6. SBC A, D Kurangkan isi reg A dgn reg D & Cy
7. LD H, A Masukkan isi reg A ke reg H
8. RST 38H Kembali ke monitor

Nilai Preset Hasil pelaksanaan program


Memory Register Register Flag
(1A01H) (1A00H) DE HL Sign Zero P/V Carry
77 45 47 57 2FEE 1 0 1 0
77 45 10 10 6735 0 0 0 0
4. Penjumlahan 32 Bit

Nilai Preset Hasil Pelaksanaan Program

Memory Memory Flag


1A03H-1A00H IA08H-1A04H 1A0BH-1A08H S Z P/V C
10 00 77 45 45 34 23 12 55 34 9A 57 0 1 0 0
01 00 77 54 54 43 32 21 55 43 A9 75 0 1 0 0

5. Pengurangan bilangan decimal

Bhs msn Label Opcode Operand Keterangan


alamat awal ORG 1840H Alamat awal 1800H
06 04 LD B, 4 Isi reg B dgn data 04H sbg counter
DD 21 00 1A LD IX, 1A00H Isi reg IX dgn 100AH
A7 AND A ANDkan reg A dgn reg A
DD 7E 00 Loop LD A, (IX) Isi reg A dgn data di alamat IX
DD 9E 04 SBC A, (IX+4) Pengurangan isi reg A dgn data di IX+4 & Cy
27 DAA Mengubah menjadi arimatik desimal
DD 77 08 LD (IX+8),A Masukkan isi reg A ke alamat IX+8
DD 23 INC IX Naikkan dgn 1 reg IX
05 DEC B Kurangi isi reg B dgn 1
20 F1 JP NZ, Loop Jika belum = nol lari ke Loop
FF RST 38H Kembali ke monitor

Nilai Preset Hasil Pelaksanaan Program

Memory Memory Flag


1A03H-1A00H IA07H-1A04H 1A0BH-1A08H S Z P/V C
64 33 52 64 23 33 32 21 41 00 20 43 0 1 0 0
56 32 51 12 45 30 21 10 11 02 30 02 0 1 0 0
V. PEMBAHASAN

Percobaan 1 : Penjumlahan Data 8 bit


Percobaan pertama adalah penjumlahan data 8 bit. Dimana terlebih dahulu mengisi
register D= 5A dan register E A6. Kemudian ke addres 1800 dan selanjutnya ikuti tabel pada
data percobaan. Hasil penjumlahan dari register D dan register E disimpan di register HL=
0100. Instruksi yang digunakan pada percobaan ini yaitu ADD dan ADC.

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.

Kemudian dengan percobaan perhitungan mikroprosesor adalah dengan mengisikan isi


register D dengan 45H dan mengisikan register E dengan 77H dan diperoleh hasilnya pada
register HL yaitu 00bcH. Kemudian dari hasil pelaksanaan program didapatkan flag register
(reg F) yaitu 40H dengan status flag bahwa sign flag menyatakan hasil operasi aritmatika
sebelumnya bertanda positif (b7=0), zero=1 menunjukkan hasil operasi aritmatika sebelumnya
bernilai nol, P/V = 0 menunjukkan bahwa hasil operasi aritmetika sebelumnya adalah peritas
ganjil atau tidak terjadi overflow, dan tidak menghasilkan carry pada operasi sebelumnya.

Berikut adalah flow chart dari percobaan diatas:

Percobaan 2: Penjumlahan Data 16 bit

Pada percobaan ke 2, dilakukan untuk menjumlahkan data 16 bit di memori pada


alamat 1A00H 1A01H pada data 16 bit yang ada pada pasangan register DE yang hasilnya
disimpan pada register HL. Percobaan ini dilakukan dengan mengikuti langkah langkah
dengam memasukkan program pada uPF-1.

Namun sebelumnya pada percobaan ini terlebih dilakukan perhitungan manual untuk
mengetahui nilai dari register HL. Berikut adalah perhitungan manualnya:

77 45 0111 0111 0100 0101


47 57 0100 0111 0101 0111

maka diperoleh hasil penjumlahannya = 1011 1110 1001 1100 yang apabila dikonversikan ke
bilangan hexa akan diperoleh BE9C.

Dari perhitungan manual diatas maka dilakukan perbandingan perhitungan pada


mikroprosesor. Masukkan program pada uPF-1, run programnya, pada data 1 kemudian
dilakukan pengisian pada alamat 1A01H dengan data 77H dan alamat 1A00H dengan data 45H
, dan isi register DE dengan 4757 kemudian setelah itu diperoleh data data pada register HL
yaitu BE9C lalu dapat dilihat pada register F yang diperoleh AC kemudian dibinerkan menjadi
1010 1100 sehingga diperoleh status flag sebagai berikut: Sign=1, Zero=0, P/V=1, Carry=0.

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:

A6 5A 1010 0110 0101 1010

44 77 0100 0100 0111 0111

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.

Berikut adalah flow chart dari percobaan diatas:


Percobaan 3 : Operasi Pengurangan 16 Bit
Pada percobaan 3, sama halnya dengan percobaan 2 dilakukan perhitungan manual
untuk mengetahui nilai dari register HL pada operasi pengurangan. Berikut adalah perhitungan
manualnya:

77 45 0111 0111 0100 0101

47 57 0100 0111 0101 0111

maka dengan dicomplement terlebih dahulu diperoleh hasil pengurangannya = 0010 1111 1110
1110 yang apabila dikonversikan ke bilangan hexa akan diperoleh 2FEE.

Dari perhitungan manual diatas maka dilakukan perbandingan perhitungan pada


mikroprosesor. Masukkan program pada uPF-1, run programnya,. Operasi pengurangan dapat
dilakukan dengan mengganti perintah ADD dan ADC masing masing menjadi SUB dan SBC.
Sehingga dilakukan pengisian pada alamat 1A01H dengan data 77H dan alamat 1A00H dengan
data 45H , dan isi register DE dengan 4757 kemudian setelah itu diperoleh data data pada
register HL yaitu 2FEE lalu dapat dilihat pada register F yang diperoleh AC kemudian
dibinerkan menjadi 1010 1100 sehingga diperoleh status flag sebagai berikut: Sign=1, Zero=0,
P/V=1, Carry=0.

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:

77 45 0111 0111 0100 0101

10 10 0001 0000 0001 0000

maka dengan dicomplement terlebih dahulu diperoleh hasil pengurangannya = 0110 0111 0011
0101 yang apabila dikonversikan ke bilangan hexa akan diperoleh 6735.

Dari perhitungan manual diatas maka dilakukan perbandingan perhitungan pada


mikroprosesor. Masukkan program pada uPF-1, run programnya. Isi data pada alamat 1A0H
dan 1A00H dengan data 77H dan 45H dan register DE diisi 1010 sehingga diperoleh data pada
register HL yaitu 6735 kemudian dapat dilihat pada register F yang diperoleh 22 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.

Berikut adalah flow chart dari percobaan diatas:


Percobaan 4: Penjumlahan 32 Bit
Pada percobaan ini praktikan menjumlahkan data 32 bit pada alamat 1A00 1A03
kepada data 32 bit yang terdapat pada alamat 1A04 1A07 dan hasilnya disimpan pada
alamat 1A08 1A0B. Untuk operasi penjumlahan, nilai DAA adalah +06 untuk 4 bit yang
bernilai lebih dari 6H sedangkan untuk 4 bit yang nilainya kurang dari 6H maka dijumlahkan
dengan 00. Sebelumnya praktikan melakukan perhitungan manual kemudian dimasukkan
ke program. Berikut adalah hasil perhitungan manual yang diperoleh untuk percobaan
pertama.

10 00 77 45 0001 0000 0000 0000 0111 0111 0100 0101

45 34 23 12 0100 0101 0011 0100 0010 0011 0001 0010

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:

01 00 77 54 0000 0001 0000 0000 0111 0111 0101 0100

54 43 32 21 0101 0100 0100 0011 0011 0010 0010 0001

Kemudian hasil penjumlahan dari keduanya diperoleh 0101 0101 0100 0011 1010 1001
0111 0101 dan kemudian diubah menjadi heksadesimal yaitu 55 43 A9 75.

Selanjutnya, perhitungan ini dilakukan pada mikroprosesor Z80. Pada saat di


program hasil sudah dalam bentuk hexadecimal. Dimana pada alamat 1A03H-1A00H diisi
data 01 00 77 54 dan pada alamt 1A07H-1A04H diisi data 54 43 32 21 dan hasil penjumlahan
tertera pada alamat 1A0B-1A08H yaitu 55 43 A9 75 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.

Berikut adalah flow chart dari percobaan diatas:


Percobaan 5 : Pengurangan bilangan decimal
Percobaan kelima adalah menggunakan operasi pengurangan dimana bahasa
mesin pada percobaan ketiga yakni ADC diganti menjadi SBC dan menambahkan fungsi
DAA setelah SBC, tujuannya supaya hasil dari heksadesimal dapat langsung diubah ke
bentuk decimal namun pengurangan tersebut hanya dalam bentuk angka saja . Untuk
operasi pengurangan, nilai DAA adalah -06 untuk 4 bit yang bernilai lebih dari 6H
sedangkan untuk 4 bit yang nilainya kurang dari 6H maka dikurangi dengan 00
Pada percobaan pertama praktikan melakukan perhitungan manual yaitu sebagai
berikut :

64 33 52 64 0110 0100 0011 0011 0101 0010 0110 0100

23 33 32 21 0010 0011 0011 0011 0011 0010 0010 0001

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.

Pada percobaan kedua praktikan melakukan perhitungan manual yaitu sebagai


berikut:

56 32 51 12 0101 0110 0011 0010 0101 0001 0001 0010

45 30 21 10 0100 0101 0011 0000 0010 0001 0001 0000

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.

Berikut adalah flow chart dari percobaan :


VI. KESI MPULAN

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

Operasi aritmatik 32 bit menggunakan 12 alamat, 8 alamat sebagai penyimpan data


yang akan dioperasikan dan 4 alamat menyimpan data hasil pengoperasian.

Untuk mengkonversikan heksa ke desimal digunakan instruksi DAA. Pada operasi


penjumlahan DAA bernilai +06 sedangkan pada operasi pengurangan DAA bernilai
-06.
3. Praktikan dapat menjelaskan tentang status flag. Ketika Z bernilai 0 maka A tidak sama
dengan 0 (=1) dan sebaliknya.

VII. DAFTAR PUSTAKA


Harsono, Djiwo dkk. Modul praktikum Mikroprosesor. 2017. Yogyakarta. 2017
VIII. LAMPIRAN

Anda mungkin juga menyukai