INSTRUSKSI DASAR MIKROPROSESOR 8085

BAB VII INSTRUSKSI DASAR MIKROPROSESOR 8085

7.1 Pendahuluan

Agar suatu mikrokomputer dapat bekerja maka harus diberikan instruksi, dimana instruksi ini merupakan perintah-perintah yang akan dilaksanakan oleh mikroprosessor. Instruksi ini terdiri dari kode operasi (Op-Code) dan alamat atau data yang diperlukan.

Kode Operasi (Op-Code) pada CPU 8085 terdiri dari 8-bit, yang berarti terdapat 256 (2 8 ) instruksi yang berbeda tetapi yang diperkenalkan pada umum hanya 246

instruksi. Bentuk format dari instruksi umumnya terdiri dari Op-Code dan Operand. Op- Code adalah singkatan dari Operation Code yang menyatakan instruksi yang akan dilaksanakan, sedangkan Operand adalah data yang digunakan oleh Op-Code yang berupa data atau alamat. Format dari bentuk perintah yang digunakan pada CPU 8085 ada 3 jenis yaitu 1 byte, 2 byte, 3 byte yang ditunjukkan pada gambar berikut.

Byte 3 Kode Operasi (Op-

Byte 1

Byte 2

Data byte rendah (low Data byte tinggi (high Code)

order data) atau

order data)

byte rendah alamat

Atau

(low order address)

Byte tinggi alamat (high order address)

Gambar 7.1. Bentuk Format dari Perintah CPU 8085

Berdasarkan fungsinya instruksi CPU 8085 dapat dibedakan atas 5 jenis, yaitu :

1. Instruksi Pemindahan Data (Data Transfer)

2. Instruksi Pemrosesan Data (Data Processing)

3. Instruksi Kendali (Control)

4. Instruksi Masukan-Keluaran (Input-Output)

5. Instruksi Lompat dan Cabang (Jump and Branch)

7.2 Mode Pengalamantan

Pengalamatan pada mikroprosesor 8085 dibagi atas: Pengalamatan Implied (Implied addressing), pengalamatan seketika (immediate addressing), pengalamatan Pengalamatan pada mikroprosesor 8085 dibagi atas: Pengalamatan Implied (Implied addressing), pengalamatan seketika (immediate addressing), pengalamatan

1. Pengalamatan Implied Penglamatan jenis ini adalah instruksi yang hanya terdiri dari kode

operasi (op-code) yaitu 8-bit. Instruksi pengalamatan paling sederhana ini adalah operasi yang men-set atau meng-clear register bendera (Reg. Flag), menambah/mengurangi register Internal (A, B, C, D, E, H, L, SP), atau mentrasfer isi dari suatu register ke register yang lain.

Contoh : INR A 3C; Tambah dengan 1 isi ACC.

ADD B 80;

Jumlahkan isi ACC dengan isi register B

2. Pengalamatan Seketika (Immediate Addressing) Pengalamatan seketika adalah instruksi yang operandnya adalah data langsung. Untuk penstranferan data Mikroprosessor 8085 mempunyai dua bentuk

dasar dari instruksi pengalamatan seketika ini yaitu:

a. Bentuk MVI (Move Immediate); Bentuk ini digunakan untuk mentransfer data

8-bit ke suatu register 8-bit.

Contoh : MVI A, 05 3E-05 ; Data 05 diberikan ke Acc.

b. Bentuk LXI (Load Immediate); Bentuk ini digunakan untuk membebani

pasangan register dengan data 16-bit. Setiap Instruksi LXI terdiri dari 3byte, yaitu byte pertama berisi Op-Code, byte kedua dan ketiga berisi data immediate

16 bit. Contoh : LXI H, 7894 21-94-78 ; Reg. HL = 7894

3. Pengalamatan Langsung (Direct Addressing) Pengalamatan langsung adalah pengalamatan yang langsung menuju lokasi

memori. Instruksi ini terdiri dari kode operasi yang diikuti oleh alamat dari lokasi yang dituju. Mikroprosessor 8085 mempunyai dua bentuk instruksi pengalamatan langsung yaitu: Instruksi membebani yang menyimpan Accumulator, instruksi membebani yang menyimpan isi pasangan register HL. Contoh:

Assembly Machine

Comment

LDA a16 3A-ll-hh

Reg. A diisi dengan isi alamat a16

STA a16 32-ll-hh

Isi Reg. A disimpan pada alamat a16

LHLD a16 2A-ll-hh HL dibebani dengan data dari isi memory a16 + 1. SHLD a16 22-ll-hh

Isi pasangan Reg. HL disimpan pada alamat a16 dan a16 +1.

Catatan : a16 = alamat 16-bit , ll = alamat low byte, hh = alamat high byte

4. Pengalamatan Tidak Langsung (Indirect Addressing) Pengalamatan tidak langsung adalah pengalamatan suatu lokasi memori

dimana pengalamatan dilakukan melalui register. Pengalamatan tidak langsung pada 8085 dilakukan melalui register M dan dengan instruksi STAX dan LDAX. Register M adalah memori dimana alamatnya terdapat pada pasangan register HL.

Contoh : Assembly

Machine

Comment

LDAX B

02 ;Bebani Reg. A dengan isi alamat yang alamatnya

terdapat pada Reg. BC

LDAX D 0A ;Bebani Reg. A dengan isi alamat yang alamatnya

terdapat pada Reg. DE

STAX B

12 ;Simpan isi Reg. A pada lokasi memory yang

alamatnya terdapat pada Reg. BC

STAX D 1A ;Simpan isi Reg. A pada lokasi memory yang alamatnya

terdapat pada Reg. DE

MVI M, 05 36-05 ;Bebani memory dimana alamatnya pada HL dengan data 05

Contoh berikut ini mengilustrasikan bagaimana pasangan Register dibebani dengan alamat memory dan kemudian dengan menggunakan instruksi LDAX B Akkumulator dibebani dengan data dari lokasi memory 1000(H), dan selanjutnya data tersebut disimpan kembali pada alamat 1200(H) dengan instruksi STAX D. Contoh :

LXI B, 1000 (H)

01-00-10

;alamat 1000(H)  BC

LXI D, 1200 (H)

11-00-12

;alamat 1200(H) DE

LDAX B

0A ;isi alamat 1000(H)  ACC.

STAX D

12 ;isi Akkumulator  alamat 1200

5. Pengalamatan Register Pengalamatan ini merupakan pemindahan/pembacaan data antara register.

Pengalamatan register ini merupakan pengalamatan yang paling umum digunakan. Pengalamatan register ini mempunyai panjang 8-bit.

a. Instruksi Data Transfer Antara Register Kelompok ini terdiri dari 63 Instruksi yang berbeda. Instruksi ini disebut dengan pemindahan (MOV = Move). Format dasar dari instruksi MOV digambarkan seperti dibawah ini :

MOV rd, rs rd = Register tujuan; rs = Register asal Daftar yang lengkap dari instruksi MOV diperlihatkan pada daftar Instruksi set 8085. Perhatikan bahwa beberapa dari instruksi ini menggunakan pengalamatan indirect seperti pengalamatan Register

Contoh berikut menunjukkan bagaimana suatu bilangan pada Accumulator dipindahkan ke Register D dan E. Instruksi mula-mula mengcopy isi Accumulator ke Register D dan kemudian mengcopy isi Register D ke Register E.

Contoh : Assembly

Comment MOV D, A

Machine

Isi Acc. Dicopy ke Reg. D MOV E, D

5A ;

Isi Acc. Dicopy ke Reg. E

b. Operasi Tranfer Data Stack Mikroprosessor 8085A mempunyai sifat penumpukan data dengan system LIFO

(Last In First Out). Stack digunakan untuk menyimpan alamat kembali (return) dari subroutine dan juga penyimpanan data untuk sementara waktu. Agar pemogram mengetahui lokasi Stack penyimpanan data maka perlu alamat Stack tersebut ditandai terlebih dahulu. Penandaan ini dilaksanakan dengan mengisi SP (Stack Pointer). Instruksi yang berhubungan dengan Stack ini adalah PUSH, POP, XTHL. POP membaca data dari Stack, dan XTHL adalah mempertukarkan ini Register HL dengan isi Stack yang ditunjuk oleh SP.

Comment PUSH PSW

Assembly

Machine

F5 Isi Reg. A dan Flag disimpan pada stack

PUSH B C5 Isi pasangan Reg. BC disimpan pada stack

PUSH D D5 Isi pasangan Reg. DE disimpan pada stack

PUSH H E5 Isi pasangan Reg. HL disimpan pada stack

POP PSW F1 data pada stack diambil kembali dan dimasukkan ke Reg. A dan Flag.

POP B C1 data pada stack diambil kembali dan dimasukkan ke Reg. BC

POP D D1 data pada stack diambil kembali dan dimasukkan ke Reg. DE

POP H E1 data pada stack diambil kembali dan dimasukkan ke Reg. HL

XTHL E3 isi Reg. HL saling dipertukarkan dengan data yang terdapat pada stack

• Operasi PUSH Instruksi PUSH merupakan instruksi untuk menyimpan data pada Stack.

Instruksi set ini terdiri dari instruksi PUSH, POP, XTHL. Operasi dari PUSH ini ditunjukkan paada Gambar 7.2. berikut:

PUSH D

SEBELUM

SESUDAH D E D E 12 34 12 34

9003 0F 9003 0F 9004

Memory Stack Gambar 7.2. Operasi PUSH

Anggap bahwa isi SP adalah 9003(H) dan pasangan register DE berisi data 1234(H). Instruksi PUSH membuat isi SP dikurangi satu (SP-1 = 9002) dan 12(H) dari Reg. D disimpan pada memori 9002. Kemudian isi SP dikurangi satu lagi (SP- 2=9001) dan kemudian data 34(H) dari Reg. E disimpan pada memory 9001, sedangkan isi alamat 9003 sampai 9004 dan isi register tetap.

• Operasi POP Instruksi POP adalah instruksi yang membaca data kembali dari Stack,

seperti ditunjukkan pada Gambar 7.3. berikut ini :

POP D

SEBELUM

SESUDAH D E D E 66 87 12 34

9003 0F 9003 0F 9004

Memory Stack Gambar 7.3. Operasi POP

Langkah-langkah operasi POP D menghasilkan sebagai berikut: Anggap bahwa isi SP tidak berubah dari saat instruksi PUSH (SP=9001). Data dari Stack alamat 9001 diambil kembali dan dimasukkan ke Register E dan setelah itu isi SP ditambah satu (SP+1=9002(H)), kemudian isi alamat 9002(H) dimasukkan ke register D selanjutnya isi SP ditambah satu lagi (SP+2=9003(H)).

• Operasi Exchange HL dengan Data Stack (XTHL) Instruksi ini meng-exchange (menukar) isi pasangan Register HL dengan data yang ada pada stack.

Contoh : Data 1000 (H) di push pada stack dan HL berisi 2000 (H), maka setelah instruksi XTHL akan mengakibatkan kedua harga ini diexchage, sehingga HL berisi 1000 (H) dan stack berisi 2000 (H).

• Miscelleneous Data Transfer Instruction. Instruksi Miscelleneous adalah instruksi yang tidak termasuk kepada kelompok

diatas. Instruksi-instruksi ini seperti yang terdapat pada table.

IN p8 DB p8 ; Baca data yang ada pada Port p8 dan simpan di

Acc.

OUT p8 D3 p8 ; Keluarkan isi Acc ke Port beralamat p8 SPHL

F9 ; Isi pasangan Reg. HL diberikan pada Stack Pointer (SP)

XCHG

EB ; HL dan DE saling dipertukarkan

• Instruksi IN dan OUT Instruksi IN dan OUT berfungsi untuk berhubungan dengan peralatan

input/output. Instruksi IN dan OUT diikuti dengan alamat input output yang akan dituju. Pada saat mikroprosessor melaksanakan instruksi IN atau OUT saluran alamat byte rendah dan byte tinggi sama yaitu berisiskan alamat input/output yang dituju, jadi untuk mendekodekan alamat input/output dapat input/output. Instruksi IN dan OUT diikuti dengan alamat input output yang akan dituju. Pada saat mikroprosessor melaksanakan instruksi IN atau OUT saluran alamat byte rendah dan byte tinggi sama yaitu berisiskan alamat input/output yang dituju, jadi untuk mendekodekan alamat input/output dapat

Instruksi OUT 20H menyebabkan isi akkumulatordikeluarkan ke port (Bandar) yang beralamat 20H dan instruksi IN 21H menyebabkan data pada port yang beralamat 21H masuk pada akkumulator.

• Instruksi SPHL Instruksi ini berguna untuk membebani Stack Pointer dengan isi pasangan

register HL. Instruksi SPHL ini hanya 1 byte (Op-Code saja). Instruksi ini sering digunakan untuk menandai Stack Pointer untuk menggantikan instruksi LXI SP. Misalnya sebelum instruksi SPHL ini isi Stack Pointer (SP) adalah 0008 (H) dan pasangan register HL berisi 7008 (H). Setelah instruksi ini dikerjakan microprocessor maka Stack Pointer akan berisi 7008 (H).

• Instruksi XCHG Instruksi ini berfungsi untuk meng-exchange isi pasangan register HL

dengan pasangan register DE. Anggap sebelum instruksi XCHG isi pasangan register HL = 5643 (H), DE = 7613 (H), maka setelah instruksi XCHG dikerjakan mikroprosessor maka isi pasangan register HL = 7613 (H) dan DE = 5643 (H).

LXI D, 1200 (H) 11-00-12

Tanda untuk alamat 1200 (H)

LXI H, 1000 (H) 21-00-1 Tanda untuk alamat 1000 (H) MOV A, M

7E Data dari alamat 1000 (H) dimasukkan ke Accumulator.

XCHG EB Tanda untuk alamat saling dipertukarkan. MOV B, M

46 Isi alamat 1200 (H) dimasukkan ke register B MOV M, A

77 Isi alamt 1000 (H) dimasukkan ke alamat 120 XCHG

EB Tanda dipertukarkan kembali. MOV M, B

70 Isi alamat 1200 (H) yang pertamadimasukkan ke alamat memori.

Tugas dan Pertanyaan :

1. Apa yang dimaksud dengan Op-Code dan Operand

2. Sebutkan 5 jenis instruksi pada Mikroprosessor 8085 menurut fungsinya.

3. Sebutkan dan jelaskan Mode Pengalamatan pada Mikroprosessor 8085 serta berikan contohnya.

4. Isilah alamat, Op-Code dan comment pada table berikut sesuai dengan Instruksi pada Mnemonic.

Setelah program di atas dilaksanakan (execute) isi dari : Reg. A =

_Reg. B =

Reg. L =

Isi alamat dari : 7800 (H) =

7801 (H) =

7803 (H) = Buatlah sebuah Program Perkalian untuk mengalikan dua buah bilangan yaitu 07 dikalikan dengan 06, dan hasil perkaliannya disimpan pada Register D, dan alamat nya dimulai dari alamt 9000

7802 (H) =