140 likes | 324 Views
Lect 3: Instruction Set and Addressing Modes. 386 Instruction Set (3.4). Basic Instruction Set : 8086/8088 instruction set Extended Instruction Set : 80286; several new instructions and additional addressing modes 80386 specific instruction set:. 80386. 80286. 8086/8088. Protected Mode.
E N D
386 Instruction Set (3.4) • Basic Instruction Set : 8086/8088 instruction set • Extended Instruction Set : 80286; several new instructions and additional addressing modes • 80386 specific instruction set: 80386 80286 8086/8088 Protected Mode System control Instruction set System control Instruction set Basic + Extended+ 80386 specific Instruction Set Basic + Extended Instruction Set Basic Instruction Set Real Mode
386 Instruction Set (3.4) • Addressing Modes of 386DX (3.5) • Addressing Modes: a method of specifying an operand • Operands : in REG, Memory, I/O ports, and within Instruction • * Control Transfer : direct, indirect addressing • the modes available register addressing : REG immediate addressing: within Instruction direct addressing register indirect addressing based addressing indexed addressing based indexed addressing MEM or I/O
Addressing Modes • Register Operand Addressing Mode • can be accessed in byte, word, or double word sizes. • MOV AX, BX • Byte: AL, AH, BL, BH, CL, CH, DL, DH Word: AX, BX, CX, DX, SP, BP, SI, DI, CS, DS, SS, ES, FS, GS Double Word: EAX, EBX, ECX, EDX, ESP, EBP, ESI, EDI • See Fig 3.8 in page 64 • Immediate Operand Addressing • an operand is part of the instruction • MOV AL, 15H • 8 bits, 16 bits, and 32 bits in length • See Fig 3.10 in page 67
Address Memory Content Instruction 80386 MPU IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI Register Addressing 0000 01000 8B MOV AX, BX 01001 C3 01002 XX 0100 XXXX ABCD ABCD
Address Memory Content Instruction 80386 MPU IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI Immediate Addressing 0000 01000 B0 MOV AL, 15H 01001 15 01002 XX 0100 15 XX
Direct Addressing • 16-bit Memory Operand Addressing Modes • 16-bit addressing modes and 32-bit addressing modes • Physical address = Segment Base: EA(effective address) • Segment Base Address(SBA) : the starting location of the segment • EA : the offset of the operand from the beginning of the segment of memory EA = Base + Index + Displacement Base = BX or BP, Index = SI or DI, displacement = 8-bit or 16-bit
01000 01001 01002 01003 01004 IP CS DS 8B 0E 34 12 XX SS ES FS GS 0000 0100 AX 0200 BX CX DX SP BP SI XXXX DI 03234 ED 03235 BE BEED 16-bit Memory Operand Addressing • Direct Addressing Mode • PA = Segment Base : Direct Address • MOV CX, [1234H] MOV CX, [1234H]
01000 01001 01002 01003 01004 IP CS DS 8B 04 XX XX XX SS ES FS GS 0000 0100 AX 0200 BX CX DX SP BP XXXX SI DI 03234 ED 03235 BE BEED 1234 16-bit Memory Operand Addressing • Register Indirect Addressing Mode • PA = Segment Base : Indirect Address {BX,BP,SI,DI} • example : MOV AX, [SI] MOV AX,[SI]
01000 01001 01002 01003 01004 IP CS DS SS ES FS GS 88 07 34 12 XX 0000 Element n-1 Displacement AX 0100 BX 0200 Data Structure CX + DX Element 1 SP BaseRegister BP Element 0 SI ED DI 1000 04234 04235 1234 16-bit Memory Operand Addressing • Based Addressing Mode • PA = Segment Base : {BX or BP} + {8-bit or 16-bit displacement} • Base register : the beginning of a data structure (See Fig 3.16 (b) in page 74 • Example: MOV [BX]+1234H, AL MOV [BX]+1234H, AL
01000 01001 01002 01003 01004 IP CS DS SS ES FS GS AX BX CX DX SP BP SI DI 16-bit Memory Operand Addressing • Indexed Addressing Mode • PA = Segment Base : {SI, DI}+{8-bit or 16-bit displacement} • Displacement : the starting address of an array; Index: selects the specific element in the array • Example: MOV AL, [SI]+2000H 8A 44 34 12 XX MOV AL, [SI]+1234H 0000 0100 0200 Element n-1 IndexRegister XX 1000 Array of data + BE 05234 05235 Element 1 Displacement Element 0 2000
16-bit Memory Operand Addressing • Based-Indexed Addressing Mode • PA= Seg Base: {BX, BP}+{SI,DI}+{8-bit or 16-bit displacement} • to access complex data structures • See fig 3.20 in page 80 • Example: MOV AH, [BX][SI]+1234H opcode : 8A 44 34 12
32-bit Memory Operand Addressing Modes • Enhanced in two ways • Scale factor : EA = base + (index x scale factor) + displacement • PA = Segment Base: EA
32-bit Memory Operand Addressing Modes • See fig 3.23 in page 83: change 16-bit displacement to 32-bit displacement • How can we specify the 32-bit extension modes? • Default (D) bit in the code segment descriptor • 2 prefixes to the instruction set Operand size prefix Address size prefix