LAPORAN
PRAKTIKUM SISTEM MIKROPROSESOR
PERCOBAAN ARITHMATIKA
DISUSUN OLEH
IAN PAULUS SINAMBELA
18050602030
TK-4D
JURUSAN TEKNIK ELEKTRO
PROGRAM STUDI TEKNIK TELEKOMUNIKASI
POLITEKNIK NEGERI MEDAN
T.A. 2020
i
LEMBAR PENGESAHAN
No. Percobaan : 02/ LKTK III/ LTK-II /TK-4D / 2020
Judul : ARITMATIKA
NamaPraktikan : Ian Paulus Sinambela
NIM : 1805062030
Nama Partner : 1. Cantika Surya
2. Renova Simanjuntak
3. PutriSuci Lestari
4. Sherina Yuli Hasibuan
5. SelaJulikaGultom
6. SumitroButarbutar
Kelas / Group : TK – 4D / SATU (I)
TanggalPercobaan : 7 Juni 2020
TanggalPenyerahan : 12 Juni 2020
Instruktur : 1. Ir. MorlanPardede, MT
2. Daniel SaragihNapitu,ST,M.Kom
Instruktur I Instruktur II
(Ir. MorlanPardede, MT) (Daniel Saragih,ST,M.Kom)
2
TUJUAN
1. Membuktikan fungsi instruksi-instruksi pengolahan data.
2. Membuat program dan penjumlahan, pengurangan, dan perkalian secara
hexadesimal dan BCD.
PERALATAN YANG DIGUNAKAN
Laptop dengan aplikasi simulator 8085
DASAR TEORI
Instruksi Arithmatika pada mikroprosesor 8085 terdiri dari :
-Penjumlahan tanpa carry: ADD r, ADI d8
-Penjumlahan dengan carry: ADC r, ACI d8
-Pengurangan tanpa borrow: SUB r, SUI d8
-Pengurangan dengan borrow: SBB r, SBI d8
-Penjumlahan 16-bit : DAD rp
Instruksi Logika pada mikroprosesor 8085 terdiri dari:
-Logika AND : ANA r, ANI d8
-Logika OR : ORA r, ORI d8
-Logika EX-OR: XRA r, XRI d8
-Logika Complement: CMA, CMC
Instruksi pengeseran bit pada mikroprosesor 8085 hanya dapat dilakukan pada akumulator dan
bit carry. Instruksi putar/geser ini a dalah:
-Putar/geser ke kiri dengan melalui carry : RAL
-Putar/geser ke kiri tanpa melalui carry : RLC
3
-Putar/geser ke kanan dengan melalui carry :RAR
-Putar/geser ke kanan tanpa melalui carry : RRC
a. Instruksi Penjumlahan.
Seluruh instruksi penjumlahan 8-bit dilakukan melalui Akumulator, dengan demikian
salah satu bilangan yang akan dijumlahkan harus dimasukkan pada Reg. A. Hasil penjumlahan
terdapat pada akumulator dan indikasi/status terdapat pada register Flag.
Contoh 1:
Berikut ini adalah program untuk menjumlahkan data yang terdapat memori 7170 H dengan
7171 H dan hasil disimpan pada memori 7172 H.
PROGRAM 1:
Alamat Op-Code Mnemonic Komentar
A000 3A-70-71 LDA 7170 Baca Isi memori 7170
A003 47 MOV B, A dan simpan pada Reg.B
A004 3A-71-71 LDA 7171 Baca isi memori 7171
A007 80 ADD B Jumlahkan isi 7170 dengan isi 7171
A008 32-72-71 STA 7172 Hasil simpan pada memori 7172
A00B 76 HLT Selesai
Jika isi memori adalah:
7170 = 95 H 7171=85 H proses penjumlahnnya adalah:
95 H + 85 H =1A H dengan Cy=1, yang mengakibatkan isi memori7172 H = 1AH.
b. Perkalian
4
Pada mikroprosesor 8085 tidak ada instruksi perkalian, untuk itu untuk melaksanakan
proses perkalian harus dibuat program. Proses perkalian dapat dilakukan dengan
menjumlahkan bilangan yang dikali sebanyak pengali. Sebagai contoh perkalian 5 dengan 4
(5x4) dapat dilakukan dengan menjumlahkan bilangan 4 sebanyak 5 kali (4+4+4+4+4).
Dengan demikian program perkalian dapat dibuat dengan instruksi penjumlahan. Berikut ini
diberikan langkah-langkah untuk pembuatan program perkalian data 05 dengan 04 dengan
diagram alir seperti pada gambar 1.
Mulai
Clear Acc dan bit Cy
Set Loop= Bilangan Pengali
Set Bilangan dikali
Acc=Acc+bilangan Dikali
Kurangi banyak Loop
Tidak
Loop=0
?
Ya
Selesai
Gambar 1 Diagram alir Perkalian dengan proses jumlah
Program 2 merupakan program perkalian dua buah data 1 byte untuk yang hasilnya
tidak lebih dari 1 byte.
PROGRAM 2.
Alamat Op-Code Label Mnemonic Komentar
A000 AF XRA A Clear Acc. dan Cy A=Cy=
A001 06-04 MVI B,04 Set dikali B=04 B=
A003 0E-05 MVI C,05 Set yang pengali C=05 C=
A005 80 Ulang: ADD B Acc=Acc + Reg.B A=Cy= A=Cy= A=Cy= A=Cy=
A006 0D DCR C Kurangi pengali C=Z= C=Z= C=Z= C=Z=
5
A007 C2-05-A0 JNZ Ulang Ulangi jika pengali PC= PC= PC= PC=
belum 0
A00A 76/FF HLT / RST7 Selesai
Program berikut adalah program perkalian isi Register A dengan isi register B dan hasilnya
pada HL. Sebelum dieksekusi isikan Register A dengan data 64 H dan register B dengan 05.
Program 3.
Alamat Op-Code Label Mnemonic Komentar
A010 LXI H,0000 Clear hasil HL=Cy=
MVI D,00 Clear buffer D=
MOV E,A Ambil bil. yang dikali E=
Ulang: DAD D HL=Hasil + bil.dikali HL=Cy=
DCR B
JNZ Ulang
HLT Selesai
6
PERCOBAAN
PROGRAM 1
7
Berikut ini adalah program untuk menjumlahkan data yang terdapat memori 7170 H dengan
7171 H dan hasil disimpan pada memori 7172 H.
Alamat Op-Code Mnemonic Komentar
A000 3A-70-71 LDA 7170 Baca Isi memori 7170
A003 47 MOV B, A dan simpan pada Reg.B
A004 3A-71-71 LDA 7171 Baca isi memori 7171
A007 80 ADD B Jumlahkan isi 7170 dengan isi 7171
A008 32-72-71 STA 7172 Hasil simpan pada memori 7172
A00B 76 HLT Selesai
Jika isi memori adalah:
7170 = 95 H 7171=85 H proses penjumlahnnya adalah:
8
95 H + 85 H =1A H dengan Cy=1, yang mengakibatkan isi memori7172 H = 1AH.
PROGRAM 2
9
Program 2 merupakan program perkalian dua buah data 1 byte untuk yang hasilnya
tidak lebih dari 1 byte.
Alamat Op-Code Label Mnemonic Komentar
A000 AF XRA A Clear Acc. dan Cy A=00H
Cy=0
A001 06-04 MVI B,04 Set dikali B=04 B=04
H
A003 0E-05 MVI C,05 Set yang pengali C=05 C=05H
A005 80 Ulang: ADD B Acc=Acc + Reg.B A=04H A=08H A=0CH A=10H A=14H
Cy=0 Cy=0
Cy=0 Cy=0 Cy=0
A006 0D DCR C Kurangi pengali C=04H C=03H C=02H C=01H C=00H
Z=0 Z=0
Z=0 Z=0 Z=1
10
A007 C2-05-A0 JNZ Ulang Ulangi jika pengali PC= PC= PC= PC= PC=
belum 0 A005 A005
A005 A005 A00A
A00A 76/FF HLT / RST7 Selesai
XRA A = clear Acc dan Cy
MVI B,04 = set bilangan yang dikali, B = 4
MVI C,05 = set pengali, C=5
ADD B = Jumlahkan isi Acc dengan reg. B
A= 00 H 0000 0000
B= 04 H 0000 0100 +
A= 0000 0100
DCR C = Mengkurangkan pengali
C= 05 H 0000 0101
0000 0001 -
C= 0000 0100
JNZ Ulang = Ulangi jika pengali belum bernilai 0
HLT = Selesai
Reg. A = 14 H, C = 0 H , Flag : S = 0 Z = 1 H= 0 P =1 Cy = 0
11
PROGRAM 3
12
Program berikut adalah program perkalian isi Register A dengan isi register B dan hasilnya
pada HL. Sebelum dieksekusi isikan Register A dengan data 64 H dan register B dengan 05.
Alamat Op-Code Label Mnemonic Komentar
A010 21-00-00 LXI H,0000 Clear hasil HL=Cy=
A013 16-00 MVI D,00 Clear buffer D=00
A015 5F MOV E,A Ambil bil. yang dikali E=64
A016 19 Ulang: DAD D HL=Hasil + bil.dikali HL=64H HL=C8 HL=012 HL=0 HL=0
Cy=0 H Cy=0 190H 1F4H
CH Cy=0
Cy=0 Cy=0
A017 05 DCR B Kurangi Pengali B= 04H B= 03H B= 02H B= B=
01H 00H
A018 C2-16- JNZ Ulang Ulangi jika pengali Z= 0 Z= 0 Z= 0 Z= 0 Z= 1
20 belum 0
13
A01B 76 HLT Selesai
LXI H, 0000 H = Clear reg. HL
MVI D, 00 H = Clear Buffer
MOV E,A = Set bilangan yang dikali
DAD D = Jumlahkan reg. HL dengan bilangan dikali
HL= 0000 H 0000 0000 0000 0000
DE= 0064 H 0000 0000 0110 0100 +
HL= 0000 0000 0110 0100
DCR B = Mengkurangkan Pengali
B= 05 H 0000 0101
0000 0001 -
B= 04 H 0000 0100
JNZ Ulang= Ulangi jika pengali belum 0
HLT = Selesai
14
PROGRAM 4
15
Alamat Op-Code Mnemonic Komentar
9050 AF XRA A ACC=0
9051 3E-25 MVI A,25 A= 25
9053 0E-32 MVI C,32 C=32
9055 16-21 MVI D,21 D=21
9057 91 SUB C A=F3 CY=1; S=1 Z= 0 H=0 P=1
9058 9A SBB D A=D1 CY=0; S=1 Z= 0 H=0 P=1
9059 RST 7
Reg. A = D1, C = 32 H , D = 21 H , Flag : S = 1 Z =0 H= 0 P =1 Cy = 0
XRA A= Clear Acc
MVI A,25 H= Set Acc 25 H
MVI C,32 H= Set Acc reg. C 21 H
SUB C= Kurangi isi Acc dengan reg. C
A= 25 H 0010 0101
C= 32 H 0011 0010 -
A= F3 H 1111 0011
SBB D= Kurangi isi Acc dengan reg. D, dengan Cy
A= F3 H 1111 0011
D= 21 H 0010 0001 -
A= D2 H 1101 0010
RST 7= SELESAI
PROGRAM 5
16
17
Alamat Op-Code Mnemonic Komentar
90A0 AF XRA A A=0
90A1 3E-95 MVI A,95 A= 95
90A3 0E-86 MVI C,86 C= 86
90A5 16-65 MVI D,65 D=65
90A7 81 ADD C A=1B
90A8 27 DAA A=81
90A9 82 ADD D A=E6
90AA 27 DAA A=46
90AB RST 7
Reg. A = 46 H, C = 86 H , D = 65 H , Flag : S =0 Z=0 H=0 P = 0 Cy = 1
XRA A= Clear Acc
MVI A,95 H= Set isi Acc 95 H
MVI C,86 H = Set reg. C dengan data 86 H
MVI D,65 H= Set reg. D dengan data 65 H
ADD C= Jumlahkan Acc dengan reg. C
A= 95 H 1001 0101
C= 86 H 1000 0110 +
A= 1BH 0001 1011
DAA = Ubah hasil penjumlahan kedesimal
A= 1BH 0001 1011
0110 0110 +
18
A= 81 H 1000 0001
ADD D= Jumlahkan isi Acc dengan reg. D
A= 81 H 1000 0001
D= 65 H 0110 0101 +
A= E6 H 1110 0110
DAA = Ubah hasil penjumlahan ke decimal
A= E6 H 1110 0110
0110 0000 +
A= 46 H 0100 0110
RST 7= Selesai
PROGRAM 6
19
Alamat Op-Code Mnemonic Komentar
9220 3E-9A MVI A, 9A A=9A
9222 06-56 MVI B, 56 B=56
9224 0E-39 MVI C, 39 C=39
9226 91 SUB C A=61
9227 80 ADD B A=B7
9228 27 DAA A=17 CY=1
9229 76 HLT
Reg. A = 17 H, C = 39 H , B= 56 H , Flag : S = 0 Z =0 H=0 P =1 Cy =1
MVI A, 9A= Set Acc dengan data 9A H, sebagai complement 10
MVI B, 56 = Set reg. B dengan data 56 H, sebagai bilangan yang dikurang
20
MVI C, 39 = Set reg. C dengan data 39 H, sebagai bilangan pengurang
SUB C= Kurangkan Acc dengan reg. C
A=9AH 1001 1010
C=39 H 0011 1001 -
A= 61 H 0110 0001
ADD B= Jumlahkan Acc dengan reg. B
A=61 H 0110 0001
B=56 H 0101 0110 +
A= B7 H 1011 0111
DAA= Ubah hasi ke Desimal
A=B7 H 1011 0111
0110 0000 +
A= 17 H 0001 0111
HLT= Selesai
21
PROGRAM 7
22
Alamat Op-Code Mnemonic Komentar
9100 3E-00 MVI A,AC A=AC
9102 06-0F MVI B,0F B=0F
9104 0E-F0 MVI C,F0 C=F0
9106 B0 ORA B A= AFH
9107 A9 XRA C A= 5F
9108 E6-35 ANI 35 A= 15
910A 2F CMA A= EA
910B RST 7
Reg. A = EAH, C = F0 H , Flag : S =0 Z = 0 H= 0 P=0 Cy =0
MVI A,ACH= Set Acc dengan data ACH
MVI B,0FH= Set reg B dengan data 0FH
23
MVI C,F0 H= Set reg. C dengan data F0 H
ORA B= Acc di operasikan logika OR dengan reg. B
A=ACH 1010 1100
B=OFH 0000 1111 +
A= AFH 1010 1111
XRA C= Acc dioperasikan logika Ex-Or dengan reg. B
A=AFH 1010 1111
C=F0 H 1111 0000 +
A= 5FH 0101 1111
ANI 35 H= Acc dioperasikan logika AND dengan data 35 H
A=5FH 0101 1111
0011 0101 +
A= 15 H 0001 0101
CMA= Bandingkan Acc dengan data FFH
A=15 H 0001 0101
1111 1111 +
A= EAH 1110 1010
RST 7= Selesai
24
PROGRAM 8
25
Alamat Op-Code Label Mnemonic Komentar
9150 AF XRA A A=0
9151 3E-56 MVI A,56 A=56
9153 06-03 MVI B,03 B=03
9155 07 Ulang: RLC A=AC A=59 A=B2
9156 05 DCR B B=02 B=01 B=00
9157 C2-55-91 JNZ Ulang Z=0 Z=0 Z=1
915A 76 RST 7 Selesai
Reg. A = ACH , B = 00 H , Flag : S = 0 Z = 1 H= 0 P = 1 Cy =0
XRA A= Clear Acc
MVI A,56 H= Set Acc dengan data 56 H
MVI B,03 H= Set reg. B dengan data 03 H, sebagai loop
RLC= Geser isi Acc kekanan,
A= 56 H 0101 0110 Cy=0 1010 1100= ACH
DCR B= Kurangi reg. B
A=15 H 0000 0011
0000 0001 +
A= 02 H 0000 0010
JNZ Ulang= Ulangi jika loop belum 0
RST 7= Selesai
26
PROGRAM 9
27
Alamat Op-Code Label Mnemonic Komentar
9200 3E-D9 MVI A,D9 H A=D9
9202 0E-04 MVI C,04 C=04
9204 37 Ulang: STC Cy=1 Cy=1 Cy=1 Cy=1
9205 1F RAR Acc= Acc= Acc=F Acc=F
EC F6 B D
9206 0D DCR C C=03 C=02 C=01 C=00
9207 C2-04- JNZ Ulang Z= 0 Z=0 Z=0 Z=1
92
920A 76 HLT
Reg. A = ..., C = .. , D = ... , Flag : S =1 Z=0 H= 0 P = 0 Cy =1
MVI A,D9 H= Set Acc dengan data D9 H
MVI C,04 H= Set reg. C dengan data 04, sebagai loop
STC= Set Carry dengan nilai 1
RAR= Geser nilai Acc kekanan
A= D9 H 1101 1001 Cy=1 1110 1100= ECH
DCR C= Kurangi isi data reg. C
A=04 H 0000 0100
0000 0001 +
A= 03 H 0000 0011
JNZ Ulang= Ulangi jika loop belum 0
HLT = Selesai
28
Program 10.
29
Alamat Op-Code Label Mnemonic Komentar
9520 06-00 MVI B,00 B= 00H
9522 11-00- LXI D,AA00 DE=
AA AA00H
9525 1A Ulang LDAX D A= 01 A=02 A=03 A=04 A=05
9256 E6-01 ANI 01 A=01 A=00 A=01 A=00 A=01
9528 C2-5C- JNZ Ganjil Z= 0 Z=1 Z=0 Z=1 Z=0
92
952B 04 INR B B=01 B=02
952C 13 Ganjil INX D DE= DE= DE= DE=AA DE=AA
AA01 AA02 AA03 04 05
952D 7B MOV A,E A= 01 A=02 A=03 A=04 A=05
30
952E FE-06 CPI 06 S=1 Z=0 S=1 Z=0 S=1 Z=0 S=1 Z=0 S=1 Z=0
A=1 A=1 A=1 A=1 A=1
P=0 C=1 P=1 P=0 P=0 P=1
C=1 C=1 C=1 C=1
9530 C2-55-92 JNZ Ulang Z=0 Z=0 Z=0 Z=0 Z=0
9533 76 HLT
- Sebelum program dieksekusi terlebih dahulu isikan data pada alamat AA00(H)
s/d AA05(H). =01,02,03,04,05
- Eksekusi program dan periksa isi register B.
- Apakah isi register B sama dengan banyaknya bilangan yang terdapat
pada AA00(H) s/d AA05(H).
MVI B,00 H= Clear reg. B
LXI D,AA00 H= Set reg DE dengan alamat AA00 H
LDAX D= Bebani Acc dengan isi data pada alamat reg. DE, yaitu data yang ingin
diperiksa
ANI 01 = Operasikan gerbang AND pada acc dengan data 01 H
A=01 H 0000 0001
0000 0001
A= 01 H 0000 0001
JNZ Ganjil= lompat jika Z=0, jika data acc ganjil maka akan di lompatkan
INR B= Tambahkan reg. B, sebagai penghitung jumlah data yang genap
B=00 H 0000 0000
0000 0001 +
31
B= 01 H 0000 0001
INX D = Tambahkan reg. DE
DE=AA00 H 1010 1010 0000 0000
0000 0000 0000 0001 +
DE= AA01 H 1010 1010 0000 0001
MOV A,E= Pindahkan Acc dengan isi data reg. E
CPI 06= Bandingkan isi Acc dengan data 06 H, untuk memeriksa alamat data
JNZ Ulang= lompat jika Z=0, jika belum akhir maka lompat ke label Ulang
HLT = Selesai
32
PERTANYAAN DAN JAWABAN
• Pertanyaan
Buatlah program untuk dapat menjumlahkan 2 buah data 3-byte secara desimal dimana
Data-1 terdapat pada memori 8100H s/d 8102 H dan Data-2 terdapat pada memori 8110H s/d
8112 H sebagai contohisi memori 8100 H s/d 8102H =76, 63, 75sebagai Data-1 dan isi memori
8110 H s/d 8112 H adalah 98,76,78 sebagai Data-2 dengan proses sebagai berikut:
(8102) (8101) (8100) 756376 10
(8112) (8111) (8110) + 787698 10 +
(8123) (8122) (8121) (8120)
• Jawaban
A. ALGORITMA
LDAX B ADC M DAA STAX D
Ubahhasilke
1 2 3 4
Dessimal
Accumulator 8100H + Hasildisimpan =
8110H 8120H
8100 H = 76 H 8110 H = 98 H 8120 H
33
8101 H = 63 H 8111 H = 76 H 8121 H
8102 H = 75 H 8112 H = 78 H 8122 H
8123 H
B. FLOWCHART
34
START
Set alamat reg. BC
Set alamat reg. HL
Isi
Akumulatordenganalamatpada
reg. BC
Jumlahkanisiakumulatordengan
isipadamemori
UbahhasilkeDesimal
Simpanisiakumulatorpadaala
mat reg. DE
Naikkanalamat reg.BC
Naikkanalamat reg. HL
Naikkanalamat reg. DE
Periksaisialamat data
Tidak
Max+1?
Ya
SELESAI
35
C. PROGRAM
36
Analisa
37
38
39
40
KESIMPULAN
41