Search For This Site

Tuesday, June 21, 2011


PERTEMUAN 2
TRANSFER DAT
A

Alat dan Bahan
Microprocessor evaluator (Zilog Z80)

Tujuan
-       Membiasakan pemakai dengan fungsi tranfer data
-       Latihan menggeser nilai inisialisasi data
-       Latihan menulis program, mengisi dan menjalankan

Dasar Teori
            Kebanyakan operasi transfer data didapat dengan menggunakan instruksi LD(load). Data dapat ditransfer dalam unit-unit 8 bit atau 16 bit. Instruksi-instruksi seperti EX, EXX, PUSH dan POP juga dapat digunakan untuk mentransfer data 16 bit. Sedangkan instruksi LDI dan LDIR dapat dipakai untuk mentrasfer blok-blok data.
            Suatu instruksi LD mencakup 2 operand. Operand pertama menunjukkan lokasi destination atau tujuan dan operand kedua menunjukkan source atau sumber.
kemungkinan transfer data yang terjadi :
register ß register                contoh            LD       A,B
register ß memory               contoh            LD       A,(HL)
register ß data                     contoh            LD       A,25h
memori ß register                contoh            LD       (HL),A
memori ß memory               contoh            LDD
memori ß data                     contoh            LD       (HL),5Bh

Percobaan – Percobaan

Tulislah program dalam bahasa assembly untuk mengeset isi register-register sebagai berikut A = 00h, B = 01h, C = 02h, D = 03h, E = 04h, H = 05h, L = 06h (gunakan instruksi LD 8 bit untuk mentransfer satu byte di masing-masing register).

Langkah 1       : tulislah program dalam bahasa assembly. Instruksi terakhir RST38h akan mengembalikan kontrol uPro-1 pada program monitor setelah menjalankan seluruh program.
Langkah 2       : Dengan menggunakan tabel instruksi LD 8 bit, terjemahkan program kedalam bahasa mesin dengan 1800h sebagai alamat awal. Tuliskan alamat yang sesuai untuk tiap-tiap instruksi.
Langkah 3       : Siapkan mikrokomputer uPro-1 (mikroprossesor evaluator). Masukkan program dengan menekan tombol-tombol pada keypad. Periksa program yang tersimpan dalam memroy. Set PC(Program Counter) pada alamat awal, yaitu alamat 1800h. Dan jalankan programnya.
Langkah 4       : Tekan tombol REG dan periksalah apakah isi tiap-tiap register sudah benar. Bila masih ada kesalahan, kebalilah pada langkah 1 dan periksa lagi.
Address
Machine Code
Assembly
1800h
3E 00
LD  A,00h
……..
……..
……..
……..
……..
……..
……..
FF
RST 38h

            Tulislah program dimana bahasa assembly ntuk mengeset isi register-register sebagai berikut  B = 12h, C = 34h, D = 56h, E = 78h, H = 9h, L = A (gunakan instruksi LD 16 bit untuk mentransfer dua byte di masing-masing register)

Langkah 1       : Sama dengan percobaan1 (tulis program dengan bahasa assembly).
Langkah 2       : Dengan menggunakan tabel instruksi LD 16 bit, terjemahkan program kedalam bahasa mesin dengan alamat awal 1820h.
Langkah 3       : (sama dengan percobaan 1) Set PC(Program Counter) pada alamat awal, yaitu alamat 1800h. Dan jalankan programnya.
Langkah 4       : Periksa isi pada masing-masing register (seperti percobaan 1).

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 1820h – 1821h dengan cara sebagai berikut :

Address
Machine Code
ASSEMBLY
1820h
01 34 12
LD  BC,1234h
1823h
……..
……..
……..
……..
……..
……..
FF
RST 38h

           
Menulis program untuk menghapus isi memori pada alamat 1850h sampai 186Fh, penjelasan :
1.    Jika kita menggunakan instruksi LD 8 bit untuk mentransfer setiap data ke tujuan masing-masing, akan diperlukan 32 (20h) kali pelaksanaan transfer data. Akan lebih mdah bila kita menggunakan metoda “loop” pada program kita.
2.    Gunakan register B sbagai penghitung loop. Gnakan HL sebagai pennjuk alamat memori dan set alamat awal 1850h padaHL. HL ditambah dengan satu (incremented) dan B dikurangi dengan 1 (decremented) untuk setiap loop. Jika b=0, berarti semua loop telah dilaksanakan. Jika sebaliknya (B ≠ 0), loop diulang lagi.



3.    Programnya adalah sebagai berikut

Address
Machine Code
Label
Assembly
1820h
……..
……..
LD    B,20h
……..
……..
……..
LD    HL,1850H
……..
……..
……..
XOR   A
……..
……..
LOOP
LD    (HL),A
……..
……..
……..
INC    HL
……..
……..
……..
DEC   B
……..
……..
……..
JR     NZ,LOOP
……..
FF
……..
RST   38h

Terjemahkan program contoh diatas kedalam bahasa mesin dan isikan ke RAM evaluator. Jalankan program danperiksa apakah isi alamat 1850h -186Fh telah terhapus (= 0). Jika belum benar, periksa sekali lagi, lalu jalankan lagi.
           
Tulislah suatu program dam bahasa assembly untuk mengeset alamat memori 1840h-184Fh sebagai berikut : 0, 1, 2, ….., F. (Petunjuk : ubahlah penghitung loop dan nilai alamat awalnya. Register A ditambah dengan 1 pada loop berikutnya).

No comments:

Post a Comment