Anda di halaman 1dari 8

Tutorial 3:

Pengenalan CPU-OS SIMULATOR


(LANJUTAN)
A. Pendahuluan
Tujuan
Pada akhir latihan terbimbing ini, mahasiswa diharapkan mampu:
✓ Buat instruksi CPU bersyarat (compare and jump)
✓ Buat loop berulang dari instruksi CPU
✓ Gunakan mode pengalamatan tidak langsung untuk mengakses data dalam memori

B. Simulator Prosesor (CPU)


Tutorial arsitektur komputer didukung oleh simulator, yang dibuat untuk mendukung konsep
teoritis yang biasanya dibahas selama perkuliahan. Simulator menyediakan representasi
visual dan animasi dari mekanisme yang terlibat dan memungkinkan mahasiswa untuk
mengamati cara kerja sistem yang tersembunyi, yang akan sulit atau tidak mungkin untuk
dilakukan sebaliknya. Keuntungan tambahan menggunakan simulator adalah
memungkinkan mahasiswa untuk bereksperimen dan mengeksplorasi berbagai aspek
teknologi sistem tanpa harus menginstal dan mengkonfigurasi sistem yang sebenarnya.

C. Dasar Teori
Model pemrograman arsitektur komputer mendefinisikan komponen arsitektur
low level tersebut, yang meliputi berikut ini:
➢ Set instruksi CPU
➢ Register CPU
➢ Berbagai cara menangani instruksi dan data dalam instruksi

Ini juga mendefinisikan interaksi antara komponen di atas. Model pemrograman tingkat
rendah inilah yang memungkinkan penghitungan terprogram.

D. Simulator Details
Anda dapat menemukan detail simulator yang relevan dengan tutorial ini dalam tutorial yang
sebelumnya Anda selesaikan. Akibatnya, hal ini tidak diulangi di sini kecuali informasi baru
tentang cara melihat dan mengakses tampilan memori data program; tutorial ini
membutuhkan akses ke bagian simulator ini. Anda akan menemukan detailnya di halaman
berikutnya.

1|P ag e
Program data memory view

Image 1 - Program data memory view

Instruksi CPU yang mengakses bagian memori yang berisi data dapat menulis atau membaca data di
lokasi yang dituju. Data ini dapat dilihat pada jendela halaman memori yang ditunjukkan pada
Gambar 1 di atas. Anda dapat menampilkan jendela ini dengan mengklik tombol SHOW PROGRAM
DATA MEMORY… di jendela CPU utama. Kolom Ladd (alamat logis) menunjukkan alamat awal dari
setiap baris di layar. Setiap baris tampilan mewakili 8 byte data. Kolom B0 sampai B7 mewakili byte 0
sampai 7 pada setiap baris. Kolom Data menunjukkan karakter yang dapat ditampilkan sesuai dengan
8 byte. Byte yang sesuai dengan karakter yang tidak dapat ditampilkan ditampilkan sebagai titik. Byte
data hanya ditampilkan dalam format hex. Misalnya, pada Gambar 1, ada byte data bukan nol di lokasi
alamat 19 dan 37. Byte data ini sesuai dengan karakter yang dapat ditampilkan, kapital A dan B.

Untuk mengubah nilai byte apa pun, pertama-tama pilih baris yang berisi byte. Kemudian gunakan
informasi di frame Initialize Data untuk mengubah nilai byte pada baris yang dipilih sebagai format
Integer, Boolean or String. Anda perlu mengklik tombol UPDATE untuk melakukan perubahan.

2|P ag e
E. Latihan – Investigasi dan Eksplorasi
Masukkan instruksi yang Anda buat untuk menjawab pertanyaan di kotak kosong. Lihat Lampiran di
akhir dokumen ini untuk menemukan rincian tentang instruksi yang diinginkan. Anda diharapkan
untuk menjalankan instruksi yang Anda buat di simulator untuk memverifikasi jawaban Anda.

A. Perulangan (Loops) menggunakan instruksi jump and compare:


1. Tulis pernyataan kondisional sehingga jika R02 lebih besar dari (>) R01 maka R03 diatur
menjadi 8. (Gunakan R01 sebagai operan pertama dan R02 sebagai operan kedua)

2. Tulis pernyataan kondisional sehingga jika R02 kurang dari atau sama dengan (<=) R01
maka R03 diatur menjadi -5. (Gunakan R01 sebagai operan pertama dan R02 sebagai
operan kedua)

3. Tulis pernyataan kondisional sehingga jika R01 = 0 maka R03 diatur menjadi 5 jika tidak
R03 diatur menjadi R01 + 1.

4. Tulis loop yang berulang 5 kali di mana R02 bertambah 2 setiap kali loop berulang.

3|P ag e
5. Tulis sebuah loop yang berulang WHILE R04> 0. Atur nilai awal R04 menjadi 8.

6. Tulis sebuah loop yang berulang UNTIL R05> R09. Atur nilai awal R05 menjadi 0 dan R09
menjadi 12.

7. Tulis rutinitas yang mendorong angka 8 dan 2 di atas tumpukan. Kemudian memunculkan dua
nomor satu per satu dari tumpukan, menambahkannya dan mendorong hasilnya kembali ke
atas tumpukan.

4|P ag e
8. Tantangan # 1: Tempatkan 15 nomor dari 1 hingga 15 di atas tumpukan menggunakan
instruksi push dalam satu lingkaran. Kemudian dalam loop kedua gunakan instruksi pop
untuk mengeluarkan dua angka dari atas tumpukan, tambahkan mereka dan dorong hasilnya
kembali ke atas tumpukan. Perulangan kedua mengulangi ini sampai hanya ada satu nomor
yang tersisa di atas tumpukan yang seharusnya menjadi hasil akhir.

B. Petunjuk untuk menulis ke dan membaca dari memori (RAM):


Instruksi berikut mengakses memori data program. Anda dapat menampilkan memori ini
sehingga Anda dapat mengamati hasilnya dengan mengacu pada Gambar 1 dan teks terkait
di bagian D di atas.

9. Temukan instruksi yang menyimpan byte dalam memori dan gunakan untuk menyimpan nomor
65 di lokasi alamat memori 20 (ini menggunakan metode memory direct addressing).

10. Pindahkan nomor 51 ke register R04. Gunakan instruksi store untuk menyimpan konten R04 di
lokasi memori 21 (ini menggunakan metode register direct addressing).

11. Pindahkan nomor 22 ke register R04. Gunakan informasi ini untuk secara tidak langsung
menyimpan nomor 58 ke dalam memori (petunjuk: Anda perlu menggunakan awalan '@'
untuk ini - lihat daftar petunjuk di lampiran) - (ini menggunakan metode register indirect
addressing).

5|P ag e
12. Temukan instruksi yang memuat byte dari memori ke register. Gunakan ini untuk memuat
nomor di alamat memori 22 ke register R10.

C. Kesimpulan:
13. Tantangan # 2: tulis loop di mana 10 angka dari 48 hingga 57 disimpan sebagai byte
tunggal dalam memori mulai dari alamat memori 24. Anda harus menggunakan metode
register indirect untuk menyimpan angka dalam memori (lihat latihan 11 di atas)

14. Tantangan # 3: tulis perulangan di mana angka-angka disimpan dalam memori oleh program
(13) di atas disalin ke bagian memori yang berbeda mulai dari lokasi alamat 80.

6|P ag e
Appendix - Simulator Instruction Sub-set

Inst. Description
Data transfer instructions
Move data to register; move register to register
MOV e.g.
MOV #2, R01 moves number 2 into register R01
MOV R01, R03 moves contents of register R01 into register R03
Load a byte from memory to register
LDB e.g.
LDB 1022, R03 loads a byte from memory address 1022 into R03
LDB @R02, R05 loads a byte from memory the address of which is in R02
LDW Load a word (2 bytes) from memory to register
Same as in LDB but a word (i.e. 2 bytes) is loaded into a register
Store a byte from register to memory
STB STB R07, 2146 stores a byte from R07 into memory address 2146
STB R04, @R08 stores a byte from R04 into memory address of which is in
R08
STW Store a word (2 bytes) from register to memory
Same as in STB but a word (i.e. 2 bytes) is loaded stored in memory
Push data to top of hardware stack (TOS); push register to TOS
PSH e.g.
PSH #6 pushes number 6 on top of the stack
PSH R03 pushes the contents of register R03 on top of the stack
Pop data from top of hardware stack to register
e.g.
POP POP R05 pops contents of top of stack into register R05
Note: If you try to POP from an empty stack you will get the error message
“Stack underflow”.
Arithmetic instructions
Add number to register; add register to register
e.g.
ADD ADD #3, R02 adds number 3 to contents of register R02 and stores the
result in register R02.
ADD R00, R01 adds contents of register R00 to contents of register R01
and stores the result in register R01.
SUB Subtract number from register; subtract register from register
MUL Multiply number with register; multiply register with register
DIV Divide number with register; divide register with register
Control transfer instructions
Jump to instruction address unconditionally
JMP e.g.
JMP 100 unconditionally jumps to address location 100 where there is
another instruction

7|P ag e
JLT Jump to instruction address if less than (after last comparison)
JGT Jump to instruction address if greater than (after last comparison)
Jump to instruction address if equal (after last comparison instruction)
e.g.
JEQ JEQ 200 jumps to address location 200 if the previous comparison
instruction result indicates that the two numbers are equal, i.e. the Z
status flag is set (the Z box will be checked in this case).
JNE Jump to instruction address if not equal (after last comparison)
Mark Stack Frame instruction is used in conjunction with the CAL
instruction.
MSF e.g.
MSF reserve a space for the return address on program stack
CAL 1456 save the return address in the reserved space and jump to
subroutine in address location 1456
Jump to subroutine address (saves the return address on program stack)
CAL This instruction is used in conjunction with the MSF instruction. You’ll
need an MSF instruction before the CAL instruction. See the example
above
RET Return from subroutine (uses the return address on stack)
SWI Software interrupt (used to request OS help)
HLT Halt simulation
Comparison instruction
Compare number with register; compare register with register
e.g.
CMP #5, R02 compare number 5 with the contents of register R02
CMP R01, R03 compare the contents of registers R01 and R03
CMP Note:
If R01 = R03 then the status flag Z will be set, i.e. the Z box is checked.
If R01 < R03 then none of the status flags will be set, i.e. none of the status
flag boxes are checked.
If R01 > R03 then the status flag N will be set, i.e. the N status box is
checked.
Input, output instructions
IN Get input data (if available) from an external IO device
Output data to an external IO device
OUT e.g.
OUT 16, 0 outputs contents of data in location 16 to the console (the
second parameter must always be a 0)

8|P ag e

Anda mungkin juga menyukai