Anda di halaman 1dari 16

PRAKTIKUM 3

INSTRUKSI ARITMATIKA

I. Tujuan

Setelah melakukan percobaan-percobaan pada bab ini, diharapkan saudara


mampu:

1. untuk membuat program untuk menjalankan data heksadesimal yang terdapat


pada register.
2. Membuat program pengurangan bilangan dalam sistem kpmplemen dua.
3. Membuat program pemjumlahan data yang terdapat pada lokasi memori
tertentu.
4. Membuat program penjumlahan dan pengurangan bilangan dalam sistem BCD
(desimal).
5. Menjelaskan fungsi instruksi DAA (desimal adjust accumulator).

II. Dasar Teori

Pada percobaan ini, anda akan berlatih menggunakan berbagai instruksi


aritmatika. Instruksi-instruksi yang termasuk ke dalam kelompok instruksi
aritmatika di antaranya adalah ADD, ADI, ADC, SUB, SUI, SBB, SBI, INR,
DCR, INX, DCX, DAD, dan DAA. Di samping instruksi-instruksi tersebut di
atas, operasi-operasi aritmatika lainnya yang sering dipergunakan untuk
membandingkan nilai bilangan adalah instruksi CMP dan CPI.

Instruksi ADD dan SUB

Instruksi ADD dipergunakan untuk melakukan operasi penjumlahan 8-bit.


Pada operasi tersebut, isi register A (akumulator) akan ditambah dengan isi
register 8-bit atau lokasi memori yang alamatnya ditunjukkan oleh pasangan
register HL. Agar lebih jelas, pelajari tabel berikut.

1
Mnemonik Simbol Operasi
ADD A A←A+A
ADD B A←A+B
ADD C A←A+C
ADD D A←A+D
ADD E A←A+E
ADD H A←A+H
ADD L A←A+L
ADD M A ← A + [(H) (L)]

Instruksi SUB dipergunakan untuk melakukan operasi pengurangan 8-bit.


Pada operasi tersebut, isi register A (akumulator) akan dikurangi dengan isi
register B bit, atau isi lokasi memori yang alamatnya ditunjukkan oleh pasangan
bit register HL. Perhatikan table 4.2 berikut ini.

Mnemonik Simbol Operasi


Sub A A←A–A
Sub B A←A–B
Sub C A←A–C
Sub D A←A–D
Sub E A←A–E
Sub H A←A–H
Sub L A←A–L
Sub M A ← A – [(HL)]

Instruksi ADI dan SUI


Instruksi ADI dipergunakan untuk menambah isi register A (Akumulator)
dengan data 8-bit (immediate data).

Contoh 4.1

Pada instruksi ADI 2Ch, isi register A akan ditambah dengan data 2Ch dan
hasilnya disimpan pada register A.

A ← A – 5Ah

2
Instruksi SUI 5Ah dipergunakan untuk mengurangi isi register A (akumulator)
dengan data 8-bit (immediate data).

Contoh 4.2

Pada instruksi SUI 5Ah, isi register A akan dikurangi dengan data 5Ah dan
hasilnya disimpan pada register A.

A ← A – 5Ah

Jika hasil penjumlahan atau hasil pengurangan hasil pengurangan lebih


besar dari 7Fh (+127 desimal) atau lebih kecil dari 80h (-128 desimal) maka
caryy/borrow bit akan set (CY=1).

Instuksi ADC dan SBB

Instruksi ADC dipergunakan untuk menambah isi register A dengan data 8-


bit dan menginstruksikan carry bit (CY) dari operasi sebelumnya. Data 8-bit
tersebut dapat diambil dari suatu register suatu lokasi memori yang alamatnya
ditunjukkan oleh register HL. Mnemonik dan simbol operasi untuk instruksi ADC
ditunjukan pada table 4.3. Instruksi untuk mengurangi isi register A dengan data
8-bit dan mengikutsertakan borrow bit (CY) dari operasi sebelumnya. Data 8-bit
tersebut dapat diambil dari suatu register atau lokasi memori yang alamatnya
ditunjukkan oleh register HL.

Tabel 4.3
Mnemonik Simbol Operasi
ADC A A← A+A+CY
ADC B A← A+B+CY
ADC C A← A+C+CY

3
ADC D A← A+D+CY
ADC E A← A+E+CY
ADC H A← A+H+CY
ADC L A← A+L+CY
ADC M A← A+[(H)(L)] +CY

Table 4.4 memperlihatkan mnemonik dan sismbol operasi untuk instruksi


SBB. Pelajari table 4.4 berikut ini.

Mnemonik Simbol Opeeasi


SBB A A← A-A-CY
SBB B A← A-B-CY
SBB C A← A-C-CY
SBB D A← A-D-CY
SBB E A← A-E-CY
SBB H A← A-H-CY
SBB L A← A-L-CY
SBB M A← A-[(H)(L)] - CY

Instruksi ACI dan SBI

Instruksi ACI dipergunakan untuk menambah register A dengan data 8-bit


(immediate data) dan mengikutsertakan carry bit dari oprasi sebelumnya.

Contoh 3.3

Instruksi ACI 5Fh akan menambahkan isi register A dengan data 5Fh dan carry
bit.
A←A+5Fh - CY

Instruksi SBI dipergunakan untuk mengurangi isi register A dengan data 8-bit
(immediate data) dan mengikutsertakan borrow bit (CY) dari operasi sebelumnya.

4
Contoh 4.4

Instruksi SBI 2Ch akan mengurangi isi register A dengan data 2Ch dan borrow
bit.
A← A-2Fh-CY

Catatan : instruksi ADD,ADI,ADC,SUB, SBI, ACI, dan SBI akan mempengaruhi


atau mengubah bit-bit S, Z, Ac, P dan CY dari register flag.

Instruksi INR dan DCR

Intruksi INR digunakan untuk menambah (menaikkan) dengan 1 isi dan suatu
register 8-bit atau lokasi memori yang alamatnya ditunjukan oleh register HL.

Perhatikan Tabel 4.5 berikut ini.


mnemonic Symbol Operasi
INR A A←A+1
INR B B←B+1
INR C C←C+1
INR D D←D+1
INR E E←E+1
INR H H←H+1
INR L L←L+1
INR M [(HL)] ← [(HL)] + 1

Instruksi DCR dipergunakan untuk mengurangi dengan 1 (menurunkan) isi dari


suatu register 8-bit atau lokasi memori yang ditunjukkan oleh register HL

Perhatikan Tabel 4.6 berikut ini.

Mnemonik Simbol Operasi


DCR A A←A-1
DCR B B←B-1
DCR C C←C-1
DCR D D←D-1
DCR E E←E-1

5
DCR H H←H-1
DCR L L←L-1
DCR M [(HL)] ← [(HL)] – 1

Catatan : instruksi INR dan DCR akan mempengaruhi/mengubah bit-bit S, Z, P


dan Ac dari register Flag, tetapi tidak mempengaruhi bit CY.

Instruksi INX dan DCX

Instruksi INX dipergunakan untuk menambah dengan 1 (menaikkan) isi suatu


pasangan register (16-bit register). Lihat table 4.7.

Tabel 4.7

Mnemonik Simbol Operasi


INX B BC ← BC + 1
INX D DE ← DE + 1
INX H HL ← HL + 1
INX SP SP ← SP + 1

Instruksi DCX dipergunakan untuk mengurangi dengan 1 (menurunkan) isi dari


suatu pasangan register (16-bit register), seperti ditunjukkan oleh tabel 4.8.
Tabel 4.8
Mnemonik Simbol Operasi
DCX B BC ← BC - 1
DCX D DE ← DE - 1
DCX H HL ← HL - 1
DCX SP SP ← SP - 1

Catatan : instruksi INX dan DCX tidak mengubah (mempengaruhi) bit status
(register flag).

Instruksi DAD

6
Instruksi DAD dipergunakan untuk menambah isi pasangan register HL
dengan isi suatu pasangan register pada operasi penjumlahan 16-bit. Agar lebih
jelas, pelajari tabel 4.9 berikut.

Tabel 4.9

Mnemonik Simbol Operasi


DAD B HL ← HL + BC
DAD D HL ← HL + DE
DAD H HL ← HL + HL
DAD SP HL ← HL + SP

Catatan : instruksi DAD hanya akan mempengaruhi bit CY dari register flag.

III. Peralatan yang digunakan


1. Komputer
2. 8085 simulator IDE

IV. Langkah Percobaan

A. Menjumlahkan Data-Data Heksadesimal


A.1. Membuat bagan alir dan program untuk menjumlahkan data-data
heksadesimal yang berada pada register-register D, E, H, dan L. Simpan
hasilnya pada register A dan gunakan register B untuk menyimpan “carry
bit”. Tulis program tersebut mulai alamat 7000h.

7
A.2. Flowchart untuk langkah A.1 adalah sebagai berikut:

START A

(a)←00h
cy=02?
(b)←00h

8
(b)←(b)+1
(d)←FFh

(a)←(a)+(h)
(e)←FFh

(h)←FFh
cy=02?

(l)←FFh
(b)←(b)+1

(a)←(a)+(d)
(a)←(a)+(l)

cy=02?
cy=02?

(b)←(b)+1
(b)←(b)+1

(a)←(a)+(e) hlt

A END

A.3. Tabel program untuk langkah A.1 adalah sebagai berikut.


Alamat Kode operasi Label Mnemonik
7000h 3E 00 (a)←00h mvi a,00h
7002h 06 00 (b)←00h mvi b,00h
7004h 16 FF (d)←FFh mvi d,0ffh
7006h 1E FF (e)←FFh mvi e,0ffh
7008h 26 FF (h)←FFh mvi h,0ffh

9
700Ah 2E FF (l)←FFh mvi l,0ffh
700Ch 82 (a)←(a)+(d) add d
700Dh D2 11 70 cy=02? jnc j1
7010h 04 (b)←(b)+1 inr b
7011h 83 (a)←(a)+(e) j1 add e
7012h D2 16 70 cy=02? jnc j2
7015h 04 (b)←(b)+1 inr b
7016h 84 (a)←(a)+(h) j2 add h
7017h D2 1B 70 cy=02? jnc j3
701Ah 04 (b)←(b)+1 inr b
701Bh 85 (a)←(a)+(l) j3 add l
701Ch D2 20 70 cy=02? jnc j4
701Fh 04 (b)←(b)+1 inr b
7020h 76 hlt j4 hlt

Input data Output data Perhitungan


D E H L B A D+E+H+L
00 00 00 00 00 00 00
00 01 02 03 00 06 06
00 10 20 30 00 60 60
40 50 60 70 01 60 160
A0 A1 A2 A3 02 86 286
FF FF FF FF 03 FC 3FC

B. Penjumlahan dua bilangan 24 bit


B.1. Buatlah bagan alir dan program untuk menjumlahkan 2 bilang- an 24 bit
yang berada pada lokasi memori dengan alamat D002, D001, D000 dan
D005,D004, D003. Simpan hasil penjumlahan ini pada alamat D009,
D008, D007, D006.

10
B.2. Flowchart untuk langkah B.1.

START A B

(A)←(D000h) (A)←(D004h) (D008h)←(A)

(B)←(A) (A)←(A)+(B)(CY) (A)←(D009h)

(A)←(D003h) (D007h)←(A) hlt

(A)←(A)+(B) (A)←(D002h) END

(D006h)←(A) (B)←(A)

(A)←(D001h) (A)←(D005h)
B.3. Tabel untuk langkah B.1.
Alamat
(B)←(A) Kode operasi (A)←(A)+(B)(CY)
Label Mnemonik
7100h 3A 00 D0 (A)←(D000h) LDA 0D000H
7103h 47 (B)←(A) MOV B,A
A B
7104h 3A 03 D0 (A)←(D003h) LDA 0D003H
7107h 80 (A)←(A)+(B) ADD B

11
7108h 32 06 D0 (D006h)←(A) STA 0D006H
710Bh 3A 01 D0 (A)←(D001h) LDA 0D001H
710Eh 47 (B)←(A) MOV B,A
710Fh 3A 04 D0 (A)←(D004h) LDA 0D004H
7112h 88 (A)←(A)+(B) ADC B
(CY)
7113h 32 07 D0 (D007h)←(A) STA 0D007H
7116h 3A 02 D0 (A)←(D002h) LDA 0D002H
7119h 47 (B)←(A) MOV B,A
711Ah 3A 05 D0 (A)←(D005h) LDA 0D005H
711Dh 88 (A)←(A)+(B) ADC B
(CY)
711Eh 32 08 D0 (D008h)←(A) STA 0D008H
7121h 3A 09 D0 (A)←(D009h) LDA 0D009H
7124h 76 hlt HLT

Data Input Data Output

00 00 00 00 00 00 00 00 00
22 33 44 55 66 77 77 99 BB
56 78 9A 5A BC DE B0 34 79
FF FF FF 00 00 00 FF FF FF
FF FF FF FF FF FF FF FF FF

C. Penjumlahan 9 bilangan decimal 2 digit

C.1 Buatlah program untuk menjumlahkan 9 bilangan decimal 2 digit yang


berada pada alamat D000h sampai D008h. simpan hasilnya pada alamat
D00Ah dan D009h. Tulis program saudara mulai alamat 8000h.

12
C.2. Tabel untuk program diatas adalah sebagai berikut.
Alamat Kode Operasi Label Mnemonik
8000h 37 (CS) ← 1 STC
8001h 3F (CS)←(CS) CMC
8002h 01 09 00 (BC)←0009 LXI B,0009
8005h 21 00 D0 (HL)←D000h LXI H,0D000h
8008h 56 (D)←(HL) MOV D,M
8009h 23 (HL)←(HL)+1 J2 INX H
800Ah 0D (C)←(C)-1 DCR C
800Bh CA 1A 80 Z=1? JZ J1
800Eh 7E (A)←(HL) MOV A,M
800Fh 82 (A)←(A)+(DE) ADD D
8010h 27 (A)←(Decimal sum) DAA
8011h 57 (D)←(A) MOV D,A

13
8012h D2 09 80 CY=0? JNC J2
8015h 04 (B)←(B)+1 INR B
8016h C3 09 80 (PC)←J2 JMP J2
8019h 7A (A)←(D) MOV A,D
801Ah 32 09 D0 (D009)←(A) J1 STA 0D009h
801Dh 78 (A)←(B) MOV A,B
801Eh 32 0A D0 (D00A)←(A) STA 0D00Ah
8021h 76 HLT HLT

Alamat
D00 D00 D00 D00 D00 D00 D00 D00 D00 D00 D00
0 1 2 3 4 5 6 7 8 A 9
00 00 00 00 00 00 00 00 00 00 00
10 20 30 40 50 60 70 80 90 04 50
99 99 99 99 99 99 99 99 99 08 91
44 44 44 44 44 44 44 44 44 03 96

D. Mendapatkan hasil suatu persamaan

D.1. Buatlah program untuk menghasilkan hasil perhitungan ber-dasarkan


persamaan matematis berikut. Tulis program saudara mulai pada alamat
8100h.
A = B + C – D – E +H

14
Alamat Kode operasi Label Mnemonik
8100h 06 99 (B)←99h mvi b,99h
8102h 0E 99 (C)←99h mvi c,99h
8104h 16 99 (D)←99h mvi d,99h
8106h 1E 99 (E)←99h mvi e,99h
8108h 26 23 (H)←23h mvi h,23h
810Ah 78 (A)←(B) mov a,b
810Bh 81 (A)←(A)+(C) add c
810Ch 92 (A)←(A)-(D) sub d
810Dh 93 (A)←(A)-(E) sub e
810Eh 84 (A)←(A)+(H) add h
810Fh 76 HLT hlt

15
Register Hasil
B C D E H Cy A
99 99 99 99 23 00 23
30 40 12 05 08 00 61
40 90 00 12 00 00 BE
80 70 60 50 30 00 70
98 76 54 32 10 00 98

V. Analisa

Pada Percobaan kali ini bertujuan membuat program untuk menjalankan data
heksadesimal yang terdapat pada register. membahas tentang Instruksi
Aritmatika. Percobaan data pertama yaitu Membuat bagan alir dan program untuk
menjumlahkan data-data heksadesimal yang berada pada register-register D, E, H,
dan L. Kemudian data disimpan pada register A dan menggunakan register B
untuk menyimpan “carry bit”. Tulis program tersebut mulai alamat 7000h.Data
data kedua membuat program untuk menjumlahkan 9 bilangan decimal 2 digit
yang berada pada alamat D000h sampai D008h. hasilnya dilihat pada alamat
D00Ah dan D009h.
Kesimpulan
Instruksi-instruksi yang termasuk ke dalam kelompok instruksi aritmatika di
antaranya adalah ADD, ADI, ADC, SUB, SUI, SBB, SBI, INR, DCR, INX, DCX,
DAD, dan DAA. Di samping instruksi-instruksi tersebut di atas, operasi-operasi
aritmatika lainnya yang sering dipergunakan untuk membandingkan nilai bilangan
adalah instruksi CMP dan CPI. Instruksi ADD dipergunakan untuk melakukan
operasi penjumlahan 8-bit. Pada operasi tersebut, isi register A (akumulator) akan
ditambah dengan isi register 8-bit atau lokasi memori yang alamatnya ditunjukkan
oleh pasangan register HL

16

Anda mungkin juga menyukai