Mikroprocessor & Antarmuka (SK2023)

Download Report

Transcript Mikroprocessor & Antarmuka (SK2023)

EE-2623
Mikroprosesor & Antarmuka
Materi 3
Instruksi
Team Dosen
2006
JENIS INSTRUKSI
Perpindahan Data
MOV
Clock
Acc  mem
10
Mem  acc
10
RR
2
Mem  R
8 + EA
R  mem
9 + EA
Immed  R
4
Immed  mem
10 + EA
R  seg R
2
Mem  seg R
8 + EA
Seg R  R
2
Seg R  mem
9 + EA
Aritmetik
ADD/SUB
Clock
DIV
Clock
RR
3
8 bit reg
80 sd 90
Mem  R
9 + EA
16 bit reg
144 sd 162
R  mem
16 + EA
8 bit mem
(86 sd 96)+EA
Immed  R
4
16 bit mem
(150 sd 168)+EA
Immed  mem
17 + EA
MUL
Clock
Shift & Rotate
Clock
8 bit reg
70 sd 77
Single bit reg
2
16 bit reg
118 sd 133
Var bit reg
8 + 4/bit
8 bit mem
(76 sd 83)+EA
Single bit mem
15 + EA
16 bit mem
(124 sd 139)+EA
Var bit mem
20+EA+4/bit
Kendali Program
JMP
Clock
Clock
short
15
JCXZ
6 (no branch)
18 (branch)
Intrasegment direct
15
J condition
4 (no branch)
16 (branch)
Intersegment direct
15
Intrasegment using reg
mode
11
Intrasegment indirect
18 + EA
Intersegment indirect
24 + EA
Instruksi
Clock
Instruksi
Clock
INC/DEC reg8
3
MOV reg,reg
2
INC/DEC data
23+EA
MOV mem,reg
13+EA
INC/DEC reg16
3
MOV reg,mem
12+EA
LOGIC reg,reg
3
MOV mem,imm
14+EA
LOGIC mem,reg 24+EA
MOV reg,imm
4
LOGIC reg,mem 13+EA
MOV mem,acc
14
MOV seg,reg
2
MOV acc,mem
14
MOV reg,seg
2
MOV seg,mem
12+EA
MOV mme,seg
13+EA
Effective Address
Addressing Mode
Clock
Direct
6
Register indirect
5
Register relative
9
Based indexed
(BP)+(DI) or (BX)+(SI)
7
(BP)+(SI) or (BX)+(DI)
8
Based indexed relative
(BP)+(DI)+disp or (BX)+(SI)+disp
11
(BP)+(SI)+disp or (BX)+(DI)+disp
12
Contoh soal:
Address
Mnemonic
Assembly
Clock
CS:0100
B8 34 12
MOV AX,1234
4
CS:0103
35 34 12
XOR AX,1234
4
CS:0106
74 02
JZ 010A
CS:0108
B3 12
MOV BL,12
- (skiped)
CS:010A
8A 0E 34 12
MOV CL,[1234]
8 + 6(EA)
CS:010E
88 16 34 12
MOV [1234],DL
9 + 6(EA)
16 (branch)
Total
53
Format instruksi bhs mesin 8088
 Terdiri dari
 Op-code 8 bit
+
 Operand (data,register,dll)
 MOV AX,BX  89 (opcode) D8 (operand)
Coding
 Sesungguhnya bhs mesin diciptakan untuk kemudahan




programmer (manusia)
Control Unit di CPU hanya mengerti pola bit perintah
MOV AX,BX
 89 D8
MOV AL,[2400]
 A0 00 24
ADD AX,BX
 01 D8
Kode untuk perintah MOV
byte 1
1 0 0 0 1 0
op code
D W mod
byte 2
reg
R/M
byte 3
byte 4
low displacement
high displacement
or
direct address
low byte
direct address
high byte
(5 bit) mode pengalamatan
Pemilihan register
Data byte/word ; 0=byte, 1=word
Arah transfer data, dari/ke register ; 0=dari, 1=ke
kode operasi (operation code)
Contoh coding MOV AL,BL
Kode Operasi Register 8088/86
Register
W=0
W=1
AL
AX
BL
BX
CL
CX
DL
DX
AH
SP
BH
DI
CH
BP
DH
SI
code
000
011
001
010
100
111
101
110
Seg. Reg.
CS
DS
ES
SS
code
01
11
00
10
Pola MOD dan R/M
MOD
R/M
000
001
010
011
100
101
110
111
00
01
10
[BX] + [SI]
[BX] + [DI]
[BP] + [SI]
[BP] + [DI]
[SI]
[DI]
d16
direct address
[BX]
[BX] + [SI] + d8
[BX] + [DI] + d8
[BP] + [SI] + d8
[BP] + [DI] + d8
[SI] + d8
[DI] + d8
11
[BX] + [SI] + d16
[BX] + [DI] + d16
[BP] + [SI] + d16
[BP] + [DI] + d16
[SI] + d16
[DI] + d16
W=0
AL
CL
DL
BL
AH
CH
W=1
AX
CX
DX
BX
SP
BP
[BP] + d8
[BP] + d16
DH
SI
[BX] + d8
[BX] + d16
BH
DI
MEMORY MODE
d8 : 8 - bit displacement, d16 : 16 - bit displacement
REGISTER MODE
Contoh u/ berbagai Ad. Mode
 mov SP,BX; register A. M.
 mov CX,[4372H]; direct A.M.
 mov CL,[BX]; register indirect A.M.
 mov [SI + 43H],DH; indexed relative
A.M.
 mov AL,9CH; immediate A.M. (?)
 mov CS:[BX],DL; segment ovverides (?)
Kode Operasi Immediate A.M. dan
Segment Override
byte 1
1 0 1 1 w
reg
byte 2
data - low byte
byte 3
data - high byte (w=1)
Immediate Addressing Mode
0 0 1 reg 1 1 0
Segment ovveride prefix
byte 1
1 0 0 0 1 0
op code
D W mod
byte 2
reg
R/M
Op. Code Acc. ke/dari memori
byte 1
1 0 1 0 0 0 d w
byte 2
Low byte address
byte 3
High byte address
Latihan
Mode Pengalamatan
Mode Pengalamatan 80x86
• Addressing Mode / Mode Penglamatan : adalah
cara, bagaimana mp dapat mengakses operand
• Mode Pengalamatan pada 80x86:
–
–
–
–
–
–
–
(1) register
(2) immediate
(3) direct
(4) register indirect
(5) based relative
(6) indexed relative
(7) based indexed relative
Mode Pengalamatan Register
• Menggunakan register untuk menyimpan data yang akan
dimanipulasi
• Pada mode ini tidak operasi pada memori
• Operasi relatif cepat
• Contoh:
MOV BX, DX ;copy isi DX ke BX
MOV ES, AX ;copy isi AX ke ES
ADD AL, BH ;jumlahkan isi BH dan AL, hasilnya di AL
• Register sumber dan tujuan mempunyai ukuran yang sama
Mode Pengalamatan Immediate
• Operand (source) adalah konstanta, yang terletak setelah
opcode
• Operasinya sangat cepat
• Immediate addressing mode dapat digunakan pada
semua register, kecuali register segmen dan flag (?)
• Contoh:
– MOV AX,2550H ; bilangan 2550H dimasukkan ke AX
– MOV CX,625
; bilangan 625d dimasukkan ke CX
– MOV BL, 40H
; bilangan 40H dimasukkan ke BL
Mode Pengalamatan
Langsung (Direct)
• Operand dari instruksi ini merupakan alamat
memori data yang akan diakses
• Alamat ini merupakan EA (Effective Address)
Ditandai
• Contoh :
dengan [ ]
– MOV DL, [2400]
;copy isi memori dengan alamat DS:2400H ke DL
Mode Pengalamatan Register Tidak
Langsung (indirect)
• Alamat lokasi memori data yang akan diakses tersimpan
dalam register
• Register yang digunakan pada mode ini : SI, DI, dan BX
Ditandai
• contoh
dengan [ ]
– MOV AL,[BX]
• PA (Physical Address) dan EA (Effective Address) ?
Mode Pengalamatan Relatif Base
(Base Relative)
• Menggunakan register BX and BP, untuk mendapatkan EA (effective
address), ditambah dengan displacement
• Segment yang digunakan untuk mendapatkan physical address (PA)
adalah:
– DS untuk BX
– SS untuk BP
• Contoh :
• MOV CX,[BX]+10
– Pindahkan isi DS:BX+10 dan DS:BX+10+1 ke reg. CX ;
– PA = ?
Mode Pengalamatan Relatif
Berindeks (Indexed relative)
• Sama seperti based relative addressing mode,
register yang digunakan adalah DI dan SI
• Contoh:
1. MOV DX, [SI]+5 ;
2. MOV CL, [DI]+20 ;
Mode Pengalamatan Indeks
Berbasis (Based indexed)
• kombinasi based dan indexed addressing modes
• Menggunakan satu base reg. dan satu index reg.
• Contoh:
 MOV CL, [BX][DI] + 8
 MOV CH, [BX][SI]+20
 MOV AH,[BP][DI]+12
 MOV AH,[BP][SI]+29
Offset Register untuk berbagai Segment
Segment Register
CS
DS
ES
SS
Offset Register
IP
SI, DI, BX
SI, DI, BX
SP,BP
Segmen Override
• CPU 80x86 memungkinkan program untuk
mengganti register segmen yang
seharusnya dengan register segmen yang
lain.
• Contoh : MOV AL,[BX] ; penunjuk alamat
fisik adalah DS:BX
• Bandingkan dengan : MOV AL,ES:[BX].
Contoh segment overrides
Instruksi
Segmen yg
digunakan
Segmen
seharusnya
MOV AX,CS:[BP]
CS:BP
SS:BP
MOV DX,SS:[SI]
SS:SI
DS:SI
MOV AX,DS:[BP]
DS:BP
SS:BP
MOV CS,ES:[BX]+12
ES:BX+12
DS:BX+12
MOV SS:[BX][DI]+32,AX SS:BX+DI+32
DS:BX+DI+32
 mov SP,BX; register A. M.
 mov CX,[4372H]; direct A.M.
BIU
 mov CL,[BX]; register indirect
C-BUS
A.M.
 mov [SI + 43H],DH; indexed
ES
CS
SS
DS
IP
relative A.M.
 mov AL,9CH; immediate A.M. (?)
4
3
2
1
INSTRUCTION
STREAM
BYTE
QUEUE
CONTROL
SYSTEM
A- BUS
EU
 mov CS:[BX],DL; segment
ovverides (?)
AH
BH
CH
DH
AL
BL
CL
DL
SP
BP
SI
DI
ALU
OPERAND
FLAGS