Title: AT90S8515
1IKI10230Pengantar Organisasi KomputerKuliah no.
3 Machine Instructions
Sumber1. Hamacher. Computer Organization,
ed-5.2. Materi kuliah CS61C/2000 CS152/1997,
UCB.
26 Februari 2003 Bobby Nazief (nazief_at_cs.ui.ac.id)
Qonita Shahab (niet_at_cs.ui.ac.id) bahan kuliah
http//www.cs.ui.ac.id/kuliah/iki10230/
2Review The Stored Program Computer (2/2)
- Memori menyimpan instruksi dan data sebagai bit.
- Instruksi diambil oleh prosesor dari memori,
diartikan, dan, dieksekusi (operands/data
diambil, diolah, dan disimpan ke memori). - Contoh Instruksi 4-digit
- Operasi 0 gt add, 1 gt sub
- Alamat hasil
- Alamat op1
- Alamat op2
data
instruksi 0 0745 0add (jenis instruksi),
7addr. result, 4addr op1, 5addr op2
instruksi
Apa yang berada di lokasi 9 setelah eksekusi
instruksi 0, 1, 2?
3Review Operasi pada Memori
0745 Add (4),(5),(7) M7 ? M4 M5
0745
0 0 7 4 5 1 1 8 7 6 2 0 9 8 6 3 4 0 0 6 1 5 0 0
1 7 6 0 0 0 3 7 0 0 0 0 8 0 0 0 0 9 0 0 0 0
Instruction Fetch
0061
0017
Data (Operand) Read
0078
Data Store (Write)
4Review Set Instruksi (Bahasa Mesin)
- Bahasa Mesin ? kumpulan bit yang
merepresentasikan Operasi Operand - Bahasa Rakitan ? representasi dari Bahasa Mesin
dalam bahasa (kumpulan huruf angka) yang lebih
mudah dimengerti oleh manusia
mnemonic
- 0745 Add (4),(5),(7) 7 ? 4 5
5 6Eksekusi Instruksi (1/2)
- Instruksi dan data bersama-sama berada di memori
- Data diakses secara acak (tergantung alamat
operand) - Instruksi umumnya dijalankan secara berurut
(sekuensial) - Urutan ini menjamin logika alur program terdapat
urutan perintah ke mesin. - Instruksi disimpan secara berurut pada lokasi di
memori - Eksekusi instruksi dilakukan mulai dari alamat
terkecil - Bagaimana mengetahui posisi instruksi saat ini
(berikutnya?) - Gunakan register khusus Program Counter
7Eksekusi Instruksi (2/2)
PC (Program Counter)
2
Program couter (PC) berisi alamat
lokasiinstruksi yang akan dieksekusi padasiklus
berikutnya. Setelah instruksi dieksekusi, makaPC
akan increment dan menunjukpada instruksi
berikutnya (next location)PC PC 1 dst ..
dikenal dengan istilah straight line sequencing
8 9Decision
- Instruksi aritmatika, transfer data memberikan
kemampuan kita untuk melakukan komputasi data - Sama seperti kalkulator
- Untuk sebuah komputer, maka diperlukan kemampuan
untuk memilih, make decisions .. - Analogi HLL assembly language harus mendukung
statementif (condition true) do
thiselse do thatexit
(false) i ! j
(true) i j
i j?
that
this
Exit
10Branching
- Dampak dari pengambilan keputusan yang bergantung
pada suatu kondisi tertentu adalah terjadinya
pencabangan (branching) - Instruksi tidak lagi diambil dari lokasi memori
yang berurut, tetapi meloncat ke lokasi
memori tertentu ? PC diisi dengan nilai baru,
tidak di-increment - Manipulasi PC dengan memberikan alamat baru
(tidak berurut) juga digunakan untuk mengubah
alur eksekusi program tanpa bergantung pada
kondisi tertentu (jump)
11Branching Contoh
R0 ? Ni
12Condition Codes
- Informasi yang berkaitan dengan hasil operasi
(terutama Aritmatika Logika) disimpan dalam
Condition Code Flags - Kumpulan CC Flags ? Register CC/Status
- Masing-masing bit dari Register CC/Status
merepresentasikan - N (negative) perhitungan sebelumnya menghasilkan
bilangan negatif - Z (zero) perhitungan sebelumnya menghasilkan
bilangan 0 - V (overflow) perhitungan sebelumnya menyebabkan
overflow - C (carry) perhitungan sebelumnya menghasilkan
carry-out - Contoh Penggunaan
- LOOP . . .
- Decrement R1 R1 ? R1 - 1
- Branchgt0 LOOP if (Z ! 0) then LOOP
13 14Modus Pengalamatan (1/2)
- Jenis Syntax Effective Address
- Immediate Value Operand Value
- Add 10,R1 R1 ? R1 10
- Register Ri EA Ri
- Add R2,R1 R1 ? R1 R2
- Absolute (Direct) LOC EA LOC
- Add 100,R1 R1 ? R1 100
- Indirect-Register (Ri) EA Ri
- Add (R2),R1 R1 ? R1 R2
- Indirect-Memory (LOC) EA LOC
- Add (100),R1 R1 ? R1 100
15Modus Pengalamatan (2/2)
- Index X(R2) EA R2 X
- Add 10(R2),R1 R1 ? R1 R210
- BaseIndex (R1,R2) EA R1 R2
- Add (R1,R2),R3 R3 ? R3 R1R2
- BaseIndexOffset X(R1,R2) EA R1 R2
X - Add 10(R1,R2),R3 R3 ? R3
R1R210 - Relative X(PC) EA PC X
- Beq 10 if (Z1) then PC ? PC10
- Autoincrement (Ri) EA Ri, Increment Ri
- Add (R2),R1 R1 ? R1 R2, R2
? R2 d - Autodecrement -(Ri) Decrement Ri, EA Ri
- Add -(R2),R1 R2 ? R2 d, R1 ?
R1 R2
16Absolute (Direct) Mode
- Absolute Add 100,R1 R1 ? R1 100
100 200
Add 100,R1
88
17Immediate vs. Absolute
Move 150,R1 R1 ? EA EA 150
VS.
Move 150,R1 R1 ? 150 EA none
18Indirect Mode
- Indirect-Register Add (R2),R1 R1 ? R1
R2 - Indirect-Memory Add (100),R1 R1 ? R1
100
pointer
R2
200
100 200
Add (100),R1
200
Operand
19Register vs. Indirect-Register
- Move (R2),R1 R1 ? EA EA R2
VS.
Move R2,R1 R1 ? R2 EA addr.
of R2
20Immediate vs. Absolute vs. Indirect-Memory
- Move (150),R1 R1 ? EA EA 150
Move 150,R1 R1 ? EA EA 150
VS.
Move 150,R1 R1 ? 150 EA none
21Indirect Mode Contoh
- Move N,R1 number of items
- Move Num1,R2 points to 1st item
- Clear R0
- LOOP Add (R2),R0 R0 stores the sum
- Add 4,R2 point to the next item
- Decrement R1
- Branchgt0 LOOP go to LOOP if not done
- Move R0,SUM done!
22Index Mode Contoh
- Move LIST,R0
- Clear R1
- Clear R2
- Clear R3
- Move N,R4
- LOOP Add 4(R0),R1
- Add 8(R0),R2
- Add 12(R0),R3
- Add 16,R0
- Decrement R4
- Branchgt0 LOOP
- Move R1,SUM1
- Move R2,SUM2
- Move R3,Sum3
23Relative Addressing
- Move LIST,R0
- Clear R1
- Clear R2
- Clear R3
- Move N,R4
- LOOP Add 4(R0),R1
- Add 8(R0),R2
- Add 12(R0),R3
- Add 16,R0
- Decrement R4
- Branchgt0 LOOP
- Move R1,SUM1
- Move R2,SUM2
- Move R3,Sum3
Hasil perakitan Branchgt0 24 LOOP PC - 24
24Auto-indecrement Mode
- Move N,R1
- Move Num1,R2
- Clear R0
- LOOP Add (R2),R0 R0 ? R0 R2,
- R2 ? R2 d
- tipe data byte ? d 1
- tipe data word ? d 2
- Decrement R1
- Branchgt0 LOOP
- Move R0,SUM
-
25 26Organisasi Input/Output
- I/O Device biasanya memiliki 2 register
- 1 register menyatakan kesiapan untuk
menerima/mengirim data(I/O ready), sering
disebut Status/Control Register ? SIN, SOUT - 1 register berisi data, sering disebut Data
Register ? DATAIN, DATAOUT - Prosesor membaca isi Status Register
terus-menerus, menunggu I/O device men-set Bit
Ready di Status Register (0 ? 1) - Prosesor kemudian menulis atau membaca data
ke/dari Data Register - tulis/baca ini akan me-reset Bit Ready (1 ? 0)
di Status Register
27Contoh Program Input/Output
- Input Read from keyboard Move LOC,R0
Initialize memoryREAD TestBit 3,INSTATUS
Keyboard (IN) ready? Branch0 READ Wait for
key-in Move DATAIN,(R0) Read character - Output Write to displayECHO TestBit 3,OUTSTATU
S Display (OUT) ready? Branch0 ECHO Wait for
it Move (R0),DATAOUT Write character Compare C
R,(R0) Is it CR? Meanwhile, stores
it Branch?0 READ No, get more Call Process
Do something
28 29Stacks
- Lokasi memori yang pengaksesan datanya dibatasi
dengan cara LIFO (Last In, First Out) - data terakhir yang disimpan kedalam stack akan
menjadi data pertama yang diperoleh pada saat
stack diakses - Push memasukkan data ke Stack
- Pop mengeluarkan data yang berada di
top-of-stack (TOS) alamat TOS disimpan dalam
register Stack Pointer (SP)
0
Push
Top-of-Stack SP
Stack
Bottom-of-Stack
Pop
2k-1
30Operasi pada Stacks
- Push NewItem Subtract 4,SP
- Move NewItem,(SP)
Pop Item Move (SP),Item Add 4,SP
SP
19
SPold
-28
17
NewItem
SPold
19
-28
SP
Item
17
Bahaya Overflow
NewItem
19
Item
-28
Bahaya Underflow
31SubRoutines
- SubRoutine adalah sekumpulan instruksi yang
mengerjakan suatu fungsi tertentu dan diakhiri
dengan instruksi RETURN - SubRoutine biasanya dipanggil (CALL) oleh program
lain dan setelah SubRoutine selesai mengerjakan
fungsinya, kendali program dikembalikan (RETURN)
ke program pemanggil
Lokasi Subroutine SUB 1000 instruksi_i . .
. Return
Lokasi Program Utama 200 Call SUB 201 instruksi_be
rikutnya
1000
PC
201
Link
201
32SubRoutine Call Stacks
- Lokasi Program Utama
- Push R1
- Call SUB
- Pop R1
- instruksi_berikutnya
Lokasi Subroutine SUB 1000 instruksi_i . .
. Add R1,R2 . . . Return
33Passing Parameters via Registers
- Lokasi Program Utama
- Move N,R1
- Move NUM1,R2
- Call LISTADD
- Move RO,SUM
Lokasi Subroutine LISTADD LISTADD Clear
R0 LOOP Add (R2),R0 Decrement R1
Branchgt0 LOOP Return
- Via Registers
- Caller Subroutine share the same registers
- Passing by Value n (N) via R1
- Passing by Reference NUM1 via R2
- Contoh
-
- int sum
- int n 112
- int num1 new intn
-
- sum ListAdd(n, num1)
34Passing Parameters via Stack Frame
Lokasi Program Utama Push NUM1 Push N
Call LISTADD Move 4(SP),SUM
Add 8,SP
Lokasi Subroutine LISTADD LISTADD Push
R0 Push R1 Push R2 Move
16(SP),R1 Move 20(SP),R2 Clear
R0 LOOP Add (R2),R0 Decrement R1
Branchgt0 LOOP Move R0,20(SP) Pop
R2 Pop R1 Pop R0 Return
SPSP4SP8SP12SP16SP20
SPSP4
35Nested Subrouines
Stacking of Subroutine Calls Returns and
Environments
A
A CALL B CALL C
C RET
RET
B
A
B
A
B
C
A
B
A
36 37Contoh Program Vector Dot Product
- Dot Procut ? Ai x Bi
- Move AVEC,R1 R1 points to vector A.
- Move BVEC,R2 R2 points to vector B.
- Move N,R3 R3 serves as a counter.
- Clear R0 R0 accumulates the product.
- LOOP Move (R1),R4 Compute the product of
- Multiply (R2),R4 next components.
- Decrement R3 Decrement the counter.
- Branchgt0 LOOP Loop again if not done.
- Move R0,DOTPROD Store the product in memory.
38Contoh Program Byte Sorting (Algoritme)
- for (j n 1 j gt 0 j j 1)
- for (k j 1 k gt 0 k k 1)
- if (LISTk gt LISTj)
- TEMP LISTk
- LISTk LISTj
- LISTj TEMP
-
-
Kondisi Awal
Setelah Iterasi ke-1
39Contoh Program Byte Sorting
- Move LIST,R0 R0 points to the list LIST.
- Move N,R1 Initialize outer loop index.
- Subtract 1,R1 register R1 to j n - 1.
- OUTER Move R1,R2 Initialize inner loop index.
- Subtract 1,R2 register R2 to k j 1.
- MoveB (R0,R1),R3 Load LIST(j) into R3,
- which holds current max.
- INNER CompareB R3,(R0,R2) If LIST(k) ? R3,
- Branch0 NEXT do not exchange.
- MoveB (R0,R2),R4 Otherwise, exchange LIST(k)
- MoveB R3,(R0,R2) with LIST(j) and load
- MoveB R4,(R0,R1) new max. into R3.
- MoveB R4,R3 Reg. R4 servers as TEMP.
- NEXT Decrement R2 Decrement inner loop index.
- Branch0 INNER
- Decrement R1 Decrement outer loop index.
- Branchgt0 OUTER
40 41Linked Lists
Head
Tail
Link Address
Menambahkan record baru
42Linked Lists Alokasi Memori
Key field (ID)
Head
Link field
Data field
Tail
43Pengkodean Informasi Instruksi (1/2)
m bit
n bit
Informasi Lokasi Operanddimana data masukan
bersumber dan/ataudimana hasil operasi disimpan
Kode Operasi
Format Ukuran Instruksi
Variable Fixed Hybrid
44Pengkodean Informasi Instruksi (2/2)
Format 1-word
Format 2-word