Bahan kuliah 7 pemograman lanjutan

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

PEMOGRAMAN

I

LANJUTAN
Operasi-operasi aritmatika dan logika pada mikroprosessor sama seperti

operasi pada system digital biasa. Operasi aritmatika yang dapat dikerjakan oleh
mikroprosessor 8085 adalah Penjumlahan, Pengurangan dan operasi logika adalah
Invers, AND, OR, EX-OR, Instruksi Banding dan instruksi Geser serta Putar.
Instruksi Pemrosesan Data (Data Processing)
Instruksi pemrosesan data merupakan instruksi aritmatika dan logika.
Seluruh operasi dari instruksi akan mempengaruhi isi dari Bendera (Flag).
Instruksi aritmatika terdiri dari :
Instruksi Penjumlahan (ADD)
Instruksi Penjumlahan dapat dibedakan lagi atas :
 Penjumlahan 8-bit
Instruksi penjumlahan bilangan biner 8-bit ini merupakan penjumlahan
isi register A dengan isi register yang lain atau suatu bilangan konstanta.

Tabel 1. Instruksi Penjumlahan 8-bit tanpa carry
Assembly

Kode-mesin

ADI d8

C6 – d8

ADD r

Fungsi
;

op – code

Acc = Acc + d8
;

Acc = Acc + (Reg)


Contoh :
MVI A,85

;

Acc

Dosen Pembimbing : Salahuddin, SST

= 85

85(H)

1000 0101(2)

1

Bahan Kuliah Mikroprosessor untuk Teknik Listrik


MVI C,83

;

Reg.C= 83

83(H)

1000 0111(2)

ADD C

;

Acc = Acc + C

08(H)

1 0000 1000(2)


RST

;

Dari hasil operasi di atas maka : Acc = 08 dan bit register flag akan berisi : S=0,
H=0, P=0, Cy=1.
Isi register 0 tetap 83.


Instruksi Penjumlahan dengan carry

Penjumlahan data 8-bit dengan carry adalah penjumlahan Akkumulator
dengan data atau isi register dan ditambahkan dengan carry sebelum operasi
dilaksanakan. Bentuk formatnya adalah sebagai berikut :
Tabel 2. Instruksi Penjumlahan 8-bit dengan carry.
Assembli

Kode-mesin

ACI d8


CE-d8

ADC r

op-code

Fungsi
; Acc = Acc + d8 + Cy
; Acc = Acc + Reg.r + Cy

Contoh :
MVI A, 89

;

Acc = 89

MVI C, 83


;

Reg.C = 83

ADI 83

;

Acc + 83

ADC C

;

Acc = Acc + c

RST 1

;
Dari hasil operasi diatas maka : cc=90 dan bit register flag akan berisi:


S=1, z=0, H=1, P=1, Cy=0. Isi register C tetap 83.


Instruksi Penjumlahan dengan 16-bit

Dosen Pembimbing : Salahuddin, SST

2

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Instruksi penjumlahan 16-bit adalah penjumlahan isi pasangan register L
dengan pasangan register lain, dimana dalam pemerosesan isi pasangan register
tersebut melalui Akkumulator. Instruksi ini adalah DAD (Double ADD).
Tabel 3. Instruksi Penjumlahan 16-bit
Assembli

Kode-mesin


DAD rp

op-code

Fungsi
;

(HL) = (HL) + rp

Contoh :
LXI H,8456

8456(H)

LXI B,8742

8743(H)

DAD B


Cy-1

OB99

RST 1
Setelah operasi diatas isi Register HL=OB99(H)dan BC=2743 (tetap) dan Cy=1


Instruksi Penambahan satu (Increment)

Instruksi penambahan satu ada dua buah, yaitu penambahan isi register 8bit dengan satu dan penambahan isi pasangan register dengan satu, tetapi
penambahan satu untuk pasangan register tidak mempengaruhi
isi bendera, dengan bentuk formasi sebagai berikut:
Tabel 4. Instruksi Penambahan Satu
Assembli

Kode-mesin

Fungsi


INR r

op-code

; Reg. r

= Reg.r + 1

INX rp

op-code

; Reg. rp

= Reg.rp + 1

Instruksi Pengurangan (SUB)

Dosen Pembimbing : Salahuddin, SST


3

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Instruksi Pengurangan dibedakan atas :
-

Instruksi Pengurangan dengan satu (Decremen)

Instruksi ini menyebabkan suatu register atau pasangan register berkurang satu.
Tabel 5. Instruksi Pengurangan Satu
Assembli

Kode-mesin

DCR r

op – code

; Reg. r

DCX rp

op – code

; Reg. rp = Reg. rp - 1

-

Fungsi
= Reg.r - 1

Instruksi Pengurangan data 8 - bit

Instruksi pengurangan data 8-bit adalah pengurangan isi akkumulator dengan data
8-bit atau isi register dengan bentuk format sebagai berikut :
Tabel 6. Instruksi pengurangan 8-bit tanpa borrow.
Assembli

Kode-mesin

SUI

op-code

; Acc = Acc - d8

op-code

; Acc = Acc - Reg.r

d8

SUB r

Fungsi

Contoh :
MVI A,84

84(H)

1000 0100(2)

MVI B,27

27(H)

0010 0111(2)

SUB B

5D(H)

0101

1191(2)

RST 1
Setelah program diatas dieksekusi maka Acc=5D (H), B=27(H), Flag: S=0, Z=0,
H=1, Cy=0.

- Instruksi Pengurangan data 8-bit dengan borrow

Dosen Pembimbing : Salahuddin, SST

4

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Tabel 7. Instruksi pengurangan 8-bit dengan borrow.
Assembli

Kode-mesin

Fungsi

SBI d8

op-code

; Acc = Acc - d8 - Cy

SBB r

op-code

; Acc = Acc - Reg.r – Cy

MVI A,57

57(H)

0101 0111(2)

SUI 58

58(H)

0101 1000(2)

Contoh :

MVI B,27

Cy=1 FF(H)

1111 1111

SBB B

27(H)

0010 0111

RST 1

D7(H)

1101 0111(2)

Setelah program diatas dieksekusi maka Acc=D7(H), B=27(H), Flag : S=1, Z=0,
H=0, Cy=0, P=1.
Instruksi Pendesimalan (DAA)
Instruksi ini berfungsi untuk menambahkan 06, 60, 66 terhadap isi akkumulator
jika hasil penjumlahan lebih besar dari 9. Penambahan 06, 60 atau 66 pada
akkumulator berdasarkan isi dari Register Bendera.
Contoh:
MVI A, 84

84(H)

1000 0100(2)

MVI B,27

27(H)

0010 0111(2)

ADD B

AB(H)

1010 1011(2)

DAA

66

0110 0110(2)

RST 1

Cy=1

Dosen Pembimbing : Salahuddin, SST

11

0001 0001(2)

5

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Penjumlahan diatas adalah penjumlahan Desimal.
Setelah program diatas dieksekusi maka Acc=11(H), B=27(H), Flag: S=0, Z=0,
H=1, Cy=1.
Instruksi Banding (Compare)
Instruksi Banding merupakan instruksi pengurangan isiAkkumulator
dengan suatu data 8-bit atau isi suatu register, tetapi isi dari akkumulator tetap
yang berubah hanya register bendera.
Tabel 8. Instruksi Pembandingan
Assemli

Kode-mesin

Fungsi

CPI d8

FE-d8

;

Flag = Acc – d8

CPM r

op-code

;

Flag = Acc – Reg. r

Contoh :
1. MVI A, 87

2. MVI A, 78

3. MVI A, 67

MVI A, 27

CPI 78

MVI C, 80

CMP B

RST 1

CMP C

RST 1

RST 1

Contoh 1 merupakan pembandingan isi Akumulator dengan isi Register B,
Proses pembandingan ini dilakukan dengan cara pengurangan isi Acc terhadap isi
reg. B tetapi isi Acc tidak berubah. Setelah program diatas dieksekusi maka Acc =
87(H), B=27(H), Flag P = 1, S = 0, Z = 0, H = = 0, Cy = 0.
Program contoh 2 akan menghasilkan Flag : Cy = 0, Z = 1.
Program contoh 3 akan menghasilkan Flag : Cy = 1, Z = 0.

Dosen Pembimbing : Salahuddin, SST

6

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Instruksi Operasi Logika
Instruksi-instruksi logika ini melaksanakan operasi logika antara
Akkumulator dengan suatu data 8-bit atau dengan isi suatu register dimana
instruksi ini terdiri dari operasi logika AND (^), logika OR (v), dan Exclusive-OR.


Instruksi Logika AND.
Instruksi Logika AND ini akan menghasilkan output seperti table

kebenaran gerbang logika AND, jadi instruksi ini padat mewakili fungsi
gerbang logika AND biasa.
Tabel 9. Instruksi Logika AND
Assembli

Kode-mesin

Fungsi

ANI d8

E6-d8

;

Acc = Acc ^ d8

ANA r

op-code

;

Acc = Acc ^ Reg. r

Contoh :
MVI A, 84

84(H)

MVI B, 27

27(H)

ANA B

04(H)

1000 0100(2)
^

0010 0111(2)

^

0000 0100(2)

RST 1


Instruksi Logika OR.

Tabel 10. Instruksi Logika OR
Assembli

Kode-mesin

ORI d8

F6-d8

;

Acc = Acc v d8

ORA r

op-code

;

Acc = Acc v Reg. r

Dosen Pembimbing : Salahuddin, SST

Fungsi

7

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Contoh :
MVI A, 84

84(H)

MVI B, 27

27(H)

ORA B

A7(H)

1000 0100(2)
v

0010 0111(2)

v

1010 0111(2)

RST 1


Instruksi Logika Ex-OR

Tabel 11. Instruksi Logika Ex - OR
Assembli

Kode-mesin

Fungsi

XRI d8

EE-d8

;

Acc = Acc v d8

XRA r

op-code

;

Acc = Acc v Reg. r

Contoh :
MVI A, 84

84(H)

MVI B, 27

27(H)

XRA B

A3(H)

1000 0100(2)
v

0010 0111(2)

v

1010 0011(2)

RST 1


Instruksi Komplement (Complement)
Instruksi Complement ini ada dua buah yaitu CMC dan CMA,

dimana CMC berfungsi untuk mengkomplemenkan isi bit carry dari
register bendera dan CMA berfungsi untuk mengkomplemenkan isi dari
register A.
Instruksi Geser (Shift) dan Putar (rotate).

Dosen Pembimbing : Salahuddin, SST

8

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Instruksi ini berfungsi untuk menggeser isi dari Register A kea rah kanan
atau kiri seperti digambarkan pada gambar 4.1 berikut :

Cy

Akkumulator
RLC

Cy

Akkumulator

RRC

RAL

RAR

Akkumulator

Cy

Akkumulator

Cy
Cy

Akkumulator

gambar 4.1. Fungsi Instruksi Geser dan Putar
Contoh 1 :

Contoh 2 :

STC

; Set Carry Cy = 1

STC

CMC

: Complement Carry Cy = 0

MVI A, 82 ;A=82(H) Cy=1

Dosen Pembimbing : Salahuddin, SST

; Set Carry Cy = 1

9

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

MVI A, 82

; A = 82(H)

Cy = 0

RRC

RLC

; A = 05(H)

Cy = 1

RST 1

; A = 41(H)

Cy = 0

RST 1
Contoh 3 :

Contoh 4 :

STC

STC ; Set Carry Cy = 1

; Set Carry Cy = 1

MVI A, 82
RAL

; A = 82(H)

; A = 05(H)

Cy = 1

Cy = 1

MVI A, 82 ;A=82(H) Cy=1
RAR ; A = C1(H) Cy = 0

RST 1

RST 1

Instruksi Kontrol
CPU 8085 mempunyai beberapa instruksi control yang menentukan arah
suatu program, mengambil keputusan dan memodifikasi arah program sesuai
dengan hasil pengambilan keputusan. Instruksi ini terdiri dari :
1.

Instruksi Lompat (JUMP)
Instruksi ini terbagi atas dua jenis, yaitu mutlak lompat (unconditional

jump) dan lompat bersyarat (conditional jump). Adapun bentuk format dari
instruksi ini seperti pada table 12.
Tabel 12. Instruksi Lompat
Assembli

Kode-Mesin

JMP a16

C3-ll-hh

; Lompat ke alamat a 16

JZ

a16

CA-ll hh

; Lompat jika ZERO

JNZ a16

C2-ll-hh

; Lompat jika tidak ZERO

JC

a16

DA-ll-hh

; Lompat jika ada Carry

JNC a16

D2-ll-hh

; Lompat jika tidak ada Carry

JM

a16

FA-ll-hh

; Lompat jika minus

JP

a16

F2-ll-hh

; Lompat jika Positif

Dosen Pembimbing : Salahuddin, SST

Fungsi

10

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

2.

JPE a16

EA-ll-hh

; Lompat jika Parity Genap

JPO a16

E2-ll-hh

; Lompat jika Parity Ganjil

Instruksi Cabang dan Kembali (CALL, RET)
Instruksi CALL membuat suatu program melaksanakan suatu program

subrutin yang alamat awalnya setelah kode operasi dari instruksi CALL tersebut,
dan akan kembali lagi ke program utama jika instruksi kembali RET (return)
dijumpai. Instruksi ini terdiri dari dua jenis yaitu instruksi bersyarat dan tidak
bersyarat. Syarat dari instruksi ini dilihat dari kondisi isi register Bendera. Setelah
instruksi ini dikerjakan isi register bendera tidak berubah.
Tabel 13. Instruksi Cabang
Assembli

Kode-Mesin

Fungsi

CALL a16

CE-ll-hh

; CALL Sub Rutin pada alamat a 16

CC

a16

DC-ll hh

; CALL Sub Rutin jika ada Carry

CNC a16

D4-ll-hh

; CALL Sub Rutin jika tidak ada Carry

CZ

a16

CC-ll-hh

; CALL jika zero

CNZ a16

C4-ll-hh

; CALL jika tidak zero

CM

a16

FC-ll-hh

; CALL jika minus

CP

a16

F4-ll-hh

; CALL jika Positif

CPE a16

EC-ll-hh

; CALL jika Parity Genap

CPO a16

E4-ll-hh

; CALL jika Parity Ganjil

Tabel 14. Instruksi Kembali

Dosen Pembimbing : Salahuddin, SST

11

Bahan Kuliah Mikroprosessor untuk Teknik Listrik

Assembli

Kode-Mesin

RET

C9

; Kembali ke Program Utama

RC

D8

; Kembali jika ada Carry

RNC

D0

; Kembali jika tidak ada Carry

RZ

C8

; Kembali jika hasil 0

RNZ

C0

; Kembali jika hasil tidak 0

RM

F0

; Kembali jika Akkumulator negatif

RP

FB

; Kembali jika Akkumulator Positif

RPE

E0

; Kembali jika Acc berparity Genap

RPO

EB

; Kembali jika Acc berparity Ganjil

Dosen Pembimbing : Salahuddin, SST

Fungsi

12