Anda di halaman 1dari 14

LAPORAN PRAKTIKUM MIKROPROSSESOR

PEMINDAHAN DATA

Disusun oleh :

1. Bagus Agul T 021500424


2. Danu Itsnan H 021500425

SEKOLAH TINGGI TEKNOLOGI NUKLIR


BADAN TENAGA NUKLIR NASIONAL
YOGYAKARTA
2017
PEMINDAHAN DATA
A. TUJUAN
1. Membiasakan pemakai dengan fungsi instruksi pemindahan data.
2. Latihan mengeset nilai inisialisasi data.
3. Latihan Menulis Program.

B. TEORI
1. Kebanyakan operasi pemindahan data didapat dengan menggunakan instruksi LD (Load).
Data dapat dipindahkan dalam unit-unit 8 bit atau 16 bit. Instruksi-instruksi seperti EX,
EXX, PUSH dan POP juga dapat digunakan untuk memindahkan data 16 bit. Sedangkan
instruksi LDI dan LDIR dapat dipakai untuk memindahkan blok-blok data.
2. Suatu instruksi LD mencakup 2 operand. Operand pertama menunjukkan lokasi dimana
data akan disimpan ( dibagian memori atau register). Operand ini disebut tujuan.
Operand kedua menunjukkan lokasi asal data yang dipindahkan dan disebut sumber.
Misalnya LD A,B menunjukkan bahwa data pada register B akan dipindahkan
(dicopykan) ke register A. Register A disebut tujuan dan register B disebut sumber.
3. Kemungkinan arah perpindahan data :
a) Register ke register, misal LD A,B ; LD HL, BC
b) Memori ke register, misal LD A, (HL) ; POP AF
c) Data ke register, misal LD A, 25H ; LD HL, 125AH
d) Register ke memori, misal LD (HL), A ; PUSH BC
e) Memori ke memori, missal LDD ; LDIR
f) Data ke memori, misal LD (HL), 5BH.
C. LANGKAH DAN DATA PERCOBAAN
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 dalam
bahasa mesin dengan 1800H sebagai alamat awal. Tulislah alamat yang
sesuai untuk tiap-tiap instruksi.
Step 3 : Siapkan kit uPF-1, masukkan program dengan menekan tombol-tombol pada papan
kunci. 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. Bila
masih ada kesalahan, kembalikan pada step 1 dan periksa lagi.

Tabel Data Percobaan


Alamat Bahasa Mesin Bahasa Rakitan Keterangan
memori
1802H 3E 00 LD A, 00 Isi Reg A dengan data 00H
1800H 06 01 LD B, N Isi Reg B dengan data 01H
1804H 0E 02 LD C, N Isi Reg C dengan data 02H
1806H 16 03 LD D, N Isi Reg D dengan data 03H
1808H 1E 04 LD E, N Isi Reg E dengan data 04H
180AH 26 05 LD H, N Isi Reg H dengan data 05H
180CH 2E 06 LD H, N Isi Reg L dengan data 06H
FF RST 38H
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.
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, 090AH Isi Reg HL dgn data 090AH
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 1820H (alamat yang lebih rendah)
34
12
by 1821H (alamat
te yang lebih tinggi)
or
de
tin
gg
i
12
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.

Contoh program:
Menulis program untuk menghapus isi memori alamat 1850H sampai 186FH.
Alamat Bahasa Mesin Label Bahasa Rakitan Keterangan
memori
1800H 06 20 LD B, 20H Data 20H sebagai penghitung loop
1802H 21 50 18 LD HL, 1850H Set HL sbg alamat awal memori yg diisi nol
1805H AF XOR A Set re A = 0
1806H 77 Loop LD (HL), A Isikan 0 pada alamat memori yg ditunjuk HL
1807H 23 INC HL Tambah HL dengan 1
1808H 05 DEC B Kurangi B dengan 1
1809H 20 FB JR NZ, Loop Jika isi reg B belum = 0 kembali ke Loop
FF RST 38H Kembali ke program monitor

Penjelasan :
1. Jika digunakan instruksi LD 8 bit untuk memindahkan setiap data ke tujuan
masing-masing 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.
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.

Tabel Data Percobaan


Alamat Bahasa Label Bahasa Rakitan Keterangan
memori Mesin
1800H 06 16 LD B, 16H Data 16H sebagai penghitung Loop
1802H 21 40 18 LD HL, 1840H Set HL sebagai alamat awalmemori yang diisi nol
1805H AF XOR A Set Reg A=0
1806H 3C INC A Tambah A dengan 1
1807H 77 LOOP LD (HL), A Isikan 0 pda alamat memori yang di tunjuk HL
1808H 23 INC HL Tambah HL dengan 1
1809H 05 DEC B Kurangi B dengan 1
180AH 20 FA JRNZ, LOOP Jika isi Reg belum=0 kembali ke Loop
180CH FF FF RST 38H
Latihan Soal:
Tulisah suatu program dalam bahasa rakitan untuk mengeset alamat memori 1950H sampai
195F sebagai berikut : 0, 2, 4, 6, 8, A, C, E, 10, 12, 14, 16, 18, 1A, 1C, 1D Petunjuk :
Ubahlah penghitung loop dan nilai alamat awalnya.

Alamat Bahasa Label Bahasa Rakitan Keterangan


memori Mesin
1800H 06 16 LD B, 16H Data 16H sebagai penghitung Loop
1802H 21 40 18 LD HL, 1950H Set HL sebagai alamat awalmemori yang diisi nol
1805H AF XOR A Set Reg A=0
1806H 77 LOOP LD (HL), A Isikan 0 pda alamat memori yang di tunjuk HL
1807H C6 ADD A, N ????????????
1808H 02 ADD A ????????????
1809H 23 INC HL Tambah HL dengan 1
180AH 05 DEC B Kurangi B dengan 1
180BH 20 F9 JRNZ, LOOP Jika isi Reg belum=0 kembali ke Loop
180DH FF FF RST 38H RST 38H
D. PEMBAHASAN
a) Percobaan 1

Alamat BahasaMesin BahasaRakitan Keterangan


memori
1802H 3E 00 LDA, 00 Isi RegA dengan data 00H
1800H 06 01 LD B, N Isi RegBdengan data 01H
1804H 0E 02 LD C, N Isi RegCdengan data 02H
1806H 16 03 LD D, N Isi RegDdengan data 03H
1808H 1E 04 LD E, N Isi RegEdengan data 04H
180AH 26 05 LD H, N Isi RegHdengan data 05H
180CH 2E 06 LD H, N Isi RegLdengan data 06H
FF RST 38H

Untuk memindahkan data dari Alamat memory ke registry digunakan Perintah LD.
Bahasa mesin perintah LD terdiri dari 4 bit data.
2 bit pertama berisi perintah Isi registry mana yang akan diubah dengan secara urut
3E, 06, 0E, 16, 1E, 26, dan 2E merupakan perintah untuk mengisi registry A, B, C,
D, E, H, dan L.
2 bit berikutnya berisi data yang akan diisikan ke registry tersebut, nilai registry yang
diisikan dapat diisi dengan data apa saja tergantung keinginan, mulai dari 00H
sampai FFH.

b) Percobaan 2
Alamatmemori Bhs Mesin BahasaRakitan Keterangan
1820H 01 34 12 LDBC, 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, 090AH Isi Reg HLdgn data 090AH
FF RST 38H
Hampir sama dengan percobaan satu, hanya saja perintah ini mengisikan 2 registry
sekaligus
Perintah bahasa mesin terdiri dari 6 bit data
2 bit pertama menyatakan registry yang akan diisi dengan secara berurutan 01, 11,
dan 21 menyatakan perintah untuk mengisi registry BC, DE, dan HL
2 bit selanjutnya menyatakan data yang akan diisikan ke registry ke dua dari
pasangan registry yang akan diisi, contohnya jika dimasukkan 01 34 12 maka 34H
akan mengisi data registry C dari registry BC
2 bit terakhir menyatakan data yang akan diisikan ke registry pertama dari pasangan
registry yang akan diisi, contohnya jika dimasukkan 01 34 12 maka 12H akan
mengisi data registry B dari registry BC

c) Percobaan 3
Menulis program untuk menghapus isi memori alamat 1850H sampai 186FH.
Alamat BahasaMesin Label BahasaRakitan Keterangan
memori
1800H 0620 LDB,20H Data20Hsebagaipenghitungloop
1802H 215018 LDHL,1850H SetHLsbgalamatawalmemoriygdiisinol
1805H AF XORA SetreA= 0
1806H 77 Loop LD(HL),A Isikan0 padaalamatmemoriygditunjukHL
1807H 23 INCHL TambahHLdengan1
1808H 05 DECB KurangiB dengan1
1809H 20FB JRNZ, Loop JikaisiregBbelum= 0 kembalikeLoop
FF RST38H Kembalikeprogrammonitor

Pada alamat 1800H dan 1801H bahasa mesin 06 20 ini menyatakan jumlah data yang
akan diubah, 20 menunjukkan jumlah address yang akan diubah dan data ini
disimpan pada registry B. Jadi untuk mengubah jumlah datanya tinggal mengganti
data alamat 1801H.
Alamat 1802H 1804H merupakan letak address alamat awal yang akan diubah
datanya, dengan 21 50 18 empat bit terakhirnya merupakan alamat address dengan
letak dua digitnya terbalik yang akann diisikan ke registry HL.
Address 1805H merupakan data yang akan diisikan ke address yang akan diubah,
perintah ini juga dapat diganti dengan LD A, N untuk mengubah data selain nol.
Address 1806H merupakan perintah untuk mengisikan data registry A yang sudah di
set pada perintah sebelumnya ke Address yang akan dituju.
Address 1807H merupakan perintah untuk menaikkan nilai registry HL yang
berisikan alamat yang dituju sebanyak 1 bit.
Address 1808H merupakan perintah untuk mengurangi nilai registry B yang
berisikan jumlah data yang diisi sebnyak 1 bit.
Address 1809H 180AH merupakan perintah Loop dimana Loop akan berhenti jika
nilai registry B sama dengan 0. Titik awal Loop dapat diganti dengan mengubah nilai
bit terakhir perintah tersebut.

d) Percobaan 4

Alamat Bahasa Label BahasaRakitan Keterangan


memori Mesin
1800H 06 16 LD B, 16H Data 16H sebagaipenghitung Loop
1802H 21 40 18 LD HL, 1840H Set HL sebagaialamatawalmemori yang diisinol
1805H AF XOR A Set Reg A=0
1806H 3C INC A Tambah A dengan 1
1807H 77 LOOP LD (HL), A Isikan 0 pdaalamatmemori yang di tunjuk HL
1808H 23 INC HL Tambah HL dengan 1
1809H 05 DEC B Kurangi B dengan 1
180AH 20 FA JRNZ, LOOP Jikaisi Reg belum=0 kembalike Loop
180CH FF FF RST 38H

Program Ini hampir sama dengan program pada percobaan 3


Perbedaannya adalah dengan menyisipkan perintah INC A pada Address 1806H untuk
menaikkan nilai registry A yang diisikan ke Address pada tiap loop sebanyak 1 bit.
Selain itu titik awal Loop dinaikkan dengan mengubah registry 180AH dari 20 FB
menjadi 20 FA

e) Latihan Soal
Alamat Bahasa Label BahasaRakitan Keterangan
memori Mesin
1800H 06 16 LD B, 16H Data 16H sebagaipenghitung Loop
1802H 21 40 18 LD HL, 1950H Set HL sebagaialamatawalmemori yang diisinol
1805H AF XOR A Set Reg A=0
1806H 77 LOOP LD (HL), A Isikan 0 pdaalamatmemori yang di tunjuk HL
1807H C6 ADDA, N Mengisi registry A sebanyak +2
1808H 02 ADD A -
1809H 23 INC HL Tambah HL dengan 1
180AH 05 DEC B Kurangi B dengan 1
180BH 20 F9 JRNZ, LOOP Jikaisi Reg belum=0 kembalike Loop
180DH FF FF RST 38HRST 38H

Program Ini hampir sama dengan program sebelumnya


Perbedaannya adalah dengan mengubah perintah INC A dengan perintah ADD A, N
untuk menambahkan bit registry A sebanyak 2 bit. Perintah ADD A, N terdiri dari 4
bit, 2 bit pertama merupakan perintah ADD A itu sendiri sedangkan dua bit terakhir
merupakan jumlah bit yang akan ditambahkan.
Selain itu titik awal Loop juga dinaikkan dengan mengubah registry 180BH dari 20 FA
menjadi 20 F9.

E. Kesimpulan
Dari percobaan ini dapat disimpulkan bahwa Praktikan sudah terbiasa memakai fungsi
instruksi pemindahan data dan sudah dapat mengeset nilai inisialisasi data. Selain itu
Praktikan juga sudah dapat menulis Program untuk mengganti nilai-nilai data Alamat dengan
rentang tertentu dengan memanfaatkan Perintah untuk memindah data registry pada
Mikroprossesor.

Anda mungkin juga menyukai