INSTRUSKSI DASAR MIKROPROSESOR
7.2 Mode Pengalamantan
Pengalamatan pada mikroprosesor 8085 dibagi atas: Pengalamatan Implied (Implied addressing), pengalamatan seketika (immediate addressing), pengalamatan
langsung (direct addressing), pengalamatan tidak langsung (indirect addressing), dan pengalamatan register (register addressing).
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 :
Assembly Machine Comment
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.
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.
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.
Contoh : Assembly MOV D, A Machine 57 ; Comment
Isi Acc. Dicopy ke Reg. D
Assembly Machine Comment
PUSH PSW 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
PUSH D SEBELUM SESUDAH D E D E 12 34 12 34 9003 SP 9001 9001 B6 SP 9001 34 9002 05 9002 12 9003 0F 9003 0F 9004 08 9004 08 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 9001 SP 9003 9001 34 SP 9001 34 9002 12 9002 12 9003 0F 9003 0F 9004 08 9004 08 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.
Assembly Machine Comment
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
diambil dari saluran alamat tinggi atau alamat rendah. Jadi lokasi alamat
input/output yang dapat diakses maksimum 256.
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).
Contoh:
Assembly Machine Comment
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
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) =
7802 (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
BAB VII