Praktikum Mikroprosesor

Percobaan I
            Tulislah program dalam bahasa assembly untuk mengeset register-register sebagai berikut: A=0, B=1, C=2, D=3, E=4, H=5, L=6 (gunakan intruksi LD 8 bit untuk mentransfer satu byte data setiap kali).
·         Langkah 1
Tulislah program dalam bahasa assembly. Intruksi terakhir RST 38H akan mengembalikan kontrol uPro-1 pada program monitor setelah menjalankan seluruh program.

·         Langkah 2
Dengan menggunakan tabel intruksi LD 8 bit, terjemahkan program ke dalam bahasa mesin dengan 1800H sebagai alamat awal. Tuliskan alamat yang sesuai untuk tiap-tiap intruksi.

·         Langkah 3
Siapkan mikrokomputer uPro-1. Masukkan program dengan menekan tombol-tombol pada keyboard. Periksa program yang tersimpan dalam memori. Set PC(Program Counter) pada awal alamat yaitu alamat 1800H dan jalankan programnya.

·         Langkah 4
Tekan tombol REG dan periksalah apakah isi tiap-tiap register sudah benar. Bila masih ada kesalahan, kembalilah pada langkah 1 dan periksa lagi.
\




Alamat
Bahasa Mesin
Bahasa  Assembly
Keterangan
1800
3E 00
LD   A, 0
A   00H
1802
06 01
LD   B, 1
B   01H
1804
0E 02
LD   C, 2
C   02H
1806
16 03
LD   D, 3
D   03H
1808
1E 04
LD   E, 4
E   04H
180A
26 05
LD   H, 5
H   05H
180C
2E 06
LD   L, 6
L   06H
180E
FF
RST 38H
Keprogram monitor

Flowchart

Masukkan program (sama dengan percobaan I). Set PC pada 1820H dan jalankan programnya. 




Percobaan II
Tulislah program dimana bahasa assembly untuk mengeset isi register-register sebagai berikut: B=12, C=34, D=56, E=78, H=9, L=A (gunakan intruksi LD 16 bit untuk mentransfer dua byte data setiap kali).
·         Langkah 1
Sama dengan percobaan I (Tulislah program dalam bahasa assembly).

·         Langkah 2
Dengan menggunakan tabel intruksi LD 8 bit, terjemahkan program ke dalam bahasa mesin dengan alamat awal 1820H.

·         Langkah 3

·         Langkah 4
Periksa isi masing-masing register seperti percobaan I.
Catatan: suatu data 16 bit terditi 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. Misalnya, data 16 bit 1234H disimpan pada alamat 1820-1821H dengan cara sebagai berikut:






Alamat
Bahasa Mesin
Bahasa Assembly
Keterangan
1820
01 34 12
LD BC, 1234 H
B    12 H; C    34 H
1823
11 78 56
LD DE, 5678 H
D    56 H; E    78 H
1826
21 0A 09
LD HL, 09 0A H
H    09 H; L    0A H
1829
FF
RST 38H
Ke program monitor

Flowchart


Percobaan III
 

Menulis program untuk menghapus isi memori pada alamat 1850H sampai 186FH.
Penjelasan:     
1.      Jika kita menggunakan intruksi LD 8 bit untuk mentransfer setiap data ke tujuan masing-masing, akan diperlukan 32 (20H) kali pelaksanaan transfer data. Akan lebih mudah bila kita menggunakan metoda ‘loop’ pada program kita.
2.      Gunakan register B sebagai penghitung loop. Set register B sama dengan 20H sebelum pelaksanaan program loop. Gunakan HL sebagai penunjuk alamat memori dan set alamat awal 1850H pada HL. 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:

Alamat
Bahasa Mesin
Label
Mnemonik
Keterangan
1800
06 02

LD B, 20 H
;Set loop counter = 32
1802
21 50 18

LD HL, 1850 H
;Set HL= alamat memori; mulai dihapus (00)
1805
AF

XOR A
;Set A = 0

1806

77

LOOP

LD (HL), A
;Masukkan 0 ke alamat; memori yang ditunjukkan oleh HL
1807
23

INC HL
;Tambah HL dengan 1
1808
05

DEC B
Kurangi B dengan 1
1809
20 FB

JRNZ LOOP
Jika B  0, kembali ke LOOP
180B
FF

RST 38H
Ke program monitor


Flowchart

 
 


Percobaan IV
Tulislah suatu program dalam bahasa assembly untuk mengeset alamat memori 1840H – 184FH sebagai berikut: 0, 1, .., F.
(Petunjuk: Ubahlah penghitung loop dan nilai alamat awalnya. Register A ditambah dengan 1 pada loop berikutnya).
Alamat
Bahasa Mesin
Label
Mnemonic
Keterangan
1800
06 10

LD B, 10 H
;Set loop counter = 32
1802
21 40 18

LD HL, 1840 H
;Set HL= alamat memori; mulai dihapus (00)
1805
AF

XOR A
;Set A = 0

1806

77

LOOP

LD (HL), A
;Masukkan 0 ke alamat; memori yang ditunjukkan oleh HL
1807
23

INC HL
;Tambah HL dengan 1
1808
3C

INC A
Tambah A dengan 1
1809
05

DEC B
Kurangi B dengan 1
180A
20FA

JRNZ LOOP
Jika B  0, kembali ke LOOP
180C
FF

RST 38H
Ke program monitor

 

Flowchart





Percobaan V
            Program berikut ini dapat dipakai untuk menjumlahkan isi register D dan isi register E bersama-sama. Hasilnya akan disimpan pada pasangan register HL. Masukkan program ini pada uPro-1 dan kemudian jalankan. Catatlah hasilnya.
Alamat
Bahasa Mesin
Mnemonic
Keterangan


ORG. 1800H
;Alamat awal
1800
7B
LD A,E
;E masuk ke reg. A
1801
82
ADD A,D
;A + D
1802
6F
LD L,A
;A masuk ke reg. L
1803
3E 00
LD A,0
;0 masuk ke reg. A
1805
CE 00
ADC A,0
;A + 0 + carry masuk ke reg. A
1807
67
LD H,A
;A masuk ke reg. H
1808
FF
RST 38H
Kembali ke monitor

Nilai Preset
Hasil Pelaksanaan Program
Register
Register
Flag
D         E
HL
Sign
Zero
P/V
Carry
5AH    A6H
46H     77H
01H 00H
00H BDH
0
0
0
1
0
0
0
0


Flowchart

 
 

Percobaan VI
Program berikut ini dapat digunakan untuk menjumlahkan data 16 bit di memori pada alamat 1A00H – 1A01H dengan data 16 bit yang ada di dalam pasangan register DE. Hasilnya akan disimpan pada pasangan register HL. Masukkan program pada uPro-1 dan jalankan. Catat hasil yang didapat.
Alamat
Bahasa Mesin
Mnemonic
Keterangan


ORG. 1800H
;Alamat awal
1800
3A 00 1A
LD A,(1A00H)
;1A00H masuk ke reg. A
1804
83
ADD A,E
;A + E
1805
6F
LD L,A
;A masuk ke reg. L
1806
3A 01 1A
LD A,(1A01H)
;1A01H masuk ke reg. A
1809
8A
ADC A,D
;D masuk ke reg. A
180A
67
LD H,A
;A masuk ke reg. H
180B
FF
RST 38H
Kembali ke monitor

Nilai Preset
Hasil Pelaksanaan Program
Register
Register
Flag
(1A01H)         (1A00H)
DE
Sign
Zero
P/V
Carry
8D                   4F
46    47
1
0
0
0

Flowchart
  








Comments

Post a Comment

Popular Posts