iki10230 pengantar organisasi komputer kuliah no. 3: machine instructions

of 44 /44
1 IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions 26 Februari 2003 Bobby Nazief ([email protected]) Qonita Shahab ([email protected]) bahan kuliah: http://www.cs.ui.ac.id/kuliah/iki10230/ Sumber : 1. Hamacher. Computer Organization, ed-5. 2. Materi kuliah CS61C/2000 & CS152/1997, UCB.

Author: adelle

Post on 12-Jan-2016

58 views

Category:

Documents


0 download

Embed Size (px)

DESCRIPTION

IKI10230 Pengantar Organisasi Komputer Kuliah no. 3: Machine Instructions. Sumber : 1. Hamacher. Computer Organization , ed-5. 2. Materi kuliah CS61C/2000 & CS152/1997, UCB. 26 Februari 2003 Bobby Nazief ([email protected]) Qonita Shahab ([email protected]) - PowerPoint PPT Presentation

TRANSCRIPT

AT90S851526 Februari 2003
Bobby Nazief ([email protected])
Qonita Shahab ([email protected])
bahan kuliah: http://www.cs.ui.ac.id/kuliah/iki10230/
2. Materi kuliah CS61C/2000 & CS152/1997, UCB.
*
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
Alamat hasil
Alamat op1
Alamat op2
4=addr op1,
5=addr op2
Apa yang berada di lokasi 9 setelah eksekusi instruksi 0, 1, 2?
0 0 7 4 5
1 1 8 7 6
2 0 9 8 6
3
*
3
0745
0061
0017
0078
Processor
(active)
Control
(“brain”)
Datapath
(“brawn”)
0745: Add (4),(5),(7) ; [7] [4] + [5]
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
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
*
instruksi yang akan dieksekusi pada
siklus berikutnya.
PC = PC + 1; dst
0 Add 4,5,7
1 Sub 6,7,8
*
Sama seperti “kalkulator”
Untuk sebuah komputer, maka diperlukan kemampuan untuk memilih, “make decisions” ..
Analogi HLL: assembly language harus mendukung statement:
if (condition == true)
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
*
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:
Branch>0 LOOP ; if (Z != 0) then LOOP
*
Register: Ri ; EA = Ri
Indirect-Register: (Ri) ; EA = [Ri]
Indirect-Memory: (LOC) ; EA = [LOC]
*
Add 10(R2),R1 ; R1 [R1] + [[R2]+10]
Base+Index: (R1,R2) ; EA = [R1] + [R2]
Add (R1,R2),R3 ; R3 [R3] + [[R1]+[R2]]
Base+Index+Offset: X(R1,R2) ; EA = [R1] + [R2] + X
Add 10(R1,R2),R3 ; R3 [R3] + [[R1]+[R2]+10]
Relative: X(PC) ; EA = [PC] + X
Beq 10 ; if (Z==1) then PC [PC]+10
Autoincrement: (Ri)+ ; EA = [Ri], Increment Ri
Add (R2)+,R1 ; R1 [R1] + [[R2]],
; R2 [R2] + d
Add -(R2),R1 ; R2 [R2] – d,
; R1 [R1] + [[R2]]
100
200
100
200
Operand
Move (150),R1 ; R1 [EA]
Move #Num1,R2 ; points to 1st item
Clear R0
Decrement R1
Move R0,SUM ; done!
*
Move N,R1
Move #Num1,R2
Clear R0
; R2 R2 + d
Decrement R1 ;
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
Prosesor
SOUT
DATAOUT
Display
SIN
DATAIN
Keyboard
Bus
Move DATAIN,(R0) ; Read character
Output: Write to display
Move (R0),DATAOUT; Write character
; Meanwhile, stores it
Call Process ; Do something
Stacks
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
2k-1
SubRoutine biasanya dipanggil (CALL) oleh program lain dan setelah SubRoutine selesai mengerjakan fungsinya, kendali program dikembalikan (RETURN) ke program pemanggil
Lokasi Program Utama
200 Call SUB
Passing by Value: n ([N]) via R1
Passing by Reference: NUM1 via R2
Contoh:

Lokasi Program Utama
A:
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.
Branch>0 LOOP ; Loop again if not done.
Move R0,DOTPROD ; Store the product in memory.
*
for (j = n – 1; j > 0; j = j – 1)
{ for (k = j – 1; k >= 0; k = k – 1)
{ if (LIST[k] > LIST[j])
{ TEMP = LIST[k];
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.
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.
Branch≥0 INNER
Branch>0 OUTER
dimana hasil operasi disimpan