Escolar Documentos
Profissional Documentos
Cultura Documentos
I.
Tujuan Percobaan Memahami berabagai register dan fungsi-fungsinya. Memahami penggunaan register dan memori sebagai sarana pemindahan data. Memahami penggunaan beberapa perintah pemindahan data.
II .
Alat dan Bahan Seperangkat Midicom, yang terdiri dari : 1. Monitor 2. Papan tombol 3. CPU (Central Processing Unit) 8085
Mikroprosesor 8085 mempunyai bermacam-macam register, berkapasitas 8 bit dan apabila dua buah register digabungkan dapat membentuk sebuah pasangan register dengan kapasitas 16 bit. Disamping itu tersedia pula register dengan kapasitas khusus 16 bit. Tiap register mempunyai fungsi khusus yang tidak dipunyai oleh register lain, namun semuanya merupakan tempat penyimpanan data sementara dalam suatu rutin program. Fungsi khusus masing-masing register dapat dijelaskan sebagai berikut: Register A Register ini dikenal juga dengan nama Akumulator, fungsinya sebagai tempat menyimpan data pada perhitungan matematika, logika, dan proses
pembacaan/pengisian data pada memori. Disamping itu, pada perintah masukan/keluaran, perbandingan, pergeseran data juga disimpan pada akumulator. Lebih rinci penggunaan register ini akan dibahas pada bab berikutnya saat membahas perintah CPU 8085. Register F Register ini berfungsi sebagai bendera pada operasi logika, aritmatika, pergeseran, perbandingan dan lain-lain. Tiap bitnya mempunyai fungsi tersendiri. Bit tersebut digunakan sebagai penanda pada rutin percabangan. Secara rinci register bendera akan dijelaskan pada percobaan 3. Register bendera bersama-sama dengan Akumulator disebut PSW (Processor Status Word), yaitu sebuah register dengan kapasitas 16 bit.
Register B, C, D, E, H, L Register ini berfungsi sebagai tempat penyimpanan sementara data 8 bit pada proses pemrograman. Register ini jika dipasangkan seperti terlihat pada Gambar 2.1 akan membentuk suatu register dengan kapasitas 16 bit dan disebut sebagai pasangan register, fungsinya selain sebagai tempat penyimpanan data 16 bit, juga dapat digunakan sebagai penunjuk suatu alamat memori, misalnya pasangan register HL sebagai penunjuk alamat memori register M.
Register PC (program counter) Program Counter merupakan penunjuk alamat perintah yang akan dijalankan oleh CPU. Pasangan register ini akan bertambah nilainya secara otomatis sesuai dengan alamat perintah yang akan dijalankan berikutya.
Register SP (stack pointer) Register ini berfungsi sebagai penunjuk alamat memori, yaitu tempat menyimpan alamat kembali untuk perinta CALL dan tempat menyimpan data pada perintah PUSH-POP. Keterangan lebih jelas tentang register ini akan dibahas pada percobaan 7.
Register M (memori) Register ini sebetulnya adalah memori, karena penunjukkan data pada memori harus berdasarkan alamatnya, maka pada register M ini penunjukkan alamatnya ditentukan oleh isi pasangan register HL.
Memori Seperti yang telah dibahas pada percobaan I, memori penunjang CPU 8085 pada Midicom terdiri dari EPROM (@0000-@3FFF) dan RaM (@6000-@FFFF). Karena RAM pada lokasi @6000-@6FFF digunakan untuk cadangan memori bagi Midicom
Perintah Pemindahan Data 1. MVI r1,d8 Move immediate yaitu memindahkan secara langsung data 8 bit (d8) ke suatu register r1 2. MOV r1,r2 Mov data yaitu perintah untuk memindahkan suatu data dari register ke register, register memori atau sebaliknya dari memori ke register Data dipindahkan/diduplikatkan dari operand 2(r2) ke operand 1 (r1). Sama seperti perintah MVI, maka r1 dan r2 merupakan register 8 bit 3. LXI rp, d16 Load register pair immediate, yaitu mengisikan data 16 bit ke pasangan register secara langsung. Perintah yang berhubungan dengan pasangan register selalu ditandai dengan menggunakan huruf X kecuali pada perintah XRA,XRI. 4. XCHG Exchange digunakan untuk menukar data pada pasangan register DE dengan HL. Data pada E ditukar dengan data pada L sedangkan data pada D di tukar dengan H 5. LDA Adt Load accumulator direct, mengirimkan data dari memori dengan alamat Adr ke akumulator. Perintah ini di gunakan untuk membaca data pada suatu lokasi memori dengan alamat di tunjukkan secara langsung bersama kode operasinya.
6. STA Adr Store accumulator direct, perintah ini mempunyai suatu fungsimengrim data dari akumulator ke memori dengan alamat Adr. Perintah LDA Adr dan STA Adr merupakan perintah dengan model pengalamatan ;ansung artinya alamat memori yang merupakan tujuan ataupun asal pengiriman data ikut dituliskan dalam progam 7. LHLD Adr Load H & L direct, perintah ini mirip dengan LDA Adr, yaitu membaca data dari memori dengan pengalamatan langsung dan kirimkan ke suatu register. Perbedaan antara keduanya adalah kapasitas data yang dibaca, disini data yang dikirimkan adalah 16 bit atau 2 byte 8. SHLD Adr Store H & L direct, kebalikan perintah LHLD Adr, perintah ini akan mengirimkan data 2 byte ke memori dengan alamat Adr yaitu data pada register L dikirim ke alamat Adr dan data register H dikirim ke alamat Adr+1 9. LDAX rp Load accumulator indirect , yaitu mengisi akumulator dengan data dari memori yang alamatnya di tunjukkan oleh isi pasangan register (rp). Perintah ini mirip dengan LDA Adr hanyan saja alamt memori tidak di berikan secara langsung mengikuti kode operasinya, tettapi melalui perantara register 10. STAX rp Store acumulator indirect kalau LDAX rp berfungsi untuk mengisi akumulator. STAX rp berfungsi untuk memori dengan alamat ditunjukkan oleh pasangan register (rp) dengan data yang ada pada akumulator
IV.
Langkah Percobaan dan hasil percobaan 1. MVI r1,d8 -A = assembler Adr = 8000
[M]@8000 [M]@8000
2E CC
2. MOV r1,r2 -A = assembler Adr = 7006 7100 Adr 7000 7102 7104 7105 7107 Hex-code 2E 00 26 80 7E 2E 01 26 80 Mnemonics MVI L,00 MVI H,80 MOV A,M MVI L,01 MVI H,80
7109 710A
77 CF
710A CF
60CC 710B
[M]@8000 di [GO]
R]A = CC
3. LXI rp, d16 -A = assembler Adr = 710B 7200 Adr 7200 7203 7206 7209 Hex-code 21 0080 01 0180 11 80 CF Mnemonics LXI H,8000 LXI B,8001 LXI D,8002 RST 1
21 0080 01 0180 11 80 CF
0000 0101 8000 8001 0101 8000 8001 8002 8000 8001 8002 8000
[R] [H] = L = BB, H= 61 [R] [B] = B = 00, C= 00 [R] [D] = D = 01 , E= 01, ketika program di [GO]
4. XCHG -A = assembler Adr = 8000 Mnemonics LXI D,9000 MVI B,AA MVI C,CC XCHG RST 1
Isi data Register awal :[R]DE 9000 dan [R]B AA, [R]C CC ketika program di [GO]
Isi data setelah di [GO] :- Isi Data [R] D menjadi AA dan Isi Data [R] B menjadi 90 - Isi Data [R] E menjadi CC dan Isi Data [R] C menjadi 00
5. LDA Adr -A = assembler Adr = 7400 Mnemonics LDA 8000 LXI H,8002 MOV M,A RST 1 Isi data awal : @8000 CC dan [R] A = 64
[R] A = CC
6. STA Adr -A = assembler Adr = 7408 7500 Adr 7500 7503 7506 7509 750C Hex-code 3A 0070 32 0380 3A 0170 32 0480 CF Mnemonics LDA 7000 STA 8003 LDA 7001 STA 8004 RST 1
PC
A 2E 2E 00 00 00
M AA AA AA AA AA
F 54 54 54 54 54
SP
(SP)
60CA 7408 60CA 60CA 60CA 60CB 7408 7408 7408 750D
Isi data awal :[R] A = 64 dan [M] @8003 2E, ,ketika program di [GO]
[M] @8003 64
7. LHLD Adr -A = assembler Adr = 750D 7600 Adr 7600 7603 7606 7609 760A 760D Hex-code 21 0000 11 CCAA 2A 0080 EB 2A 028 CF Mnemonics LXI H,0000 LXI D,AACC LHLD 8000 XCHG LHLD 8002 RST 1
LXI H,0000
7603
60CB 7500 60CB 60CB 60CB 60CB 60C6 7500 7500 7500 7500 760E
LXI D,AACC 7606 LHLD 8000 XCHG LHLD 8001 RST 1 7609
[R]H = 07 [R]L = 06
8. SHLD Adr -A = assembler Adr = 760E 7700 Adr 7700 7703 7706 7709 770C Hex-code 2A 0080 22 0580 2A 0380 22 0780 CF Mnemonics LHLD 8000 SHLD 8005 LHLD 8003 SHLD 8007 RST 1
PC
A FF FF FF
M 1D 1D 61
F 54 54 54
7709
22 0780
770C FF FF70
0008 FF FF70
3322 3322
FF32 FF32
61 61
54 54
ZAP ZAP
60C4 60C4
8005 770D
770C CF
[M]@8000 = AA [M]@8001 = FF
9. LDAX -A = assembler Adr = 770D 7800 Adr 7800 7803 7804 7806 7808 7809 Hex-code 21 0080 46 16 80 1E 03 1A CF Mnemonics LXI H,8000 MOV B,M MVI D,80 MVI E,03 LDAX RST 1
PC
A FF FF FF FF 33 33
M 00 00 00 00 00 00
F 54 54 54 54 54 54
21 0080 46 16 80 1E 03 1A CF
LXI H,8000 MOV B,M MVI D,80 MVI E,03 LDAX RST 1
60CD 780A
[R]B = 01
10. STAX Adr -A = assembler Adr = 780E 7900 Adr 7900 7903 7905 7907 7908 7909 Hex-code 11 0080 16 08 0E 03 1D 02 CF Mnemonics LXI D,8000 MVI D,80 MVI C,03 LDAX D STAX B RST 1
11 0080 16 08 0E 03 1D 02 CF
[M]@8003 = 03 [R]D = 03
Disusun Oleh :
REBBY FUDI ALEXANDER RUDY YANROY SILALAHI KELAS KELOMPOK Tanggal Praktek
Perintah Pemindahan Data 1. MVI r1,d8 Pada perintah ini dapat dianalisa pada instruksi MVI M,CC bahwa MVI adalah instruksi untuk menjalankan suatu perintah dimana perintah untuk mengubah isi memori data dari suatu alamat secara langsung. Perintah M,CC akan mengubah isi memori data suatu alamat menjadi CC.dan jika dimasukkan perintah M,BB, maka akan mengganti isi memori data suatu alamat menjadi BB. 2. MOV r1,r2 Pada perintah ini dapat dianalisa, Mov data akan memindahkan data dari register 2 ke register 1. Pada percobaan, pada keadaan awal alamat Pada @8000 yang berisi data CC dan register A adalah 64. Ketika program dijalankan isi data pada register A berubah menjadi CC.karena isi data pada @8000 telah dipindahkan kedalam register A. 3. LXI rp, d16 Pada perintah ini dapat dianalisa, perintah Load register pair immediate, yang akan mengisikan data 16 bit ke pasangan register secara langsung.instruksi pada program yang dimulai dari alamat @7200. Pada @7200 register H berisikan data 8000, pada @7203 register B berisi data 8001 dan pada @7206 register D berisi data 8002. Dan ketika program dijalankan pada trace dapat dilihat PC yang beralamat @7203 register H berisi data 8000, pada PC yang beralama @7206 register B berisi data 8001.dan Pada PC yang beralamat pada @7209 berisi data 8002. register D
4. XCHG Pada perintah ini dapat dianalisa, perintah Exchange akan menukar isi data pada pasangan register DE dengan BC. Sehingga Data pada register D akan saling menukar isi data dengan register B
sedangkan data isi pada register E akan saling menukar isi data dengan register C. 5. LDA Adr Pada perintah ini dapat dianalisa, Load accumulator direct, akan mengirimkan data dari memori dengan alamat Adr ke akumulator. Jika isi memori pada @8000 adalah CC dan pada register di alamat yang sama yaitu A = 64.Perintah LDA akan membaca secara langsung isi register A pada @8000 secara langsung. Dapat juga ketika ingin melihat isi register B pada @8000 cukup dengan mengganti pada instruksi menjadi MOV M,B. maka program akan membaca isi register B pada alamat @8000. 6. STA Adr Pada perintah ini dapat dianalisa, Store accumulator direct, kan memerintahkan isi memori suatu alamat berubah menjadi isi data dari sebuah register. Perintah STA dapat mengubah Isi memori pada @8003 yang awalnya berisi 2E akan diubah isi datanya menjadi sama dengan isi dari register A ataupun isi dari register yang lain. 7. LHLD Adr Pada perintah ini dapat dianalisa, Load H & L direct, perintah ini mirip dengan LDA Adr, yaitu membaca data dari memori dengan pengalamatan langsung dan kirimkan ke suatu register. Hanya saja LHLD mampu menjalankan data yang dikirimkan sebesar 16 bit atau 2 byte. Pada percobaan perintah LHLD digunakan untuk membaca isi register H dan L dengan isi memori dari @8000 dan @8001.Pada register H yang awalnya adalah 80 diubah dan menggunakan isi data
pada memori pada @8000 menjadi 06, dan pada register L yang awalnya adalah 00 diubah dan menggunakan isi data pada @8001 menjadi 07. 8. SHLD Adr Pada perintah ini dapat dianalisa, Store H & L direct, kebalikan perintah LHLD Adr, pada perintah digunakan untuk membaca isi pada @8000 akan menggunakan isi data pada register D dan pada @8001 yang merupakan Adr+1 akan menggunakan isi data pada register E. 9. STAX rp Pada perintah ini dapat dianalisa, Store acumulator indirect kalau LDAX rp berfungsi untuk mengisi akumulator.tapi STAX rp berfungsi untuk mengisi memori dengan alamat ditunjukkan oleh pasangan register (rp) dengan data yang ada pada akumulator. Pada percobaannya isi pada register D akan membaca isi memor pada @8003. Dimana pada kadaan awal isi register D adalah 00 dan isi meori pada @8003 adalah 03. STAX akan memasukkan isi data pada @8003 ke dalam isi register D.Sehingga [R]D = 03. 10. LDAX rp Pada perintah ini dapat dianalisa, Load accumulator indirect , yaitu mengisi akumulator dengan data dari memori yang alamatnya di tunjukkan oleh isi pasangan register (rp). Pada percobaan pada keadaan awal [R]B = 00 dan [M]@8003 adalah 01 ketika program dijalankan isi data pada register B berubah dari 00 menjadi 01 karena isi data pada @8003 telah dimasukkan ke dalam register B. Perintah ini mirip dengan LDA Adr hanya saja alamat memori tidak di berikan secara langsung mengikuti kode operasinya, tetapi melalui perantara registernya.
Sebelum melakukan perintah perintah diatas terlebih dahulu di cek isi memori suatu alamat/register sehingga dapat membedakan perubahanperubahan yang terjadi ketika suatu perintah dimasukkan dan program dijalankan. Perintah Exchange digunakan untuk menukar data pada pasangan register DE dengan HL. Data pada E ditukar dengan data pada L sedangkan data pada D di tukar dengan H.
Perintah LDA Adr dan STA Adr merupakan perintah yang sama-sama melakukan pengaatan secara langsung, hanya saja Perintah LDA Adr di
gunakan untuk membaca data pada suatu lokasi memori dengan alamat di tunjukkan secara langsung bersama kode operasinya sedangkan perintah STA Adr adalah perintah dengan model pengalamatan lansung alamat memori yang merupakan tujuan ataupun asal dengan pengiriman data ikut dituliskan dalam program. Perbedaan antara Perintah LHLD dengan LDA Adr, adalah kapasitas data yang dibaca, disini data yang dikirimkan pada perintah LHLD adalah 16 bit atau 2 byte.
Pada STAX rp Hindari alamat yang sama karena akan membuat system error Batasan suatu alamat adalah 7000H FFFFH (00 tidak bisa diubah)