Byte pertama dari banyak instruksi bahasa mesin yang memperlihatkan posisi bit-D dan bit-W D W
OPCODE
(pemindahan,
penambahan,
Jika D= 1, data mengalir ke register (REG) dari R/M yang berada di byte ke dua dari instruksi. Jika D= 0, data mengalir ke R/M dari register (REG) yang berada di byte ke dua dari instruksi.
ukuran
data
adalah
word
atau
MESIN
YANG
MOD
REG
R/M
Field MOD
Field MOD secara khusus digunakan dalam mode pengalamatan (MOD) untuk instruksi yang dipilih. Field MOD memilih tipe pengalamatan dan apakah displacement hadir dengan tipe yang dipilih. Field MOD pada mode instruksi 16-bit
MOD 00 01 10 11 FUNGSI Tidak ada displacement Displacement extended-sign 8-bit Displacement 16-bit R/M adalah register
Field MOD pada mode instruksi 16-bit, tidak ada prefik override operand ukuran alamat (67H).
Pada mode instruksi 32-bit, dua byte pertama di sebut override prefik. Byte pertama memodifikasi ukuran alamat operand yang digunakan oleh instruksi, dan byte ke dua memodifikasi ukuran register. Bila 80386 hingga Pentium II beroperasi dalam mode instruksi 16-bit (mode real atau protected) dan register 32-bit digunakan, maka di tambahkan register-size prefiks (66H) di depan baris instruksi. Field MOD pada mode instruksi 32-bit
MOD 00 01 10 11 FUNGSI Tidak ada displacement Displacement extended-sign 8-bit Displacement 16-bit R/M adalah register
W=1 (Doubleword) EAX ECX EDX EBX ESP EBP ESI EDI
OPCODE 0 0 1 REG 0
1 1
0 1
D 1 R/M 0
W 1 0
MOD 1 1
Byte 1 Byte 2
Pengalamatan memori R/M Bila field MOD berisi 00,01,atau 10, field R/M akan mempunyai arti yang baru
Kode R/M Mode Pengalamatan 000 DS:[BX+SI] 001 DS:[BX+DI] 010 SS:[BP+SI] 011 SS:[BP+DI] 100 DS:[SI] 101 DS:[DI] 110 SS:[BP]* 111 DS:[BX] *Mode pengalamatan khusus
Contoh : Instruksi 8A15H = 10001010 00010101 dalam bahasa mesin
OPCODE 0 0 REG 1
D 1 R/M 0
W 0
MOD 0 0
Byte 1 Byte 2
OPCODE = 100010 MOV D = 1, Pemindahan ke Register W =0, Byte MOD = 00, Tidak ada displacement REG = 010, DL R/M = 101, DS:[DI] Sehingga instruksi = MOV DL,[DI]
Mode Pengalamatan Khusus Terjadi ketika data memori direferensikan hanya dengan mode displacement dari pengalamatan untuk instruksi 16-bit. Contoh : Instruksi MOV [1000H], DL = memindahkan isi register DL ke lokasi memori segmen 1000H. Ketika instruksi hanya mempunyai satu displacement, field MOD selalu 00 dan field R/M selalu 110. Berdasar tabel -> tak ada displacement dan mode pengalamatan [BP]. Istruksi dengan [BP]harus selalu dengan displacement.. Assembler menjaga ini dengan displacement 8-bit (MOD=01)
MOD 0 0
REG 1
R/M 1
TABEL MODE PENGALAMATAN 32-BIT YANG DIPILIH R/M Kode R/M Mode Pengalamatan 000 DS:[EAX] 001 DS:[ECX] 010 DS:[EDX] 011 DS:[EBX] Memakai byte indeks berskala 100 101 SS:[EBP]* 110 DS:[ESI] 111 DS:[EDI]
ss
Byte s s berskala
indeksIndeks
Base
00 01 10 11
X1 X2 X4 X8