1. AGUS BUDI RAHARJO
5109100164
ORGANISASI KOMPUTER-C
1.1
Langkah-langkah eksekusi instruksi mesin :
Add LOCA, R0
Siklus fetch:
MAR [PC]
Increment PC
READ
IR [MDR]
//PC diatur untuk menunjuk ke instruksi program(disimpan dalam memori pada lokasi INSTR).
//mengupdate isi PC dari INSTR ke INSTR + 1 sehingga instruksi berikutnya diambil.
//membaca instruksi program
//instruksi dibawa ke IR untuk dieksekusi
Siklus eksekusi (mengeksekusi Add LOCA, R0)
MAR [IR]ADDR {bagian alamat dari IR untuk LOCA}
READ
MAR [IR] ADDR {bagian alamat dari IR untuk R0}
READ
ALU MDR
MDR ALU
R0 [MDR]
//mentransfer isi operand LOCA yang akan dieksekusi
//membaca instruksi dan disimpan di MDR
//mentransfer isi operand R0 yang akan dieksekusi
//membaca instruksi (R0) dan disimpan di MDR
//setelah operand yang tersimpan dibaca dari memory ke MDR
Kemudian ditransfer dari MDR ke ALU
//setelah dua operand diambil dan dioperasikan dengan ALU, maka
hasilnya dikirim ke MDR
//hasil ditransfer pada alamat yang dituju (R0)/isi R0 dioverwrite
2. 1.2
Langkah-langkah eksekusi instruksi mesin :
Add R1, R2, R3
Siklus fetch:
MAR [PC]
Increment PC
READ
IR [MDR]
//PC diatur untuk menunjuk ke instruksi program(disimpan dalam memori pada lokasi INSTR).
//mengupdate isi PC dari INSTR ke INSTR + 1 sehingga instruksi berikutnya diambil.
//membaca instruksi program
//instruksi dibawa ke IR untuk dieksekusi
Siklus eksekusi (mengeksekusi Add R1,R2 , R3)
MAR [IR]ADDR {bagian alamat dari IR untuk R1}
READ
MAR [IR] ADDR {bagian alamat dari IR untuk R2}
READ
MAR [IR] ADDR {bagian alamat dari IR untuk R3}
READ
ALU MDR
MDR ALU
R3 [MDR]
1.3
//mentransfer isi operand R1 yang akan dieksekusi
//membaca instruksi dan disimpan di MDR
//mentransfer isi operand R2 yang akan dieksekusi
//membaca instruksi dan disimpan di MDR
//mentransfer isi operand R3 yang akan dieksekusi
//membaca instruksi dan disimpan di MDR
//setelah operand yang tersimpan dibaca dari memory ke MDR
Kemudian ditransfer dari MDR ke ALU
//setelah tiga operand diambil dan dioperasikan dengan ALU, maka
hasilnya dikirim ke MDR
//hasil ditransfer pada alamat yang dituju (R3)/isi R3 dioverwrite
a. Rangkaian pendek intruksi mesin : tambahkan isi lokasi memori A ke lokasi memori B, dan letakkan jawabannya di lokasi C.
Nb: tidak boleh merusak isi lokasi A atau B
Load
Load
Add
Store
A, R1
B, R2
R1, R2
R2, C
//mentransfer isi operand A ke dalam R1 tanpa merusak isi A
//mentransfer isi operand B ke dalam R2 tanpa merusak isi B
//mengoverwrite isi R2 dengan penjumlahan R1 dan R2
//mentransfer isi R2 ke dalam operand C
3. b. mengoverwrite operand awal pada lokasi kedua.
Add
A, B
//mengoverwrite isi B dengan penjumlahan isi A dengan isi B
Store B, C
//mentransfer isi B ke dalam operand C
2.3
misalkan suatu pola biner dalam beberapa lokasi memori, mungkinkah menyatakan apakah pola ini merupakan suatu instruksi mesin atau bilangan?
Jawab :
Mungkin. Karena dalam prosesor dengan alamat 32-bit, suatu instruksi 3 alamat(misal Add A, B, C) terlalu banyak untuk dimasukkan dalam satu
word, sehingga suatu format yang memungkinkan banyak word digunakan untuk instruksi tunggal akan diperlukan untuk menyatakan tipe
instruksi ini.
2.8
program yang dapat mengevaluasi ekspresi AxB + CxD dengan single accumulator
Load
//mentransfer isi operand A ke dalam accumulator
Multiply
B
// perkalian isi accumulator dengan B
Store
B
//menyimpan isi accumulator ke B
Load
C
// mentransfer isi operand C ke dalam accumulator
Multiply
D
// perkalian isi accumulator dengan D
Add
B
//menambah isi accumulator dengan B
Store
2.13
A
D
// menyimpan isi accumulator ke D
effective address operand memory tiap instruksi :
a) load
20(R1),R5
effective address = 1200 +20 =1220
b) move
#3000,R5
effective address = 3000
c) Store
R5,30(R1,R2)
effective address = 30 +1200 +4600=5830
4. d) Add
-(R2),R5
effective address = 4600- 4= 4596
e) subtract
(R1)+,R5
effective address = 1200
2.16 perbedaan :
ORIGIN
1000
DATAWORD
300
//menginformasikan bahwa nilai data 100 ditempatkan dalam word memory pada alamat ke 1000
/* pernyataan ini tidak menunjuk suatu instruksi yang akan dieksekusi pada saat object program dijalankan/tidak akan muncul pada object program. Hanya
memberitahu assembler bahwa nama ORIGIN seharusnya diganti dengan nilai 300 kapanpun muncul program. (disebut assembler directive) digunakan
assembler saat mentranslasikan source program ke dalam object program. */
Move
#300,1000
//menyatakan instruksi dalam suatu program