Central Processing Unit (CPU)
Arsitektur & Instruksi
Mikroprosesor Hasan Mayditia, S.SiKomputer 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).
Unit Memori RAM ROM Clocks MPU
Input Interface Output Interface Central Processing Unit (CPU)
CPU terdiri dari ALU dan Unit kontrol. Hal ini sering dilakukan untuk membedakan “otak” sebenarnya dengan unit-unit lainnya dalam komputer. Selain itu CPU juga tersusun atas beberapa set register untuk mengerjakan fungsi khususnya. 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,
seperti RESET dan interrupt
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) BahasaC, Basic, Pascal, dll merupakan
beberapa contoh dari bahasa pemrograman
tingkat tinggi , karena dalam penggunaannya
tidak perlu mengetahui detail internal arsitektur CPU 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 ,
56FC H
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
Letak Operand : Memori, register, dan peralatan I/O
P (contin….1) Jenis Operasi yang dilakukan :
Data Processing / Pengolahan Data (ALU atau Arithmetic Logic Unit)
Data Movement / Perpindahan Data
Control / Kontrol (Instruksi Pemeriksaan dan perekayasaan)
P (contin….2) Data Processing Kontrol
Set Instruksi :
- Transfer Data (Data Movement)
- Logika
- Aritmatika
- Kontrol
- String
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,DX digunakan untuk pusat data pada operasi I/O
Register (Con….1)
a) Fungsi khusus:
AX : Akumulator Perkalian, pembagian, … 16
bit. Dibagi menjadi AH dan AL yang masing-
masing 8 bitBX : 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 (
Register (Con….3)
CS : Segmen Instruksi
- DS : Segmen Data
- SS : Segmen Stack (Penumpukan)
- ES : Segmen Data Ekstra
- e) Register IP :
Digunakan untuk menunjukkan alamat perintah
yang sedang dieksekusi
Register
Extra Segment (Reg Segmen) ES
16 Stack Segment (Reg Segmen) SS
16 Data Segment (Reg Segmen) DS
16 Code Segment (Reg Segmen) CS
16 Destination Index DI
16 Source Index SI
16 Base Pointer BP
16 Stack Pointer SP
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 AX
16
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 Langsung (Data di
memori dan ditunjuk langsung alamatnya) Mode Pengalamatan (Cont…)
(Data di memori
# Mode Pengalamatan tak Langsung
dan ditunjuk alamatnya dengan isi register) Contoh : mov ah,[SI]
(Data di memori dan
# Mode Pengalamatan Berindex
ditunjuk dengan reg index + bilangan) Contoh : mov AX,[SI+6]
(Data di memori dan
# Mode Pengalamatan Berbasis
ditunjuk dengan reg BP / BX + bilangan) Contoh : mov AX,[BP+2]
# Mode Pengalamatan String
Contoh : movsb [ES:DI] [DS:SI]
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
Out Port Akumulator <Output>
Contoh : Out 10H,AL
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
<Sama dengan operasi AND tapi hasil operasi tidak disimpan. Hanya untuk mengubah status bendera>
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)
3
XX Before
1 X
2 X
3
X4 X
5 X
6 X
7 X
7 X
X
1 X
2 X
4 X
CF
5 X
6 X
7 X
X
1 X
2 X
3 X
4
X5 X
6 X
7 X
X
After SHL After SAL 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 ROL [0100],CL
Instruksi Logika (Cont…4)
2 X
X
1 X
2 X
3
X4 X
5 X
6 X
7 X
7 X
X
F
1 X C
3
XCF
4 X
5 X
6 X
7 X
X
1 X
2 X
3 X
4
X5 X
6 X
7 X
X
7 Before After RCL After ROL Instruksi Aritmetika Penjumlahan
ADD Tujuan, Sumber ADD AX,BX ADC Tujuan, Sumber ADC AX,BX
INC Tujuan, Sumber
DAA (Decimal Adjust Addition)
AAA (ASCII Adjust Addition) PenguranganSUB Tujuan, Sumber SUB SI,BX SBB Tujuan, Sumber SUB [SI],CH
DEC Tujuan DEC CL
NEGTujuan NEG AL DAS (Decimal Adjust Subtraction)AAS (ASCII Adjust Subtraction)
Instruksi Aritmetika (Cont…1)
PerkalianMUL Sumber <AX AL x Sumber 8 bit> MUL BX <DX,AX
AX x Sumber 16bit>
IMUL Sumber <Untuk Bilangan bertanda>
Pembagian DIV Sumber
IDIV Sumber Pengaturan
CWB <Convert Byte to Word> (MSB dari AL AH)
CWD <Convert Word to Double Word> (MSB dari AX DX)
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) JNS Operand (Jump Not 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 PUSH Sumber Untuk menyimpan data dari register ke memori stack PUSH AX mengakibatkan (SP-1) AH (SP-2) AL SP SP-2 POP Tujuan Untuk mengambil kembali data yang tersimpan di stack
POP AX hasilnya AL [SP] AH [SP+1] SP SP+2 Instruksi Kontrol (Cont…2)
CALL Operand
Untuk memanggil prosedur (subrutin)
RET
Untuk Mengakhiri Prosedur dan kembali ke rutin pemanggil
CALL NearLabel [SP-1] IP H
[SP-2] IP
L
SP SP-2
IP NearLabel
RET
IP [SP]
L
IP [SP+1]
H
SP SP+2 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 00000 Devide by Zero 1 00004 Single Step 2 00008 NMI “ “ “ “ “ “
255 003FF “ Instruksi Kontrol (Cont…4)
Interupsi Software (Cont…) dan untuk kembali digunakan perintah IRET
CLD (Clear Direction Flag)
HALT berhenti
CLI (Clear Interrupt Flag)
STI (Set Interrupt Flag)
STD (Set Direction Flag)
CMC (Complement Carry Flag)
CLC (Clear Carry Flag)
STC (Set Carry Flag)
NOP (No Operation)
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 ulangi sampai CX = 0Instruksi 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> Load Sumber <mengambil data dari memori ke register
AL/AX>