Operasi Transfer Data Pada bab ini akan dibahas tujuan pembelajaran, Bahasa pemrograman mikroprosesor Z80. Selain itu dikemukakan contoh-contoh Bahasa program sederhana dan aplikasinya. Tujuan Pembelajaran: Setelah mempelajari bab ini, diharapkan peserta didik mampu untuk: 1. Memahami Bahasa pemrograman pada mikroprosesor Z80. 2. Mengaplikasikan set instruksi dalam menyelesaikan suatu masalah. 3. Membuat program-program aplikasi dengan menggunakan Bahasa assembly. Percobaan 1 Tulislah program dalam bahasa assembly 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 untuk mentransfer satu byte data setiap kali). Keterangan: Program pada soal diatas merupakan program operasi transfer data 8 bit. Program Bahasa assembly untuk soal diatas adalah seperti pada table berikut ini: Kita menggunakan instruksi LD untuk mentransfer data. Kita hanya menggunakan 1 register untuk setiap instruksi LD karena 1 register sudah bisa memuat data sebanyak 8 bit. Dalam pemrograman Bahasa assembly nilai 8 bit sama dengan 2 digit heksadesimal. Berikut programnya: Tabel hasil operasi: Address Memory Bahasa Mesin Bahasa Assembly Keterangan 0000H 3E00 LD A, 00H A 00H ------------ -------------- LD B, 01H B 01H ------------ -------------- LD C, 02H C 02H ------------ -------------- LD D, 03H D 03H ------------ -------------- LD E, 04H E 04H ------------ -------------- LD H, 05H H 05H ------------ -------------- LD L, 06H L 06H ----------- -------------- RST 38H Ke program monitor
Langkah Kerja: 1. Ketiklah instruksi program pada jendela assembler Z80. 2. Setelah selesai mengetik instruksi compile-lah program dengan cara mengklik tombol Tools Assemble and Load atau tekan tombol F8. 3. Perhatikanlah jendela utama pada main register.
Main register menampilkan setiap register utama Z80 dengan masing-masing isi datanya. Data default sebelum ada data yang lain masuk adalah FF. 4. Klik Rate pada jendela utama kemudian klik Step by Step. Rate yang mengatur kecepatan eksekusi data pada operasi tertentu. 5. Klik Simulation Start pada jendela utama.
Jalankan setiap instruksi dengan mengklik tombol Step. Seperti gambar dibawah ini: 6. Operasikanlah sampai pada instruksi RST 38H: 7. Perhatikan hasil output:
Perhatikanlah gambar diatas, isi register utama yang tadinya FF sekarang sudah diisi oleh nilai datanya masing-masing yang kita inputkan lewat pemrograman Bahasa assembly. 8. Perhatikanlah memori editor. Memori editor menjelaskan mengenai alamat-alamat data yang terdapat pada RAM (Random Access Memory). 9. Memori editor akan menyimpan operand dan semua Bahasa mesin dari opcode yang kita input melalui assembler. Berikut outputnya:
10. Berikut penjelasan dari memori editor: Percobaan 2 Tulislah program dalam bahasa assembly 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 untuk mentransfer satu byte data setiap kali). Tentukanlah alamat awal untuk menyimpan Bahasa mesin dari instruksi pada alamat 1800H. Keterangan: Pada percobaan 2 ini sama saja halnya dengan percobaan 1. Hanya saja kita diminta untuk menentukan alamat awal RAM di 1800H untuk menyimpan operand dan Bahasa mesin dari opcode Program pada soal diatas merupakan program operasi transfer data 8 bit. Program Bahasa assembly untuk soal diatas adalah seperti pada table berikut ini: Kita menggunakan instruksi LD untuk mentransfer data. Kita hanya menggunakan 1 register untuk setiap instruksi LD karena 1 register sudah bisa memuat data sebanyak 8 bit. Dalam pemrograman Bahasa assembly nilai 8 bit sama dengan 2 digit heksadesimal.
Untuk program dengan mengeset alamat awal memori, langkah kerja sama dengan program sebelumnya hanya kita harus mengubah nilai PC sesuai dengan nilai di ORG. Seperti gambar dibawah ini, set PC = 1800 kemudian tekan tombol ENTER. Hasil pada memori editor: Semua operand dan Bahasa mesin dari opcode tersimpan pada alamat awal 1800 sampai selanjutnya. Berikut programnya:
Tabel hasil operasi: Address Memory Bahasa Mesin Bahasa Assembly Keterangan ORG 1800H mengeset alamat awal RAM di 1800H 1800H 3E00 LD A, 00H A 00H ------------ -------------- LD B, 01H B 01H ------------ -------------- LD C, 02H C 02H ------------ -------------- LD D, 03H D 03H ------------ -------------- LD E, 04H E 04H ------------ -------------- LD H, 05H H 05H ------------ -------------- LD L, 06H L 06H ----------- -------------- RST 38H Ke program monitor Lembar kerja: 1. Jalankanlah semua percobaan sesuai dengan langkah kerja! 2. Perhatikan setiap output yang terjadi! 3. Tulis dan isilah setiap tabel hasil operasi pada perconaan 1 dan 2 pada buku catatan masing-masing! 4. Buatlah kesimpulan dari kedua percobaan yang kalian telah lakukan, apa yang membedakan dari kedua program tersebut? 5. Kumpulkan kepada guru mata pelajaran untuk dikoreksi!