NIM : 21060118120033
Kelas : Mikroprosesor – A
TUGAS II MIKROPROSESOR
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 :
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.
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.