LAPORAN PRAKTIKUM MIKROPROSESOR “PEMINDAHAN DATA”
Disusun oleh:
Nama
: Yudi Irwanto
NIM
: 021500456
Jurusan
: Teknofisika Nuklir
Prodi
: Elektronika Instrumentasi
Dosen/Asisten : - Rokhmat Arifianto -
Adib Afham
SEKOLAH TINGGI TEKNOLOGI NUKLIR BADAN TENAGA NUKLIR NASIONAL YOGYAKARTA 2017
LAPORAN PRAKTIKUM MIKROPROSESOR “PEMINDAHAN DATA”
A. TUJUAN 1.
Membiasakan pemakai dengan fungsi instruksi pemindahan data.
2.
Latihan mengeset nilai inisialisasi data.
3.
Latihan Menulis Program
B. DASAR TEORI Di dalam pemrograman suatu sistem mikroprosesor banyak sekali data yang dipergunakan dan di dalam operasinya banyak menyangkut mengenai perpindahan data. Perpindahan. Perpindahan data ini meliputi data yang ada pada memori dan juga data yang ada pada register-register. Kebanyakan operasi pemindahan data denganmenggunakan perintah LD, data yang dipindahakan bisa berupa data 8-bit maupun data 16 bit. Instruksi seperti EX, EXX, PUSH, maupun POP juga dapaty dipergunakan untuk pemindahan data 16 bit. Sedangkan instruksi-instruksi seperti Ldi dan LDR memindahkan suatu blok data dengan cara menggeser sederetan byte-byte. Format instruksi yang dipergunakan di dalam operasi pemindahan data adalah instruksi 3 byte yang terdiri dari sebuah opcode dan dua operan, bila pemindahan data menggunakan instruksi LD. Opcodenya adalah lokasi memori ataupun register. Sedangkan operand yang kedua adalah sumber data bisa berada, bisa memori maupun register. Karena ada berbagai sumber data maupun tujuan tempat pemindahan data, maka ada arah perpindahan data yaitu: 1. Dari register ke register, 2. Dari register ke memori, 3. Dari memori ke memori, 4. Dari memori ke register, 5. Data langsung ke register, 6. Data langsung ke memori. Didalam ragam pengalaman ini tempat asal dan tujuan adalah sama yaitu register. Register yang dimaksud disini adalah register-register umum 8 bit.Bentuk umumnya adalah LD ri,r2.
2 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
1. LD adalah perintah untuk pemindahan data. 2. R1 adalah register tujuan. 3. R2 adalah register asal data. Dalam ragam pengalamatan ini dipergunakan register umum 16 bit sebagai penunjuk alamat tempat tujuan data, register yang biasa digunakan adalah register HL, jadi disini pengalamatan tidak langsung dengan register, tetapi register hanya dipergunakan sebagai penunjukan alamat dari memori. Sebagai asal data bisa berupa register ataupun data langsung. Misalnya:LD(HL), A; artinya memasukan data yang ada pada register A ke alamat yang ditunjukan oleh pasangan register A ke alamat yang ditunjukan oleh pasangan register HL.Pada ragam pengalamatan ini data ditentukan secaara langsung, tanpa menunjukan alamat memori ataupun register. Perannya tidak terletak di register ataupun memori tetapi terdapat langsung pada instruksi. Instruksinya bisa berupa instruksi 2 byte maupun instruksi 3 byte. Opcodenya bisa berupa satu byte maupun dua byte, sedangkan operandnya berupa data 8 bit.
C. ALAT DAN BAHAN 1. Mikroprofesor. 2. Adaptor Sebagai catu daya.
D. LANGKAH PRAKTIKUM 1. PERCOBAAN I Tulislah program dalam bahasa rakitan untuk mengeset isi register-register sebagai berikut : A = 0, B = 1, C = 2, D = 3, E = 4, H = 5, L = 6. Gunakan instruksi LD 8 bit (lihat tabel instruksi) untuk memindahkan satu byte data setiap kali.
Step 1 :Tulislah program dalam bahasa rakitan menggunakan kolom-kolom (alamat memori,bahasa mesin, bahasa rakitan dan keterangan.) Instruksi terakhir RST 38H akan mengembalikan kontrol uPF-1 pada program monitor setelah menjalankan seluruh program. Step 2 :Dengan menggunakan tabel instruksi LD 8 bit, terjemahkan program dalambahasa mesin dengan 1800H sebagai alamat awal. Tulislah alamat yang sesuai untuk tiap-tiap instruksi. 3 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
Step 3 :Siapkan kit uPF-1, masukkan program dengan menekan tombol-tombol pada papankunci. Periksa program yang tersimpan dalam memori. Set Program Counter (PC) pada awal alamat 1800H dan jalankan programnya. Step 4 :Tekan tombol REG dan periksa apakah isi tiap-tiap register sudah benar. Bilamasih ada kesalahan, kembalikan pada step 1 dan periksa lagi.
Tabel Data Percobaan Alamat
Bahasa Mesin
Bahasa Rakitan
Keterangan
1800H
3E 00
LD A, 00
Isi Reg A dengan data 00H
1802H
06 01
LD B, 01
Isi Reg B dengan data 01H
1804H
0E 02
LD C, 02
Isi Reg C dengan data 02H
1806H
16 03
LD D, 03
Isi Reg D dengan data 03H
1808H
1E 04
LD E, 04
Isi Reg E dengan data 04H
180AH
26 05
LD H, 05
Isi Reg F dengan data 05H
180CH
2E 06
LD L, 06
Isi Reg G dengan data 06H
FF
RST 38H
Memori
2. PERCOBAAN II Tulislah program dalam bahasa rakitan untuk mengeset isi register-register sebagai berikut : B = 12, C = 34, D = 56, E = 78, H = 09, L = 0A. Gunakan instruksi LD 16 bit (lihat tabel instruksi. Grup instruksi LOAD 16 bit) untuk memindahkan dua byte data setiap kali.
Step 1: Tulislah
program dalam bahasa rakitan menggunakan kolom-kolom
seperti percobaan I . Step 2 :Dengan menggunakan tabel instruksi LD 16 bit, terjemahkan program dalam bahasa mesin dengan alamat awal 1820H. Tulislah alamat yang sesuai untuk tiap-tiap instruksi. Step 3: Masukkan program dengan menekan tombol-tombol pada papan kunci. Periksa program yang tersimpan dalam memori. Set Program Counter (PC) pada awal alamat 1820H dan jalankan programnya.
4 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
Step 4 :
Tekan tombol REG dan periksa apakah isi tiap-tiap register sudah benar. Bila
masih ada kesalahan, kembalikan pada step 1 dan periksa lagi. Tabel Data Percobaan Alamat memori
Bhs Mesin
Bahasa Rakitan
Keterangan
1820H
01 34 12
LD BC, 1234H
Isi Reg BC dgn data 1234H
1823H
11 78 56
LD DE, 5678H
Isi Reg DE dgn data 5678H
1826H
21 0A 09
LD HL 090A
Isi Reg HL dgn data 090AH
1832H
DD 21 84 05 LD IX, 0584H
Isi Reg IX dgn data 0548H
1836H
FD 21 84 04 LD IY, 0484H
Isi Reg IY dgn data 0548H
......
......
......
............
FF
RST 38H
Catatan : Suatu data 16 bit terdiri dari 2 byte data. Byte berorde tinggi berada pada alamat memori yang lebih tinggi, sedangkan byte berorde rendah berada pada alamat memori yang lebih rendah. Misalkan, data 16 bit 1234H disimpan pada alamat 1820 – 1821H dengan cara sebagai berikut:
Data 16 bit
Isi memori
Alamat memori
-------------
-------------
------------------
12 34
byte orde rendah
byte orde tinggi
1820H (alamat yang lebih rendah) 123412
1821H (alamat yang lebih tinggi)
5 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
Contoh program: Menulis program untuk menghapus isi memori alamat 1850H sampai 186FH. Alamat
Bahasa Mesin Label
Bahasa Rakitan
Keterangan
Memori Data 20H Rsebagai penghitung 1800H
0620
LD B, 20H
loop Set HL sbg alamat awal
...... ......
2150 18 AF
LD HL, 1850H
memori yg diisi nol
XOR A
Set re A = 0 Isikan 0 pada alamat memori
......
77
Loop
LD (HL), A
yg ditunjuk HL
......
23
INC HL
Tambah HL dengan 1
......
05
DEC B
Kurangi B dengan 1 Jika isi reg B belum = 0
......
20FB FF
JR NZ, Loop
kembali ke Loop
RST 38H
Kembali ke program monitor
Penjelasan : 1.
Jika digunakan instruksi LD 8 bit untuk memindahkan setiap data ke tujuan masingmasing akan diperlukan 32 (20H) kali pelaksanaan pemindahan data. Akan lebih mudah jika digunakan metode loop pada program.
2.
Gunakan register B sebagai penghitung loop. Set reg B sama dengan 20H sebelum pelaksanaan program loop. Gunakan HL sebagai penunjuk alamat memori dan set alamat awal 1850H pada HL. HL ditambah dengan 1 (increment) untuk setiap loop. Jika B=0, berati semua loop telah dilaksanakan, jika sebaliknya loop diulangi lagi.
3.
PERCOBAAN III
Terjemahkan program diatas kedalam bahasa mesin gunakan tabel instruksi sebagai acuan dan isikan ke RAM uPF-1. Jalankan program dan periksa apakah isi alamat memori 1850H sampai 186F telah terhapus (=0). Jika belum benar periksa sekali lagi, kemudian jalankan lagi.
6 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
4. PERCOBAAN IV Tulisah suatu program dalam bahasa rakitan untuk mengeset alamat memori 1840H sampai 184F sebagai berikut : 0. 1. 2. 3. , . . . . . , F. Petunjuk : Ubahlah penghitung loop dan nilai alamat awalnya. Register A ditambah dengan 1 pada loop berikutnya.
E. DATA PRAKTIKUM
1.
Percobaan 1: Mengisi data ke register
Bahasa
Alamat Memory Bahasa mesin
Keterangan
rakitan
1800H
3E00
LD A, 00
Isi reg A dengan data 00H
1802H
0601
LD B, 01
Isi reg B dengan data 01H
1804H
0E02
LD C, 02
Isi reg C dengan data 02H
1806H
1603
LD D, 03
Isi reg D dengan data 03H
1808H
1E04
LD E, 04
Isi reg E dengan data 04H
180AH
2605
LD H, 05
Isi reg H dengan data 05H
180CH
2E06
LD L, 06
Isi reg L dengan data 06H
180EH
FF
RST 38H
Kembali
ke
program
monitor
Reg
A
B
C
D
E
H
L
Data
00
01
02
03
04
05
06
7 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
2.
Percobaan 2: Mengisi data ke register BC,DE,HL Alamat
Bahasa
Memory
mesin
1820H
Bahasa rakitan
013412
Keterangan
LD BC,1234H
Isi reg BC dengan data1234H
1823H
117856
LD
DE, Isi reg DE dengan data
5678H 1826
210A09
1829
LD
FF
5678H HL, Isi reg HL dengan data
090AH
090AH
RST 38H
Kembali
ke
program
monitor
3.
Reg
B
C
D
E
H
L
Data
12
34
56
78
09
0A
Percobaan 3: Menulis program untuk menghapus isi memori alamat 1850H sampai 186FH. Alamat
Bahasa Mesin
Label Bahasa Rakitan
Keterangan
Memori 1800H
0620
LD B, 20H
Data 20H Rsebagai penghitung loop Set HL sbg alamat awal memori yg
1802H
21 50 18
LD HL, 1850H diisi nol
1805H
AF
XOR A
Set re A = 0 Isikan 0 pada alamat memori yg
1806H
77
Loop LD (HL), A
ditunjuk HL
1807H
23
INC HL
Tambah HL dengan 1
1808
05
DEC B
Kurangi B dengan 1 Jika isi reg B belum = 0 kembali ke
1809 180B
20 FB
JR NZ, Loop
Loop
FF
RST 38H
Kembali ke program monitor
8 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
4.
Percobaan 4 : Mengeset alamat tertentu dari memori ----H sampai ----H - Mengeset alamat memori 1840H-184F sebagai berikut : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Alamat
Bahasa
memori
Mesin
1800H
Label
06 10
Bahasa Rakitan
LD B,10H
Keterangan Data 10 H sebagai penghitung Loop Set HL sevagai alamat
1802H
21 40 18
LD HL, 1840H
awal memori yang diisi nol
1805H
AF
XOR A
Ser re A = 0 Isiskan 0 pada alamat
1806H
77
Loop
LD(HL), A
memori yang ditunjuk HL
1807H
23
INC HL
Tambah HL dengan 1
1808H
3C
INC A
Tambah A dengan 1
1809H
05
DEC B
Kurangi B dengan 1
180AH
20 FA
JR NZ, Loop
180CH
FF
FF
9 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
Jika isi reg B belum = 0 kembali ke Loop RST 38H
- Mengeset alamat memori 1950H-195F sebagai berikut : 0, 2, 4, 6, 8, A, C, E, 10, 12, 14, 16, 18, 1A, 1C, 1E Alamat
Bahasa
memori
Mesin
1800H
Label
06 10
Bahasa Rakitan
LD B,10H
Keterangan Data 10 H sebagai penghitung Loop Set HL sevagai alamat
1802H
21 50 19
LD HL, 1950H
awal memori yang diisi nol
1805H
AF
XOR A
Ser re A = 0 Isiskan 0 pada alamat
1806H
77
Loop
LD(HL), A
memori yang ditunjuk HL
1807H
23
INC HL
Tambah HL dengan 1
1808H
C6 02
ADD A, N
Tambah A dengan 2H
180AH
05
DEC B
Kurangi B dengan 1
180BH
20 FA
JR NZ, Loop
180DH
FF
FF
Jika isi reg B belum = 0 kembali ke Loop RST 38H
F. PEMBAHASAN Praktikum mikroprosesor dengan materi pemindahan data dengan menggunakan mikroprofesor z80. Praktikum ini bertujuan agr praktikan dapat mempelajari kegunaan instruksi-instruksi pemindahan data atau “data transfer”, kemudian mempraktekan penetapan harga awal data dan menyusun program dalam bahasa rakitan dan bahasa mesin. Percobaan pertama adalah melakukan pemindahan data dari memori ke register. Untuk menjalankan program tersebut perlu adanya masukan yang berupa rumus variable terprogram agar tercipta keluaran yang dikehendaki. Langkah awal adalah memastikan kondisi register. Selanjutnya tekan ADDR pada alamt 1800H kemudian menuliskan bahasa mesin alamat tersebut sesuai pustaka data mikroprossessor. Pada alamat 1800H dapat disetting dengan menekan DATA 3E+00. Sesuai pustaka data, 3E berfungsi untuk memanggil register A sedangkan 00 merupakan data yang dimasukkan ke register A, 10 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
sehingga dengan kata lain LD A, 00 H berarti bahwa data 00 masuk ke register A. Prinsip tersebut juga berlaku untuk register yang lain dalam hal pemindahan data, seperti register B dengan bahasa rakitan LD B, 01 dimana register B diisi dengan data 01 H. Register C dengan bahasa rakitan LD C, 02 dimana register C diisi dengan data 02 H. Register D dengan bahasa rakitan LD D, 03H dimana register D diisi dengan data 03H. LD E, 04H dimana register E diisi dengan data 04H. LD H,05H dimana register H diisi dengan data 05H. LD L, 06H dimana register L diisi dengan data 06H. Ketika semua progam telah dimasukan kembali ke alamat 1800H kemudian tekan tombol PC lalu GO untuk menjalankan program.Kemudiancek data di reg A, Reg B, Reg C ,Reg D,Reg E, Reg H, Reg L. Dan didapatkan hasil reg A= 00, reg B= 01, reg C=02, reg D= 03, reg E=04, reg H= 05, reg L= 06. Jika hasil ini sesuai dengan program yang diinputkan keperangkat z80 dan percobaan pemindahan data, maka praktikum pertama berhasil. Percobaan kedua adalah mengatur isi register B, C, D, E, H, dan L dengan menggunakan instruksi LD 16 bit untuk memindahkan dua byte data setiap kali. Percobaan dilakukan dengan menulis program lalu menerjemahkan program ke dalam Bahasa mesin dengan alamat awal 1820H lalu memasukkan program ke mikroprofessor dan mengakhirinya dengan data FF.Untuk Bahasa rakitan LD B,C, 1234H dituliskan dalam Bahasa mesin 01 34 12 dengan memasukkan data pada alamat 1820H adalah 01 (kode untuk LD B,C), data pada alamat 1821H adalah 34 (isi register C), dan data pada alamat 1822H adalah 12 (isi register C). Untuk Bahasa rakitan LD D,E, 5678H dituliskan dalam Bahasa mesin 11 78 56 dengan memasukkan data pada alamat 1823H adalah 11 (kode untuk LD D,E), data pada alamat 1824H adalah 78 (isi register E), dan data pada alamat 1825H adalah 56 (isi register D). Untuk Bahasa rakitan LD H,L, 090AH dituliskan dalam Bahasa mesin 21 0A 09 dengan memasukkan data pada alamat 1826H adalah 21 (kode untuk LD H,L), data pada alamat 1827H adalah 0A (isi register L), dan data pada alamat 1828H adalah 09 (isi register H). Jadi, dapat dianalisa dari program di atas bahwa pengisian dua register sekaligus dengan Bahasa rakitan misalnya LD B,C maksudnya adalah data pada alamat pertama berisi kode untuk Bahasa rakitan tersebut, data pada alamat kedua akan mengisi register C, dan data pada alamat ketiga akan mengisi register B, dan seterusnya. Percobaan ketiga adalah menghapus isi memori alamat 1850H sampai 186FH dengan proses loop. Dengan menuliskan 06 20 pada alamat 1800H, artinya
kita
memasukin nilai 20H pada register B. nilai 20H dipilih karena nilai tersebut setara dengan 32 bilangan decimal. Karena banyaknya isi memori yang akan kita hapus dari 11 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
alamat 1850H-186FH sebanyak 32. Lalu, bahasa mesin21 50 18 berarti mengisikan register HL dengan alamat memori 1850 sebagai alamat awal memori yang diisi angka 0. Bahasa mesin AF dimasukan pada alamat 1805H untuk mengeset register A agar menjadi 0. Kemudian mengisikan bahasa mesin 77 pada alamat 1806 agar isi dari register A dipindahkan ke alamat yang ditunjuk HL (1850H). Bahasa mesin 23 dimasukan, bermaksud agar nilai HL naik/bertambah dari 1850H ke 1806H.Bahasa mesin 05 dimasukan untuk mengurangkan nilai dari register B. Lalu bahasa mesin 20 untuk melakukan proses loop apabila nilai register yang telah dikurangkan tadi belum bernilai 0. Proses perulangan ini dilakukan sampai 32 kali. Sesuai dengan nilai yang dimasukan pada register B diawal. Dengan demikian saat kita chek alamat 1850H-186FH maka hasilnya adalah 0. Percobaan keempat adalah mengeset alamat memori. Pada percobaan keempat ini dilakukan dua kali pengesetan, yaitu : Yang pertama mengeset alamat memori 1840H sampai 184FH sebagai : 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F dengan proses loop. Dengan menuliskan 06 10 pada alamat 1800H, artinya kita memasukin nilai 10H pada register B. nilai 10H dipilih karena nilai tersebut setara dengan 16 bilangan decimal, Karena banyaknya isi memori yang akan kita hapus dari alamat 1840H-184FH sebanyak 16. Kemudian bahasa mesin 21 40 18 berarti mengisikan register HL dengan alamat memori 1840 sebagai alamat awal memori yang diisi angka 0.
Bahasa mesin AF
dimasukan pada alamat 1805H untuk mengeset register A agar menjadi 0. Kemudian mengisikan bahasa mesin 77 pada alamat 1806 agar isi dari register A dipindahkan ke alamat yang ditunjuk HL (1840H). Bahasa mesin 23 dimasukan, bermaksud agar nilai HL naik/bertambah dari 1840H ke 1806H. Bahasa mesin 3C dimasukkan untuk menambahkan satu nilai heksadesimal pada register A. Bahasa mesin 05 dimasukan untuk mengurangkan nilai dari register B. Lalu bahasa mesin 20 untuk melakukan proses loop apabila nilai register B belum bernilai 0. Proses perulangan ini dilakukan sampai 16 kali. Sesuai dengan nilai yang dimasukan pada register B diawal. Dengan demikian saat kita chek alamat 1840H-184FH maka hasilnya adalah 0, 1, 2, 3, 4, 5, 6, 7, 8,9, A, B, C, D, E, F Sedangkan
percobaan keempat yang kedua adalah mengeset alamat memori
1950H sampai 195FH sebagai : 0, 2 4, 6, 8, A, C, E, F, 10, 12, 14, 16, 18, 1A, 1C, 1E dengan proses loop. Dengan menuliskan 06 10 pada alamat 1800H, artinya
kita
memasukin nilai 10H pada register B. nilai 10H dipilih karena nilai tersebut setara dengan 16 bilangan decimal, Karena banyaknya isi memori yang akan kita hapus dari 12 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
alamat 1950H-195FH sebanyak 16. Kemudian bahasa mesin 21 50 19 berarti mengisikan register HL dengan alamat memori 1950 sebagai alamat awal memori yang diisi angka 0. Bahasa mesin AF dimasukan pada alamat 1805H untuk mengeset register A agar menjadi 0. Kemudian mengisikan bahasa mesin 77 pada alamat 1806 agar isi dari register A dipindahkan ke alamat yang ditunjuk HL (1840H). Bahasa mesin 23 dimasukan, bermaksud agar nilai HL naik/bertambah dari 1840H ke 1806H. Bahasa mesin C6 02 dimasukkan untuk menambahkan dua nilai heksadesimal pada register A. Bahasa mesin 05 dimasukan untuk mengurangkan nilai dari register B. Lalu bahasa mesin 20 untuk melakukan proses loop apabila nilai register B belum bernilai 0. Proses perulangan ini dilakukan sampai 16 kali. Sesuai dengan nilai yang dimasukan pada register B diawal. Dengan demikian saat kita chek alamat 1950H-195FH maka hasilnya adalah : 0, 2 4, 6, 8, A, C, E, F, 10, 12, 14, 16, 18, 1A, 1C, 1E. Looping yang kita gunakan memiliki batas maksimum pengulangan, yaitu hanya sebanyak 255 atau FFH kali. Jika kita ingin mengganti, mengeset ataupun membuat nol alamat memori tertentu dengan ketentuan seperti yang kita inginkan, maka kita bisa melakukan looping yang kedua kalinya dengan batas maksimal looping adalah 255 atau FFH kali.
G. KESIMPULAN 1.
Pada percobaan 1 terdapat fungsi bahasa pemanggil untuk memasukkan data kesuatu register sesuai prinsip pemindahan data.
2.
Pada percobaan 2 dilakukan pengeset- an isi register-register dengan menggunakan bahasa mesin LD 16 bit sesuai yang diinginkan.
3.
Pada percobaan 3, proses loop dilakukan sebanyak 32 kali untuk mengisikan isi memori dari alamat 1850H – 186FH agar bernilai 0.
4.
Pada percobaan 4 dilakukan pengesetan alamat memori dengan ketentun yang diinginkan menggunakan Looping dengan bahasa rakitan yang digunakan adalah yang sesuai. Proses maksimal adalah 255 atau FFH kali dalam satu looping.
13 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”
H.
DAFTAR PUSTAKA - Harsono, Djiwo. 2017 .Petunjuk Praktikum mikroprosesor. Yogyakarta :STTNBATAN
14 |Laporan Praktikum Mikroprosesor “ Pemindahan Data”