Arsitektur & Instruksi
Mikroprosesor
Komputer vs
Prosessor
Komputer (Komputer) berbeda dengan Prosessor Unit (Central Processing Unit / MPU). Komputer tersusun atas
Prosessor + unit-unit penyusun komputer lainnya (seperti: Unit I/O, Memori, dan Sistem Bus).
Central Processing Unit (CPU)
CPU cont…
CPU merupakan jantung dari komputer, dan melakukan beberapa fungsi berikut:
Memberikan sinyal-sinyal pewaktuan (Clock) dan kontrol untuk semua elemen dalam komputer
1.Mengambil instruksi dan data dari memori
2.Mentransfer data menuju dan dari memori dan elemen
I/O
3.Men-dekode (menterjemahkan) instruksi
4.Melakukan operasi-operasi aritmatika & logika yang
diminta oleh instruksi
5.Merespon sinyal-sinyal kontrol yang diberikan oleh I/O,
Bahasa Assembly
Bahasa
Assembly
adalah
bahasa
pemrograman
tingkat
rendah,
karena
kemampuannya berinteraksi langsung dengan
perangkat keras (
hardware
) komputer. Disebut
juga dengan bahasa mesin (
machine language
)
karena terdiri dari logika 0 dan 1 (sistem biner)
Bahasa
C,
Basic,
Pascal,
dll
merupakan
beberapa contoh dari bahasa pemrograman
Beberapa Istilah
Mnemonic (kode operasi):
merupakan istilah untuk kode instruksi (perintah) dalam bahasa assembly, seperti mov, add, jump, etc.
Register :
berfungsi untuk penyimpanan sementara (register serba guna). Digunakan untuk 16 bit (X) dan 8 bit (H,L)
Operand :
adalah suatu item data yang dimanipulasi.
Assembler :
digunakan untuk menerjemahkan bahasa Assembly ke dalam kode mesin (disebut juga dengan kode Objek). Kuliah ini digunakan Turbo Assembler
mov AX, 56FCH
Microprocessor (
P)
Pada dasarnya P hanyalah kumpulan register (hardware) yang operasinya ditentukan oleh instruksi mesin yang dapat dieksekusi (software)
Kumpulan fungsi yang dapat dieksekusi P disebut set instruksi (instruction set)
Instruksi mesin (machine instruction) terdiri dari kode operasi dan operand yang dispesifikasi dalam kode biner
Jenis Operand : Alamat, Bilangan, Karakter, dan Data logika
P
(contin….1)
Jenis Operasi yang dilakukan :
Data Processing / Pengolahan Data
(ALU atau Arithmetic Logic Unit)
Data Movement / Perpindahan Data
Control / Kontrol (Instruksi Pemeriksaan
Set Instruksi
:
-
Transfer Data (Data Movement)
-
Logika
-
Aritmatika
-
Kontrol
-
String
P
(contin….2)
Data Processing
REGISTER
Pada CPU, register digunakan untuk menyimpan
informasi sementara. Informasi ini dapat berupa
satu atau dua byte untuk memproses data atau
alamat. Register-register tersebut antara lain:
AX
digunakan sebagai akumulator 2 byte,
BX
sebagai basis pengalamatan register,
CX
digunakan sebagai counter dalam bentuk
operasi,
Register (Con….1)
a) Fungsi khusus:
-
AX : Akumulator Perkalian, pembagian, … 16
bit. Dibagi menjadi AH dan AL yang
masing-masing 8 bit
-
BX : Penunjuk memori tak langsung terhadap
Data Segment (DS). Dibagi menjadi BH dan
BL
-
CX : Pencacahan / looping. Dibagi menjadi CH
dan CL. CL dimanfaaatkan untuk penggeseran
bit
-
DX : Pengalamatan I/O tak langsung. Dibagi
Register (Con….2)
b) Register penunjuk (BP, SP) :
Sebagai penunjuk offset dalam mengalamati memori pada operasi stack (penumpukan)
SS : SP SS : BP
c) Register Index :
Digunakan untuk menahan alamat offset untuk istruksi yang menjangkau data yang tersimpan di memori
- SI untuk menyimpan alamat operand sumber (DS : SI)
- DI untuk menyimpan alamat lokasi tujuan operand (DS :
Register (Con….3)
d) Register Segment :
Digunakan untuk penunjukan alamat memori.
-
CS : Segmen Instruksi
-DS : Segmen Data
-
SS : Segmen Stack (Penumpukan)
-ES : Segmen Data Ekstra
e) Register IP :
Register
Instruction Pointer
IP 16
Flag Register
FR 16
Extra Segment (Reg Segmen)
ES 16
Stack Segment (Reg Segmen)
SS 16
Data Segment (Reg Segmen)
DS 16
Code Segment (Reg Segmen)
CS 16
Data (General Purpose Register) DL 8
DH 8
DX 16
Count (General Purpose Register) CL 8
CH 8
CX 16
Base (General Purpose Register) BL 8
BH 8
BX 16
Akumulator (General Purpose Register) AL 8
AH 8
Mode Pengalamatan
Menspesifikasikan alamat suatu operand
#
Mode Pengalamatan segera
(Data bilangan
langsung disertakan dengan OpCode)
Contoh : mov AX,
4477
H
#
Mode Pengalamatan Register
(Data sumber
ada dalam register
P)
Contoh : mov AX,
BX
Mode Pengalamatan (Cont…)
#
Mode Pengalamatan tak Langsung
(Data di memori dan ditunjuk alamatnya dengan isi register)Contoh : mov ah,[SI]
#
Mode Pengalamatan Berindex
(Data di memori dan ditunjuk dengan reg index + bilangan)Contoh : mov AX,[SI+6]
#
Mode Pengalamatan Berbasis
(Data di memori dan ditunjuk dengan reg BP / BX + bilangan)Contoh : mov AX,[BP+2]
#
Mode Pengalamatan String
Instruksi Transfer Data
MOV Tujuan,Sumber <movement/pindah> Contoh : mov [0000H],AL
mov AX,BX mov AL,27H
XCHG Tujuan,Sumber <Exchange/Tukar> Contoh : xchg AX,BX
xchg [0100],BH In Akumulator Port <Input>
Contoh : In AL,10H In AX,DX
Instruksi Logika
AND Tujuan,Sumber AND BX,DX
OR Tujuan,Sumber OR AH,[0100]
XOR Tujuan,Sumber XOR AL,01010101
NOT Tujuan NOT AX
<Hasil operasi disimpan di tujuan>
TEST Tujuan,Sumber TEST BX,DX
And Tujuan,Sumber AND BX,DX
Instruksi Logika (Cont…1)
SHL Tujuan,banyak-geseran
<Shift Logical
Left>
SHL Tujuan,banyak-geseran
<Shift Logical
Right>
SAL Tujuan,banyak-geseran
<Shift Arithmetic
Left>
SAR Tujuan,banyak-geseran
<Shift Arithmetic
Right>
Contoh : SHL AL,1
Instruksi Logika (Cont…2)
CF X7 X6 X5 X4 X3 X2 X1 X0
X7 X6 X5 X4 X3 X2 X1 X0 0
X7 X7 X6 X5 X4 X3 X2 X1 X0 X0
Before
After
SHL
After
Instruksi Logika (Cont…3)
RCL Tujuan,banyak-putaran
<Rotate with
Carry Left>
RCR Tujuan,banyak-putaran
<Rotate with
Carry Right>
ROL Tujuan,banyak-putaran
<Rotate Left>
ROR Tujuan,banyak-putaran
<Rotate Right>
Contoh : RCL AL,1
Instruksi Logika (Cont…4)
CF X7 X6 X5 X4 X3 X2 X1 X0
X7 X6 X5 X4 X3 X2 X1 X0 C
F
X7 X7 X6 X5 X4 X3 X2 X1 X0 X7
Before
After
RCL
After
Instruksi Aritmetika
Penjumlahan
ADD Tujuan, Sumber ADD AX,BX
ADC Tujuan, Sumber ADC AX,BX
INC Tujuan, Sumber INC CX
DAA (Decimal Adjust Addition)
AAA (ASCII Adjust Addition)
Pengurangan
SUB Tujuan, Sumber SUB SI,BX
SBB Tujuan, Sumber SUB [SI],CH
DEC Tujuan DEC CL
NEGTujuan NEG AL
DAS (Decimal Adjust Subtraction)
Instruksi Aritmetika (Cont…1)
Perkalian
MUL Sumber <AX AL x Sumber 8 bit>
MUL BX <DX,AX AX x Sumber 16bit>
IMUL Sumber <Untuk Bilangan bertanda> IMUL CX
Pembagian
DIV Sumber IDIV Sumber
Pengaturan
CWB <Convert Byte to Word> (MSB dari ALAH)
Instruksi Kontrol
Lompatan tanpa kondisi
JMP Operand JMP Lagi JMP BX
Operand : Short-Label/Near-Label Mem16, Reg16 Intrasegment
Far-Label, Mem32, reg32 Intersegment
Lompatan dengan Kondisi
Lompatan terjadi jika kondisi terpenuhi Kondisi mengacu pada register flag
Contoh : JZ Operand (Jump Zero)
JNZ Operand (Jump Not Zero) JS Operand (Jump Sign)
Instruksi Kontrol (Cont…1)
Looping
Loop Short-Label
<melompat ke Short-Label jika CX 0> Contoh : Mov CX,10
lagi INC AX DEC CX Loop lagi
PUSHSumber
Untuk menyimpan data dari register ke memori stack
PUSH AX mengakibatkan (SP-1)AH (SP-2)AL SP SP-2
POPTujuan
Untuk mengambil kembali data yang tersimpan di stack
Instruksi Kontrol (Cont…2)
CALL Operand
Untuk memanggil prosedur (subrutin)
RET
Untuk Mengakhiri Prosedur dan kembali ke rutin pemanggil
CALL NearLabel [SP-1] IPH [SP-2] IPL
SP SP-2
IP NearLabel RET IPL [SP]
Instruksi Kontrol (Cont…3)
Interupsi Software
INT Tipe Tipe bernilai 0-255
Jika interupsi dijalankan, P akan menyimpan isi flag, CS, IP ke stack lalu mengambil nilai baru untuk CS dan IP dari tabel
Interupsi (Interupt Vector) yang terletak pada alamat memori 00000H – 003FFH (1kByte)
Tipe Alamat Fungsi
0 00000 Devide by Zero 1 00004 Single Step
2 00008 NMI
“ “ “
“ “ “
Instruksi Kontrol (Cont…4)
Interupsi Software (Cont…)
dan untuk kembali digunakan perintah IRET
STC (Set Carry Flag)
CLC (Clear Carry Flag)
CMC (Complement Carry Flag)
STD (Set Direction Flag)
CLD (Clear Direction Flag)
STI (Set Interrupt Flag)
CLI (Clear Interrupt Flag)
HALT berhenti
Instruksi Kontrol (Cont…5)
STOS Tujuan <menyimpan data dari AL/AX
ke memori>
STOSB
STOSW
STOSW
DS:[DI+1:DI]
AX
REP
<Instruksi Pengulangan>
REP MOVS
ulangi instruksi ini
sampai register CX bernilai 0
REP STOSB
STOSB : CX
CX-1
Instruksi String
String adalah rangkaian data pada memori baik dalam byte atau word
MOVS Tujuan, Sumber <memindahkan blok memori> Tujuan dan sumber berupa label
MOVSB <Byte> ES:DI Tujuan MOVSW <Word> DS:SI Sumber MOVSB ES:[DI] DS:[SI]
Jika DF = 0 maka DI DI+1 SI SI+1 DF = 1 maka DI DI-1
SI SI-1
CMPS Tujuan, Sumber <membandingkan blok memori>