Anda di halaman 1dari 4

Nama : Febrio Rizky A.

NIM : 21060118120033

Kelas : Mikroprosesor – A

TUGAS II MIKROPROSESOR

1. Rancanglah program pencabangan bersyarat dengan menggunakan bahasa assembler


pada MCS-51 dari flowchart berikut ini :

Pada akhir program, berapakah nilai Port 1 dan R0 ?

Jawab :
mulai:
Mov P1, 12h ;Memberi nilai PORT 1 dengan isi 12h
Mov R0, #14h ;Memberi nilai R0 dengan isi 14h
Dec R0 ;R0=R0-1
Inc P1 ;P1=P1+1
CJNE R0,#0, mulai ;Bila tidak R0=0, maka akan lompat ke LOOP
end
Hasil simulasi menggunakan Keil uVision C51

Pembahasan :

Gambar 1. Simulasi Inisiasi Program

Pada Gambar 1, terlihat bahwa memory stack masih berisi NULL. Hal ini
dikarenakan bahasa assembly dijalankan berdasarkan baris per baris sehingga R0 belum
terbaca nilainya.
Gambar 2. Simulasi Mov R0, #14h

Pada Gambar 2, terlihat bahwa memory stack dari r0 berisi nilai 14h. Hal ini
sesuai dengan sintaks Mov R0, #14h yang berarti mengopikan nilai 14 heksa ke register
0.

Gambar 3. Simulasi Dec R0

Pada Gambar 3, terlihat bahwa memory stack dari r0 berisi nilai 13h. Hal ini
sesuai dengan sintaks Dec R0 yang berarti mengurangi satu nilai sebelum R0.
Gambar 4. Simulasi CJNE R0, #0, mulai

Pada Gambar 4, terlihat bahwa pointer pada disassembly kembali ke baris awal.
Hal ini dikarenakan mnemoic CJNE membandingkan isi pada register 0. Jika isinya
belum bernilai 0, maka pointer kembali ke label mulai.

Berdasarkan simulasi, terlihat bahwa nilai akhir dari R0 adalah 13h dan P1
adalah 13h. Hal ini dikarenakan inisiasi dari nilai R0 dan P1 diletakkan di dalam proses
looping sehingga nilai R0 tidak akan mencapai NULL.

2. Rancanglah program dalam bahasa assembler untuk menjumlahkan 2 buah bilangan


BCD 16-bit. Simulasikanlah dalam MIDE-51 atau Keil Uvision C51, kemudian
sertakanlah screenshoot eksekusi program (Internal RAM dan SFR) dengan
menampilkan perubahan nilai-nilai pada register dan I/O terkait.

Anda mungkin juga menyukai