Anda di halaman 1dari 10

NAMA

NIM
MATA KULIAH
BAB
TANGGAL

:
:
:
:
:

M. YUSUF HIDAYAT
145150300111043
AOK LANJUT
I
26 SEPTEMBER 2016

4.1

Penjelasan instruksi :
MOV #5, R00 : memberi nilai 5 ke register R00
MOV #8, R00 : mengubah nilai di R00 dan memberi nilai 8 ke register R00
ADD R00, R01: menambahkan nilai dari R00 ke R01
PSH R01

: memasukkan nilai dari R01 ke stack

PSH R00

: memasukkan nilai dari R00 ke stack

CMP R00, R01 : membandingkan nilai dari R00 dengan R01


JMP 0

: kembali ke instruksi pada alamat 0

POP R02

: mengeluarkan nilai di top of stack dan diisikan ke register R02

POP R03

: mengeluarkan nilai di top of stack dan diisikan ke register R03

CMP R04, R05 : membandingkan nilai dari register R04 dengan R05
JEQ 0

: kembali ke instruksi pada alamat 0 jika hasil perbandingan sama

Penjelasan Program :
Program diatas berfungsi untuk menguji beberapa code perintah dari bahasa assembly.
Program tersebut juga menampilkan proses push dan pop dalam sistem stack. Dimana
push berfungsi untuk memasukkan nilai pada suatu register sedangkan pop berfungsi
untuk mengambil nilai pada suatu register.

Screenshot output :

Output ketika step instruksi MOV #5, R00

Output ketika step instruksi MOV #8, R00

Output ketika step instruksi ADD R00, R01

Output ketika step instruksi POP R02

Output ketika step instruksi POP R03

Tabelhasilpengamatanketikainstruksiberjalan
ST
EP

R0
0

R0
1

R0
2

R0
3

R0
4

R0
5

PC

BR

Stat
us
Flag

SR

SP

809
6

12

809
6

17

809
6

20

809
8

23

810
0

28

810
0

32

810
0

35

809
8

38

809
6

10

43

809
6

11

809
6

12

809
6

IR
MO
V
#5,
R00
MO
V
#8,
R00
AD
D
R00
,
R01
PS
H
R01
PS
H
R00
CM
P
R00
,
R01
JMP
0
PO
P
R02
PO
P
R03
CM
P
R04
,
R05
JEQ
0
MO
V
#5,
R00

MA
R
0

12

MD
R
MO
V
#5,
R00
MO
V
#8,
R00
AD
D
R00
,
R01

17

PSH
R01

20

PSH
R00

23

28

CM
P
R00
,
R01
JMP
0

32

POP
R02

35

POP
R03

38

43
0

CM
P
R04
,
R05
JEQ
0
MO
V
#5,
R00

4.2

Penjelasaninstruksi :
MSF
: memanggil subroutine
PSH #8

: memasukkan nilai 8 stack

CAL $L2

: memanggil fungsi pada label L2

HLT
program

: instruksi terakhir dari program yang berfungsi untuk menghentikan

L2:

: Label L2

POP R02

: mengeluarkan nilai stack dan dimasukkan ke register R02

PSH #1

: memasukkan nilai 1 ke stack

POP R01

: mengeluarkan nilai stack dan dimasukkan ke register R01

MOV #0, R01 : memberi nilai 0 ke register R01


MOV #24, R00
L0:

: memberi nilai 24 ke register R00

: Label L0

ADD #1, R01 : menambah nilai 1 ke register R01


MSF
CAL $L1

: memanggil subroutine atau fungsi


: memanggil fungsi pada label L1

CMP R02, R01 : membandingkan nilai di register R02 dengan R01


JNE $L0
sama

: kembali keinstruksi pada Label L0 jika hasil perbandingan tidak

RET

: kembali pada instruksi yang terakhir berjalan

L1:

: Label L1

OUT @R00, 0 : menampilkan output dari register R00


RET

: kembali pada instruksi yang terakhir berjalan

Penjelasan program :
Program tersebut akan menampilkan tulisan yang sebelumnya di set pada data memory
di alamat 24 sebanyak 8x pada I/O Console.
Screenshot :

4.3

Penjelasaninstruksi :
MOV #48, R01

: memindah nilai 48 ke register R01

MOV #20, R02

: memindah nilai 20 ke register R02

L0:
STB R01, @R02

: label L0
: menyimpan bi tdari register R01 ke alamat register R02

ADD #1, R01

: menambahkan nilai 1 pada register R01

ADD #1, R02

: menambahkan nilai 1 pada register R02

CMP #57, R01

: membandingkan nilai 57 dengan nilai di register R01

JNE $L0
SUB #1, R02

: loncat ke label L0 jika nilai belum sama


: mengurangi isi dari register R02 dengan 1

MOV #20, R03

: memberi nilai 20 ke register R03

MOV #80, R04

: memberinilai 80 ke register R04

L1:
LDB @R03, R05
dimasukkan ke R05
ADD #1, R03
STB R05, @R04
CMP #29, R03

: label L1
: mengambil data bit dari alamat register R03 dan
: menambah nilai 1 ke register R03
: menyimpan bit R05 kealamat register R04
: membandingkan nilai di register R03 dengan 29

JNE $L1

: loncat ke label L1 jika nilai belum sama

SUB #1, R04

: mengurangi nilai register R04 dengan nilai 1

HLT

: menghentikan program

Penjelasan Program :
Program akan menampilkan masukan angka 0 - 8 kemudian akan menampilkan hasil
keluar angka 0 8 dari kiri ke kanan dimulai dari memori ke 21
Screenshot :

Tugas AOK Lanjut

Modifikasi program 4.3 sehingga menampilkan output angka 8 0 dari kanan ke kiri

Penjelasan Instruksi :
MOV #56, R01

: memindahkan nilai 56 ke register R01

MOV #20, R02

: memindahkan nilai 20 ke register R02

L0:
STB R01, @R02

: label L0
: menyimpan bit dari register R01 kealamat register R02

SUB #1, R01

: mengurangi nilai 1 pada register R01

SUB #1, R02

: mengurangi nilai 1 pada register R02

CMP #47, R01

: membandingkan nilai 47 dengan nilai di register R01

JNE $L0

: loncat ke Label L0 jika nilai belum sama

MOV #20, R03

: memberi nilai 20 ke register R03

MOV #87, R04

: memberi nilai 87 ke register R04

L1:

: label L1

LDB @R03, R05


: mengambil data bit dari alamat register R03 kemudian
dimasukkan ke register R05
SUB #1, R03
STB R05, @R04
SUB #1, R04

: mengurangi nilai 1 pada register R03


: menyimpan bit R05 ke alamat register R04
: mengurangi nilai 1 pada register R04

CMP #11, R03


JNE $L1
HLT

: membandingkan nilai 11 dengan nilai di register R03


: berpindahinstruksi pada Label L1 jika nilai belum sama
: menghentikan program

Penjelasan program :
Program di atas akan menampilkan angka dari 8 0 dan berjalan dari arah kanan kekiri
pada data memory dimulai dari memori ke 21
Screenshot :

Anda mungkin juga menyukai