EE-2623 Mikroprosesor & Antarmuka Materi 3 Instruksi Team Dosen 2006
JENIS INSTRUKSI
Perpindahan Data MOV
Clock
Acc mem
10
Mem acc
10
RR
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
RR
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