Anda di halaman 1dari 20

PERCOBAAN II REGISTER / MEMORI

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

III. Dasar Teori Macam-macam Register


Register 8 Bit Accumulator Register B Register D Register H * Processor Status Word Register Bendera Register C Register E Register L Register 16 Bit PSW* Register Pair BC Register Pair DE Register Pair HL Program Counter Stack Pointer

Gambar 2.1 Macam Register

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

Mnemonics MVI L,00 MVI H,80 MVI M,CC RST 1

Isi alamat awal : Isi alamat setelah di [GO] :

[M]@8000 [M]@8000

2E CC

ketika program di [GO]

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

MOV M,A RST 1

- T = trace/single step start Adr.: = 710A 7100


PC 7100 7102 7104 7105 7107 7109 2E 00 26 80 7E 2E 01 26 80 77 MVI L,00 MVI H,80 MVI A,M MVI L,01 MVI H,80 MVI M,A RST 1 7102 7104 7105 7107 7109 A 64 64 BC DE HL M F 54 54 54 54 54 54 54 SZxAxPxC ZAP ZAP ZAP ZAP ZAP ZAP ZAP SP 60CE 60CE 60CE 60CE 60CE 60CE (SP) 7007 7007 7007 7007 7007 7007

0000 0101 8000 AA 0000 0101 8000 AA

AA 0000 0101 8000 AA AA 0000 0101 8001 11 AA 0000 0101 8001 11

710A AA 0000 0101 8001 AA 0008 AA 0000 0101 8001 AA

710A CF

60CC 710B

Isi data awal pada :

[M]@8000 di [GO]

CC dan [R]A = 64 ketika program

Isi alamat setelah 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

-T = Trace /single step Start Adr.: 8005 7200


PC A BC DE HL M 00 00 00 00 F 54 54 54 54 SZxAxPxC ZAP ZAP ZAP ZAP SP (SP)

7200 7203 7206 7209

21 0080 01 0180 11 80 CF

LXI H,8000 7203 64 LXI B,8001 7206


64 64 64

0000 0101 8000 8001 0101 8000 8001 8002 8000 8001 8002 8000

60D0 4545 60D0 4545 60D0 4545 60D0 4545

LXI D,8002 7209 RST 1


0088

Isi data awal pada :

[R] [H] = L = BB, H= 61 [R] [B] = B = 00, C= 00 [R] [D] = D = 01 , E= 01, ketika program di [GO]

Isi alamat setelah di [GO] :

[R]H = 80 dan [R]L= 00

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

ketika program di [GO]:

[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

-T = Trace /single step Start Adr.: 7408 7500

PC

A 2E 2E 00 00 00

BC 0000 0000 0000 0000 0000

DE 0101 0101 0101 0101 0101

HL 8200 8200 8200 8200 8200

M AA AA AA AA AA

F 54 54 54 54 54

SZxAxPxC ZAP ZAP ZAP ZAP ZAP

SP

(SP)

7500 7503 7506 7509 750C

3A 0070 32 0380 3A 0170 32 0480 CF

LDA 7000 STA 8003 LDA 7001 STA 8004 RST 1

7503 7506 7509 750C


0008

60CA 7408 60CA 60CA 60CA 60CB 7408 7408 7408 750D

Isi data awal :[R] A = 64 dan [M] @8003 2E, ,ketika program di [GO]

Isi data setelah 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

-T = Trace /single step Start Adr.: 0008 7600


PC A 00 00 00 BC DE HL 0000 0000 AAAA M AF AF 9C 61 2A 2A F 54 54 54 54 54 54 SZxAxPxC ZAP ZAP ZAP ZAP ZAP ZAP SP (SP)

7600 7603 7606 7609

21 0000 11 CCAA 2A 0080 EB

LXI H,0000

7603

0000 0101 0000 0000 AACC AACC

60CB 7500 60CB 60CB 60CB 60CB 60C6 7500 7500 7500 7500 760E

LXI D,AACC 7606 LHLD 8000 XCHG LHLD 8001 RST 1 7609

760A 00 0000 AAAA AACC 760D 00 0000 AAAA


0008 00 0000 AAAA 2EAA 2EAA

760A 2A 028 760D CF

Isi data awal :

[M]@8000 = 06 [M]@8001 = 07 [R]H = 80 [R]L = 00 ketika program di [GO]

Isi data setelah di [GO] :

[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

-T = Trace /single step Start Adr.: 617E 7700

PC

A FF FF FF

BC FF70 FF70 FF70

DE 3322 3322 3322

HL 1100 1100 FF32

M 1D 1D 61

F 54 54 54

SZxAxPxC ZAP ZAP ZAP

SP 60C4 60C4 60C4

(SP) 8005 8005 8005

7700 7703 7706

2A 0080 22 0580 2A 0380

LHLD 8000 SHLD 8005 LHLD 8003

7703 7706 7709

7709

22 0780

SHLD 8007 RST 1

770C FF FF70
0008 FF FF70

3322 3322

FF32 FF32

61 61

54 54

ZAP ZAP

60C4 60C4

8005 770D

770C CF

Isi data awal :

[M]@8000 = 01 [M]@8001 = 02 [R]D = AA [R]E = FF ketika program di [GO]

Isi data setelah di [GO] :

[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

-T = Trace /single step Start Adr.: 0008 7800

PC

A FF FF FF FF 33 33

BC 0000 0000 0000 0000 0000 0000

DE 3322 3322 8022 8003 8003 8003

HL 8000 8000 8000 8000 8000 8000

M 00 00 00 00 00 00

F 54 54 54 54 54 54

SZxAxPxC ZAP ZAP ZAP ZAP ZAP ZAP

SP 60C2 60C2 60C2 60C2 60C2

(SP) 770D 770D 770D 770D 770D

7800 7803 7804 7806 7808 7809

21 0080 46 16 80 1E 03 1A CF

LXI H,8000 MOV B,M MVI D,80 MVI E,03 LDAX RST 1

7803 7804 7806 7808 7809


0008

60CD 780A

Isi data awal :

[M]@8003 = 01 [R]B = 00 ketika program di [GO]

Isi data setelah di [GO] :

[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

-T = Trace /single step

Start Adr.: 8004 7900


PC A 00 00 00 00 00 00 BC 8003 8003 8003 8003 8003 8003 DE 8000 8000 8000 8000 8000 8000 HL 8000 8000 8000 8000 8000 8000 M 00 00 00 00 00 00 F 54 54 54 54 54 54 SZxAxPxC ZAP ZAP ZAP ZAP ZAP ZAP SP 60C0 60C0 60C0 60C0 60C0 60BE (SP) 780A 780A 780A 780A 780A 790A

7900 7903 7905 7907 7908 7909

11 0080 16 08 0E 03 1D 02 CF

LXI D,8000 MVI D,80 MVI C,03 LDAX D STAX B RST 1

7903 7905 7907 7908 7909


0008

Isi data awal :

[M]@8003 = 03 [R]D = 00 ketika program di [GO]

Isi data setelah di [GO] :

[M]@8003 = 03 [R]D = 03

PRAKTEK MIKROPROSESSOR PERCOBAAN II MEMORI/REGISTER

Disusun Oleh :

REBBY FUDI ALEXANDER RUDY YANROY SILALAHI KELAS KELOMPOK Tanggal Praktek

0610 3032 0259 0610 3032 0260 4 EB 3 (TIGA) 27 Maret 2012

POLITEKNIK NEGERI SRIWIJAYA PALEMBANG 2012

ANALISA Rudy Yanroy Silalahi

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.

Kesimpulan Rudy Yanroy Silalahi

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)