Fig.2-1 Two-Component Pointer

Figure 2-1. Two-Component Pointer . . | | |---------------|-+ 32 0 | | | +-------+-------+ +---+ |---------------| | | OFFSET |---| + |--->| OPERAND | | +-------+-------+ +---+ |---------------| |- SELECTED SEGMENT ^ | | | 16 0 | | | | +-------+ | | | | |SEGMENT|---------o----->|---------------|-+ +-------+ | | | | | | . .

Fig.2-2 Fundamental Data Types

Figure 2-2. Fundamental Data Types 7 0 +---------------+ | BYTE | BYTE +---------------+ 15 7 0 +-------------------------------+ | HIGH BYTE | LOW BYTE | WORD +-------------------------------+ address n+1 address n 31 23 15 7 0 +---------------+---------------+---------------+--------------+ | HIGH WORD | LOW WORD | DOUBLEWORD +---------------+---------------+---------------+--------------+ address n+3 address n+2 address n+1 address n

Fig.2-3 Bytes, Words, and Doublewords in Memory

Figure 2-3. Bytes, Words, and Doublewords in Memory MEMORY BYTE VALUES All values in hexadecimal ADDRESS +----------+ E| | |----------|--+ D| 7A | |- DOUBLE WORD AT ADDRESS A |----------|-+| CONTAINS 7AFE0636 C| FE | || |----------| |- WORD AT ADDRESS B B| 06 | || CONTAINS FE06 |----------|-+| A| 36 | | |----------|--| 9| 1F | |- WORD AT ADDRESS 9 |----------|--+ CONTAINS IF 8| | |----------|--+ 7| 23 | | |----------| |- WORD AT ADDRESS 6 6| OB | | CONTAINS 23OB |----------|--+ 5| | |----------| 4| | |----------|--+ 3| 74 | | |----------|-+|- WORD AT ADDRESS 2 2| CB | || CONTAINS 74CB |----------|--+ 1| 31 | |-- WORD AT ADDRESS 1 |----------|-+ CONTAINS CB31 0| | +----------+

Fig.2-4 80386 Data Types

Figure 2-4. 80386 Data Types +1 0 7 0 7 0 15 14 8 7 0 BYTE +-------+ BYTE +-------+ WORD +---------------+ INTEGER || | | ORDINAL | | | INTEGER || | | | | +-------+ +-------+ +---------------+ SIGN BIT++------+ +-------+ SIGN BIT++MSB | MAGNITUDE MAGNITUDE +---------------+ MAGNITUDE +1 0 +3 +2 +1 0 15 0 31 16 15 0 WORD +---------------+ DOUBLEWORD +-------------------------------+ ORDINAL || | | | | INTEGER || | | | | | | | | +---------------+ +-------------------------------+ | | SIGN BIT++MSB | +---------------+ +-------------------------------+ MAGNITUDE MAGNITUDE +3 +2 +1 0 31 0 DOUBLEWORD +-------------------------------+ ORDINAL | | | | | | | | | +-------------------------------+ +-------------------------------+ MAGNITUDE +N +1 0 7 0 7 0 7 0 BINARY CODED +-------+ +---------------+ DECIMAL (BCD) | | | ... | | | | | +-------+ +---------------+ BCD BCD BCD DIGIT N DIGIT 1 DIGIT 0 +N +1 0 7 0 7 0 7 0 PACKED +-------+ +---------------+ BCD | | | ... | | | | | +-------+ +---------------+ +---+ +---+ MOST LEAST SIGNIFICANT SIGNIFICANT DIGIT DIGIT +N +1 0 7 0 7 0 7 0 BYTE +-------+ +---------------+ STRING | | | ... | | | | | +-------+ +---------------+ -2 GIGABYTES +2 GIGABYTES 210 BIT +------------------------- --------------------+ STRING ||||| || ||||| +-------------------------- -------------------+ BIT 0 +3 +2 +1 0 31 0 NEAR 32-BIT +-------------------------------+ POINTER | | | | | | | | | +-------------------------------+ +-------------------------------+ OFFSET +5 +4 +3 +2 +1 0 48 0 FAR 48-BIT +-----------------------------------------------+ POINTER | | | | | | | | | | | | | +-----------------------------------------------+ +-----------------------------------------------+ SELECTOR OFFSET +5 +4 +3 +2 +1 0 32-BIT +-----------------------------------------------+ BIT FIELD | | | | | | | | | | | | | +-----------------------------------------------+ |<--------- BIT FIELD --------->| 1 TO 32 BITS

Fig.2-5 80386 Applications Register Set

Figure 2-5. 80386 Applications Register Set GENERAL REGISTERS 31 23 15 7 0 +-----------------+-----------------+-----------------------------------+ | EAX AH AX AL | |-----------------+-----------------+-----------------------------------| | EDX DH DX DL | |-----------------+-----------------+-----------------------------------| | ECX CH CX CL | |-----------------+-----------------+-----------------------------------| | EBX BH BX BL | |-----------------+-----------------+-----------------------------------| | EBP BP | |-----------------+-----------------+-----------------+-----------------| | ESI SI | |-----------------+-----------------+-----------------+-----------------| | EDI DI | |-----------------+-----------------+-----------------+-----------------| | ESP SP | +-----------------+-----------------+-----------------+-----------------+ 15 7 0 +-----------------+-----------------+ | CS (CODE SEGMENT) | |-----------------+-----------------| | SS (STACK SEGMENT) | SEGMENT |-----------------+-----------------| REGISTERS | DS (DATA SEGMENT) | |-----------------+-----------------| | ES (DATA SEGMENT) | |-----------------+-----------------| | FS (DATA SEGMENT) | |-----------------+-----------------| | GS (DATA SEGMENT) | +-----------------+-----------------+ STATUS AND INSTRUCTION REGISTERS 31 23 15 7 0 +-----------------+-----------------+-----------------+-----------------+ | EFLAGS | |-----------------------------------------------------------------------| | EIP (INSTRUCTION POINTER) | +-----------------+-----------------+-----------------+-----------------+

Fig.2-6 Use of Memory Segmentation

Figure 2-6. Use of Memory Segmentation +----------------+ +----------------+ | MODULE | | MODULE | | A |<--+ +-->| A | | CODE | | | | DATA | +----------------+ | +------------------+ | +----------------+ +--| CS (CODE) | | |------------------| | +----------------+ +--| SS (STACK) | | +----------------+ | | | |------------------| | | DATA | | STACK |<--+ | DS (DATA) |--++->| STRUCTURE | | | |------------------| | | 1 | +----------------+ | ES (DATA) |---+ +----------------+ |------------------| +--| FS (DATA) | +----------------+ | |------------------| +----------------+ | DATA | | | GS (DATA) |--+ | DATA | | STRUCTURE |<--+ +------------------+ +-->| STRUCTURE | | 2 | | 3 | +----------------+ +----------------+

Fig.2-7 80386 Stack

Figure 2-7. 80386 Stack 31 0 +------+------+------+------+ <-------BOTTOM OF STACK | | (INITIAL ESP VALUE) |------+------+------+------| | | |------+------+------+------| ^ | | |POP |------+------+------+------| | | | | |------+------+------+------| | TOP OF +-------------+ | | <------+-----------------| ESP | |------+------+------+------| | STACK +-------------+ | | | | | | | | |PUSH | | v

Fig.2-8 EFLAGS Register

Figure 2-8. EFLAGS Register 16-BIT FLAGS REGISTER A +--------------------------------+ 31 23 17 15 13 9 8 7 6 5 4 3 2 1 0 ++---------------+---------------+----------------+--------------+ | |V|R| |N|I/O |O|D|I|T|S|Z| |A| |P| |C| |0 0 0 0 0 0 0 0 0 0 0 0 0 0| | |0| | | | | | | | |0| |0| |1| | | |M|F| |T| PL |F|F|F|F|F|F| |F| |F| |F| +----------------------------------------------------------------+ | | | | | | | | | | | | | VIRTUAL 8086 MODE---X--------+ | | | | | | | | | | | | RESUME FLAG---X----------+ | | | | | | | | | | | NESTED TASK FLAG---X--------------+ | | | | | | | | | | I/O PRIVILEGE LEVEL---X-----------------+ | | | | | | | | | OVERFLOW---S---------------------+ | | | | | | | | DIRECTION FLAG---C-----------------------+ | | | | | | | INTERRUPT ENABLE---X-------------------------+ | | | | | | TRAP FLAG---S---------------------------+ | | | | | SIGN FLAG---S-----------------------------+ | | | | ZERO FLAG---S-------------------------------+ | | | AUXILIARY CARRY---S-----------------------------------+ | | PARITY FLAG---S---------------------------------------+ | CARRY FLAG---S-------------------------------------------+ S = STATUS FLAG, C = CONTROL FLAG, X = SYSTEM FLAG NOTE: 0 OR 1 INDICATES INTEL RESERVED. DO NOT DEFINE

Fig.2-9 Instruction Pointer Register

Figure 2-9. Instruction Pointer Register 16-BIT IP REGISTER +-----------------------------------+ 31 23 15 7 0 +-----------------+-----------------+-----------------+-----------------+ | EIP (INSTRUCTION POINTER) | +-----------------+-----------------+-----------------+-----------------+

Fig.2-10 Effective Address Computation

Figure 2-10. Effective Address Computation SEGMENT + BASE + (INDEX * SCALE) + DISPLACEMENT + + | --- | + + + + + + | EAX | | EAX | | 1 | | CS | | ECX | | ECX | | | + + | SS | | EDX | | EDX | | 2 | | NO DISPLACEMENT | -| DS |- + -| EBX |- + -| EBX |- * -| |- + -| 8-BIT DISPLACEMENT |- | ES | | ESP | | --- | | 4 | | 32-BIT DISPLACEMENT | | FS | | EBP | | EBP | | | + + | GS | | ESI | | ESI | | 6 | + + | EDI | | EDI | + + + + + +