PERCOBAAN II REGISTER / MEMORI
I.
Tujuan Percobaan
Memahami berabagai register dan fungsi-fungsinya.
Memahami penggunaan register dan memori sebagai sarana pemindahan data.
II .
Memahami penggunaan beberapa perintah pemindahan data.
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
Register 16 Bit
Accumulator
Register Bendera
→
PSW*
Register B
Register C
→
Register Pair BC
Register D
Register E
→
Register Pair DE
Register H
Register L
→
Register Pair HL
* Processor Status Word
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 :
[M]@8000
2E
Isi alamat setelah di [GO] :
[M]@8000
CC
ketika program di [GO]
2. MOV r1,r2 -A = assembler Adr = 7006 7100 Adr
Hex-code
Mnemonics
7000
2E 00
MVI L,00
7102
26 80
MVI H,80
7104
7E
MOV A,M
7105
2E 01
MVI L,01
7107
26 80
MVI H,80
7109
77
MOV M,A
710A
CF
RST 1
- T = trace/single step start Adr.: = 710A 7100 PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7100
2E 00
MVI L,00
7102
64
0000 0101 8000 AA
54
ZAP
60CE
7007
7102
26 80
MVI H,80
7104
64
0000 0101 8000 AA
54
ZAP
60CE
7007
7104
7E
MVI A,M
7105
AA 0000 0101 8000 AA
54
ZAP
60CE
7007
7105
2E 01
MVI L,01
7107
AA 0000 0101 8001 11
54
ZAP
60CE
7007
7107
26 80
MVI H,80
7109
AA 0000 0101 8001 11
54
ZAP
60CE
7007
7109
77
MVI M,A
710A AA 0000 0101 8001 AA
54
ZAP
60CE
7007
0008
54
ZAP
60CC 710B
710A CF
RST 1
Isi data awal pada :
AA 0000 0101 8001 AA
[M]@8000 di [GO]
Isi alamat setelah di [GO] :
R]A = CC
CC dan [R]A = 64 ketika program
3. LXI rp, d16 -A = assembler Adr = 710B 7200 Adr
Hex-code
Mnemonics
7200
21 0080
LXI H,8000
7203
01 0180
LXI B,8001
7206
11 80
LXI D,8002
7209
CF
RST 1
-T = Trace /single step Start Adr.: 8005 7200 PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7200
21 0080
LXI H,8000 7203 64
0000 0101 8000
00
54
ZAP
60D0 4545
7203
01 0180
LXI B,8001
7206
64
8001 0101 8000
00
54
ZAP
60D0 4545
7206
11 80
LXI D,8002 7209
64
8001 8002 8000
00
54
ZAP
60D0 4545
7209
CF
RST 1
0088
64
8001 8002 8000
00
54
ZAP
60D0 4545
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
Hex-code
Mnemonics
7500
3A 0070
LDA 7000
7503
32 0380
STA 8003
7506
3A 0170
LDA 7001
7509
32 0480
STA 8004
750C
CF
RST 1
-T = Trace /single step Start Adr.: 7408 7500
PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7500
3A 0070
LDA 7000
7503
2E
0000
0101
8200
AA
54
ZAP
60CA 7408
7503
32 0380
STA 8003
7506
2E
0000
0101
8200
AA
54
ZAP
60CA
7408
7506
3A 0170
LDA 7001
7509
00
0000
0101
8200
AA
54
ZAP
60CA
7408
7509
32 0480
STA 8004
750C
00
0000
0101
8200
AA
54
ZAP
60CA
7408
750C
CF
RST 1
0008
00
0000
0101
8200
AA
54
ZAP
60CB
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
Hex-code
Mnemonics
7600
21 0000
LXI H,0000
7603
11 CCAA
LXI D,AACC
7606
2A 0080
LHLD 8000
7609
EB
XCHG
760A
2A 028
LHLD 8002
760D
CF
RST 1
-T = Trace /single step Start Adr.: 0008 7600 PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7600
21 0000
LXI H,0000
7603
00
0000 0101
0000
AF
54
ZAP
60CB 7500
7603
11 CCAA
LXI D,AACC 7606
00
0000
AACC
0000
AF
54
ZAP
60CB
7500
7606
2A 0080
LHLD 8000
7609
00
0000
AACC
AAAA
9C
54
ZAP
60CB
7500
7609
EB
XCHG
760A 00 0000 AAAA AACC
61
54
ZAP
60CB
7500
760A 2A 028
LHLD 8001
760D 00 0000 AAAA
2EAA
2A
54
ZAP
60CB
7500
760D CF
RST 1
0008
2EAA
2A
54
ZAP
60C6
760E
00
0000 AAAA
Isi data awal :
[M]@8000 = 06 [M]@8001 = 07 [R]H = 80 [R]L = 00
Isi data setelah di [GO] :
ketika program di [GO]
[R]H = 07 [R]L = 06
8. SHLD Adr -A = assembler Adr = 760E 7700 Adr
Hex-code
Mnemonics
7700
2A 0080
LHLD 8000
7703
22 0580
SHLD 8005
7706
2A 0380
LHLD 8003
7709
22 0780
SHLD 8007
770C
CF
RST 1
-T = Trace /single step Start Adr.: 617E 7700
PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7700
2A 0080
LHLD 8000
7703
FF
FF70
3322
1100
1D
54
ZAP
60C4
8005
7703
22 0580
SHLD 8005
7706
FF
FF70
3322
1100
1D
54
ZAP
60C4
8005
7706
2A 0380
LHLD 8003
7709
FF
FF70
3322
FF32
61
54
ZAP
60C4
8005
7709
22 0780
770C CF
SHLD 8007
770C FF FF70
3322
FF32
61
54
ZAP
60C4
8005
RST 1
0008
3322
FF32
61
54
ZAP
60C4
770D
Isi data awal :
FF
FF70
[M]@8000 = 01 [M]@8001 = 02 [R]D = AA [R]E = FF
Isi data setelah di [GO] :
ketika program di [GO]
[M]@8000 = AA [M]@8001 = FF
9. LDAX -A = assembler Adr = 770D 7800 Adr
Hex-code
Mnemonics
7800
21 0080
LXI H,8000
7803
46
MOV B,M
7804
16 80
MVI D,80
7806
1E 03
MVI E,03
7808
1A
LDAX
7809
CF
RST 1
-T = Trace /single step Start Adr.: 0008 7800
PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7800
21 0080
LXI H,8000
7803
FF
0000
3322
8000
00
54
ZAP
60C2
770D
7803
46
MOV B,M
7804
FF
0000
3322
8000
00
54
ZAP
60C2
770D
7804
16 80
MVI D,80
7806
FF
0000
8022
8000
00
54
ZAP
60C2
770D
7806
1E 03
MVI E,03
7808
FF
0000
8003
8000
00
54
ZAP
60C2
770D
7808
1A
LDAX
7809
33
0000
8003
8000
00
54
ZAP
60C2
770D
7809
CF
RST 1
0008
33
0000
8003
8000
00
54
ZAP
60CD 780A
Isi data awal :
[M]@8003 = 01 [R]B = 00
Isi data setelah di [GO] :
ketika program di [GO]
[R]B = 01
10. STAX Adr -A = assembler Adr = 780E 7900 Adr
Hex-code
Mnemonics
7900
11 0080
LXI D,8000
7903
16 08
MVI D,80
7905
0E 03
MVI C,03
7907
1D
LDAX D
7908
02
STAX B
7909
CF
RST 1
-T = Trace /single step
Start Adr.: 8004 7900 PC
A
BC
DE
HL
M
F
SZxAxPxC
SP
(SP)
7900
11 0080
LXI D,8000
7903
00
8003
8000
8000
00
54
ZAP
60C0
780A
7903
16 08
MVI D,80
7905
00
8003
8000
8000
00
54
ZAP
60C0
780A
7905
0E 03
MVI C,03
7907
00
8003
8000
8000
00
54
ZAP
60C0
780A
7907
1D
LDAX D
7908
00
8003
8000
8000
00
54
ZAP
60C0
780A
7908
02
STAX B
7909
00
8003
8000
8000
00
54
ZAP
60C0
780A
7909
CF
RST 1
0008
00
8003
8000
8000
00
54
ZAP
60BE
790A
Isi data awal :
[M]@8003 = 03 [R]D = 00
Isi data setelah di [GO] :
[M]@8003 = 03 [R]D = 03
ketika program di [GO]
PRAKTEK MIKROPROSESSOR PERCOBAAN II MEMORI/REGISTER
Disusun Oleh :
REBBY FUDI ALEXANDER
0610 3032 0259
RUDY YANROY SILALAHI
0610 3032 0260
KELAS
4 EB
KELOMPOK
3 (TIGA)
Tanggal Praktek
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)