LOGO
Oleh. Junartho Halomoan ([email protected])
Mikroprosesor dan Antarmuka
Instruksi Mikroprosesor
Mode Pengalamatan-Jenis[1]
Addressing Mode / Mode Penglamatan : adalah
cara, bagaimana 8088 dapat mengakses
operand
Mode Pengalamatan pada 80x86:
– (1) register
– (2) immediate
– (3) direct
– (4) register indirect/ register tidak langsung – (5) based relative/ relatif berbasis
– (6) indexed relative/ relatif berindex
– (7) based indexed relative/ relatif berbasis dan index
JUN
2
Mode Pengalamatan - Reg [2]
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-Imm[3]
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
JUN
Ditandai dengan [ ]
Mode Pengalamatan-Direct[4]
Operand dari instruksi ini merupakan alamat memori data yang akan diakses
Alamat ini merupakan EA (Effective Address) Contoh:
MOV DL, [2400] ;copy isi memori dengan alamat DS:2400H ke DL
Mode Pengalamatan-Direct[5]
JUN
4 Ditandai
dengan [ ]
Mode Pengalamatan-Indirect[6]
Alamat lokasi memori data yang akan diakses tersimpan dalam register
Register yang digunakan pada mode ini : SI, DI, dan BX Contoh:
MOV AL,[BX]
PA (Physical Address) dan EA (Effective Address) ???
Mode Pengalamatan-Indirect[7]
JUN
Mode Pengalamatan–Based.Re[8]
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
Salinkan isi DS:BX+10 dan DS:BX+10+1 ke reg. CX (little endian convt.);
PA = ?
Mode Pengalamatan–Index.Re[7]
Sama seperti based relative addressing mode, register yang digunakan adalah DI dan SI
Contoh:
MOV DX, [SI]+5 ;
MOV CL, [DI]+20 ;
JUN
6
Mode Pengalamatan–Base.Indx[8]
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
Mode Pengalamatan–Base.Indx[9]
JUN
- ITTELKOM
Jenis Instruksi.CLK - MOV [1]
MOV Clock Acc mem 10 Mem acc 10 R R 2 Mem R 12 + EA R mem 13 + 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 + EAJenis Instruksi. CLK-Aritmatika[2]
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
JUN
8
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
Jenis Instruksi.CLK-Kend.Prog[3]
Jenis Instruksi.CLK- lainnya [4]
Instruksi Clock Instruksi Clock INC/DEC reg8 3 MOV seg,reg 2 INC/DEC data 23+EA MOV reg,reg 2 INC/DEC reg16 3 MOV mem,reg 13+EA LOGIC reg,reg 3 MOV reg,mem 12+EA LOGIC mem,reg 24+EA MOV mem,imm 14+EA LOGIC reg,mem 13+EA MOV reg,imm 4 LOGIC reg,imm 4 MOV mem,acc 14 LOGIC mem,imm 23/25+E
A MOV acc,mem 14
LOGIC acc,imm 4 MOV seg,mem 12+EA MOV reg,seg 2 MOV mem,seg 13+EA
JUN
Jenis Instruksi.CLK-Eff.Addr[5]
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
Catatan: EA = Effective address
Jenis Instruksi.CLK-contoh [6]
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 16 (branch) CS:0108 B3 12 MOV BL,12 - (skiped) CS:010A 8A 0E 34 12 MOV CL,[1234] 12 + 6(EA) CS:010E 88 16 34 12 MOV [1234],DL 13+ 6(EA)
Total 61
JUN
10
Terdiri dari
MOV AX,BX 89 (opcode) D8 (operand)
Format bhs mesin 8088[1]
bahasa mesin op-code 8 bit operand (data,register,dll) + mnemonicFormat bhs mesin 8088[2]
Sesungguhnya bhs mesin diciptakan untuk
kemudahan programmer (manusia)
Control Unit di CPU hanya mengerti pola bit
perintah
MOV AX,BX
8B C3 (versi EMU
8086/ MASM), 89 D8 (versi debug)
MOV AL,[2400]
A0
00 24
ADD AX,BX
01 D8
JUN
Format bhs mesin 8088-MOV[3]
1 0 0 0 1 0 D W
(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)
op code mod reg R/M low displacement high displacement or
direct address
low byte direct addresshigh byte byte 1 byte 2 byte 3 byte 4
Format bhs mesin 8088[4]
code 10 code 01 11 00 SS Seg. Reg. CS DS ES 101 110 W=0 W=1 001 010 100 111 BP SI Register 000 011 SP DI AX BX CX DX AH BH CH DH AL BL CL DL Pola RegisterJUN
- ITTELKOM
12
Format bhs mesin 8088[5]
d8 : 8 - bit displacement, d16 : 16 - bit displacement
[BX] + [DI] [BX] + [DI] + d8 [BX] + [DI] + d16
00 01
MOD R/M
[BX] + [SI] [BX] + [SI] + d8 [BX] + [SI] + d16 000
10
[BP] + [SI] [BP] + [SI] + d8 [BP] + [SI] + d16 [BP] + [DI] [BP] + [DI] + d8 [BP] + [DI] + d16
[BP] + d16 [BX] [BX] + d8 [BX] + d16 [SI] [SI] + d8 [SI] + d16 [DI] [DI] + d8 [DI] + d16
DH 101 110 111 001 010 011 100 d16 direct address [BP] + d8 SI DI W=0 W=1 AL CL DL BL AH CH 11
MEMORY MODE REGISTER MODE BH AX CX DX BX SP BP
Pola MOD dan R/M
Format bhs mesin 8088-contoh[6]
Contoh: coding MOV AL,BL
JUN
Format bhs mesin 8088[7]
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 (?)
ES CS SS DS 4 3 2 1 CONTROL SYSTEM AH AL BH BL CH CL DH DL SP BP SI DI OPERAND FLAGS C-BUS IP ALU INSTRUCTION STREAM BYTE QUEUE A- BUS BIU EU 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 (?)
Format bhs mesin 8088[8]
JUN
- ITTELKOM
14
Format bhs mesin 8088[9]
1 0 1 1 w
0 0 1 1 1 0 1 0 0 0 1 0 D W Immediate Addressing Mode
reg data - low byte data - high byte (w=1)
byte 1 byte 2 byte 3
reg
Segment ovveride prefix
byte 1 byte 2 op code mod reg R/M
Kode Operasi Immediate A.M. dan Segment Override
Format bhs mesin 8088[10]
1 0 1 0 0 0 d wbyte 1 Low byte addressbyte 2 High byte addressbyte 3
Op. Code Acc. ke/dari memori
JUN
Format bhs mesin 8088-Lat[11]
Segment overides[1]
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]
JUN
16 SS ES DS CS Segment Register SP,BP SI, DI, BX SI, DI, BX IP Offset Register
Segment overides[2]
Offset Register untuk berbagai Segment
Segment overides-contoh[3]
Instruksi Segmen yg
digunakan Segmenseharusnya 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
JUN
Latihan Soal [1]
If DS=7FA2H and the offset is 438EH, determine: a) The physical address
b) The lower range of the data segment c) The upper range of the data segment d) Show the logical address
a) The Physical address is; 7FA20+438E= 83DAE b) The lower range: 7FA20(7FA20+0000)
c) The upper range: 8FA1F(7FA20+FFFF) d) The logical address is; 7FA2:438E
Latihan Soal [2]
Ex: SP=1236, AX=24B6, DI=85C2, and DX=5F93, show the contents of the stack as each nstruction is executed.PUSH AX, PUSH DI, PUSH DX
SP? SS:SP??
JUN
18
Latihan Soal [3]
Ex: assume that the stack is shown below, and SP=18FA, show the contents of the stack and registers as each of the following instructions is executed.POP CX,POP DX,POP BX
SP? SS:SP??
Latihan Soal [4]
Ex: Show how the flag register is affected by the addition of 38H and 2FH. CF,PF,AF,ZF,SF?
MOV BH,38H ; ADD BH,2FH ;
CF = 0 since there is no carry beyond d7
PF = 0 since there is odd number of 1`s in the result
AF = 1 since there is a carry from d3 to d4 ZF = 0 since the result is not zero
SF = 0 since d7 of the result is zero
JUN
Latihan Soal [5]
MOV AX,34F5H SUB AX,95EBH CF,PF,AF,ZF,SF?
CF = 1 since there is carry beyond d15
PF = 0 since there is odd number of 1s in the lower byte
AF = 1 since there is a carry from d3 to d4 ZF = 0 since the result is not zero
SF = 1 since d15 of the result is 1
Thank You!
Please study this subject at home