Buatlah sebuah program dengan ketentuan sebagai berikut :
a. Pilih salah satu buah register dari R16 s/d R31. Kemudian beri nama dengan hitung
b. Isikan nilai hitung dengan nilai 0x0A
c. Buatlah label bernama turun dan turunkan nilai hitung tersebut sebanyak 1.
d. Berikan perintah tidak aktif(No Operation)
e. Cek apakah nilai hitung sudah mencapai nol. Jika belum maka kembali ke label turun (seperti dalam butir c diatas)
f. Jika sudah, maka masukkan nilai 0x05 ke hitung
g. Buatlah label bernama naik dan naikkan nilai hitung tersebut sebanyak 1.
h. Berikan perintah tidak aktif (No Operation)
i. Cek apakah nilai hitung sudah mencapai 0x)A. Jika belum maka kembali ke label naik (seperti pada butir g di atas)
j. Jika sudah, maka program kembali ke label turun (seperti dalam butir c di atas)
Jawaban dengan source code bahasa Assembly :
;
; Tugas 3.asm
;
; Created: 4/23/2016 9:44:39 PM
; Author : Ahmad Akbar Mariuddin
;
; Replace with your application code
.nolist
.include "m16adef.inc"
.list
.org 0x00
.def hitung = R16
LDI hitung, 0x0A
turun:
;Menurunkan nilai hitung
DEC hitung
BRNE non_aktif
;Bandingkan nilai hitung
;dengan 0x00
CPI hitung, 0x00
non_aktif:
;jika tidak sama maka
;ke label turun
BRNE turun
;jika sama maka masukkan
;nilai 0x05 ke hitung
LDI hitung, 0x05
naik:
INC hitung
;Bandingkan nilai hitung
;dengan 0x0A
CPI hitung, 0x0A
BRNE non_aktif2
non_aktif2:
;jika tidak sama maka
;ke label naik
BRNE naik
;jika sama maka masukkan
;nilai 0x0A ke hitung
RJMP turun
No comments:
Post a Comment