Fig.3-1 PUSH
Figure 3-1. PUSH D O BEFORE PUSH AFTER PUSH I F . 31 0 . . 31 0 . R | | | | E E |-------+-------| |-------+-------| C X | | | | T P |-------+-------| |-------+-------| I A | | | | O N |-------+-------|<--ESP |-------+-------| N S | | | OPERAND | I |-------+-------| |-------+-------|<--ESP | O | | | | | N |-------+-------| |-------+-------| | | | | | v |-------+-------| |-------+-------| | | | | . . . .Fig.3-2 PUSHA
Figure 3-2. PUSHA BEFORE PUSHA AFTER PUSHA . 31 0 . . 31 0 . D O | | | | I F |-------+-------| |-------+-------| R | | | | E E |-------+-------| |-------+-------| C X | | | | T P |-------+-------|<--ESP |-------+-------| I A | | | EAX | O N |-------+-------| |-------+-------| N S | | | ECX | I |-------+-------| |-------+-------| | O | | | EDX | | N |-------+-------| |-------+-------| | | | | EBX | v |-------+-------| |-------+-------| | | | OLD ESP | |-------+-------| |-------+-------| | | | EBP | |-------+-------| |-------+-------| | | | ESI | |-------+-------| |-------+-------| | | | EDI | |-------+-------| |-------+-------|<--ESP | | | | |-------+-------| |-------+-------| | | | | . . . .Fig.3-3 POP
Figure 3-3. POP D O BEFORE POP AFTER POP I F . 31 0 . . 31 0 . R | | | | E E |-------+-------| |-------+-------| C X | | | | T P |-------+-------| |-------+-------| I A | | | | O N |-------+-------| |-------+-------|<--ESP N S | OPERAND | | | I |-------+-------|<--ESP |-------+-------| | O | | | | | N |-------+-------| |-------+-------| | | | | | v |-------+-------| |-------+-------| | | | | . . . .Fig.3-4 POPA
Figure 3-4. POPA BEFORE POPA AFTER POPA . 31 0 . . 31 0 . D O | | | | I F |-------+-------| |-------+-------| R | | | | E E |-------+-------| |-------+-------| C X | | | | T P |-------+-------| |-------+-------|<--ESP I A | EAX | | | O N |-------+-------| |-------+-------| N S | ECX | | | I |-------+-------| |-------+-------| | O | EDX | | | | N |-------+-------| |-------+-------| | | EBX | | | v |-------+-------| |-------+-------| | ESP | | | |-------+-------| |-------+-------| | EPB | | | |-------+-------| |-------+-------| | ESI | | | |-------+-------| |-------+-------| | EDI | | | |-------+-------|<--ESP |-------+-------| | | | | |-------+-------| |-------+-------| | | | | . . . .Fig.3-5 Sign Extension
Figure 3-5. Sign Extension 15 7 0 +----------------+----------------+ BEFORE SIGN EXTENSION--------->|S| N N N N N N N N N N N N N N N | +----------------+----------------+ AFTER SIGN EXTENSION------+ | 31 23 v 15 7 0 +---------------+---------------+---------------+---------------+ |S|S S S S S S S S S S S S S S S S N N N N N N N N N N N N N N N| +---------------+---------------+---------------+---------------+Fig.3-6 SAL and SHL
Figure 3-6. SAL and SHL OF CF OPERAND BEFORE SHL X X 10001000100010001000100010001111 OR SAL AFTER SHL 1 1 <-- 00010001000100010001000100011110 <-- 0 OR SAL BY 1 AFTER SHL X 0 <-- 00100010001000100011110000000000 <-- 0 OR SAL BY 10 SHL (WHICH HAS THE SYNONYM SAL) SHIFTS THE BITS IN THE REGISTER OR MEMORY OPERAND TO THE LEFT BY THE SPECIFIED NUMBER OF BIT POSITIONS. CF RECEIVES THE LAST BIT SHIFTED OUT OF THE LEFT OF THE OPERAND. SHL SHIFTS IN ZEROS TO FILL THE VACATED BIT LOCATIONS. THESE INSTRUCTIONS OPERATE ON BYTE, WORD, AND DOUBLEWORD OPERANDS.Fig.3-7 SHR
Figure 3-7. SHR OPERAND CF BEFORE SHR 10001000100010001000100010001111 X AFTER SHR 0---->01000100010001000100010001000111---->1 BY 1 AFTER SHR 0---->00000000001000100010001000100010---->O BY 10 SHR SHIFTS THE BITS OF THE REGISTER OR MEMORY OPERAND TO THE RIGHT BY THE SPECIFIED NUMBER OF BIT POSITIONS. CF RECEIVES THE LAST BIT SHIFTED OUT OF THE RIGHT OF THE OPERAND. SHR SHIFTS IN ZEROS TO FILL THE VACATED BIT LOCATIONS.Fig.3-8 SAR
Figure 3-8. SAR POSITIVE OPERAND CF BEFORE SAR 01000100010001000100010001000111 X AFTER SAR 0---->00100010001000100010001000100011---->1 BY 1 NEGATIVE OPERAND CF BEFORE SAR 11000100010001000100010001000111 X AFTER SAR 0---->11100010001000100010001000100011---->1 BY 1 SAR PRESERVES THE SIGN OF THE REGISTER OR MEMORY OPERAND AS IT SHIFTS THE OPERAND TO THE RIGHT BY THE SPECIFIED NUMBER OF BIT POSITIONS. CF RECIEVES THE LAST BIT SHIFTED OUT OF THE RIGHT OF THE OPERAND.Fig.3-9 Using SAR to Simulate IDIV
Figure 3-9. Using SAR to Simulate IDIV ; assuming N is in ECX, and the dividend is in EAX ; CLOCKS CMP EAX, 0 ; to set sign flag 2 JGE NoAdjust ; jump if sign is zero 3 or 9 ADD EAX, ECX ; 2 DEC EAX ; EAX := EAX + (N-1) 2 NoAdjust: SAR EAX, CL ; 3 ; TOTAL CLOCKS 12 or 18]Fig.3-10 Shift Left Double
Figure 3-10. Shift Left Double 31 DESTINATION 0 +----+ +--------------------------------------------------+ | CF |<------| MEMORY OF REGISTER |<---+ +----+ +--------------------------------------------------+ | +-----------------------------------------------------------+ | 31 SOURCE 0 | +--------------------------------------------------+ +---| REGISTER | +--------------------------------------------------+Fig.3-11 Shift Right Double
Figure 3-11. Shift Right Double 31 SOURCE 0 +--------------------------------------------------+ | REGISTER |---+ +--------------------------------------------------+ | +----------------------------------------------------------+ | 31 DESTINATION 0 | +--------------------------------------------------+ +----+ +-->| MEMORY OF REGISTER |------->| CF | +--------------------------------------------------+ +----+Fig.3-12 ROL
Figure 3-12. ROL 31 DESTINATION 0 +----+ +--------------------------------------------------+ | CF |<------| MEMORY OF REGISTER |<--+ +----+ | +--------------------------------------------------+ | +---------------------------------------------------------+Fig.3-13 ROR
Figure 3-13. ROR +----------------------------------------------------------+ | 31 DESTINATION 0 | | +--------------------------------------------------+ | +----+ +-->| MEMORY OF REGISTER |------->| CF | +--------------------------------------------------+ +----+Fig.3-14 RCL
Figure 3-14. RCL 31 DESTINATION 0 +----+ +--------------------------------------------------+ +-| CF |<------| MEMORY OF REGISTER |<--+ | +----+ +--------------------------------------------------+ | +---------------------------------------------------------------------+Fig.3-15 RCR
Figure 3-15. RCR +----------------------------------------------------------------------+ | 31 DESTINATION 0 | | +--------------------------------------------------+ +----+ | +-->| MEMORY OF REGISTER |------->| CF |-+ +--------------------------------------------------+ +----+Fig.3-16 Formal Definition of the ENTER Instruction
Figure 3-16. Formal Definition of the ENTER Instruction The formal definition of the ENTER instruction for all cases is given by the following listing. LEVEL denotes the value of the second operand. Push EBP Set a temporary value FRAME_PTR := ESP If LEVEL > 0 then Repeat (LEVEL-1) times: EBP :=EBP - 4 Push the doubleword pointed to by EBP End repeat Push FRAME_PTR End if EBP := FRAME_PTR ESP := ESP - first operand.Fig.3-17 Variable Access in Nested Procedures
Figure 3-17. Variable Access in Nested Procedures +----------------------------------------------------------------+ | MAIN PROCEDURE (LEXICAL LEVEL 1) | | +--------------------------------------------------------+ | | | PROCEDURE A (LEXICAL LEVEL 2) | | | | +--------------------------------------------------+ | | | | | PROCEDURE B (LEXICAL LEVEL 3) | | | | | +--------------------------------------------------+ | | | | | | | | +--------------------------------------------------+ | | | | | PROCEDURE C (LEXICAL LEVEL 3) | | | | | | +--------------------------------------------+ | | | | | | | PROCEDURE D (LEXICAL LEVEL 4) | | | | | | | +--------------------------------------------+ | | | | | | | | | | | +--------------------------------------------------+ | | | | | | | +--------------------------------------------------------+ | | | +----------------------------------------------------------------+Fig.3-18 Stack Frame for MAIN at Level 1
Figure 3-18. Stack Frame for MAIN at Level 1 . 31 0 . D O | | I F +- |-------+-------| R | | OLD ESP | E E DISPLAY -| |-------+-------|<--EBP FOR MAIN C X | | EBPM | EBPM = EBP VALUE T P |- |-------+-------| FOR MAIN I A | | | O N | |-------+-------| N S DYNAMIC -| | | I STORAGE | |-------+-------| | O | | | | N +- |-------+-------|<--ESP | | | v . .Fig.3-19 Stack Frame for Prooedure A
Figure 3-19. Stack Frame for Procedure A . 31 0 . D O | | I F |-------+-------| R | OLD ESP | E E |-------+-------| C X | EBPM | EBPM = EBP VALUE T P |-------+-------| FOR MAIN I A | | O N |-------+-------| N S | | I |-------+-------| | O | | | N +- |-------+-------| | | | EBPM | v | |-------+-------|<--EBP FOR A DISPLAY -| | EBPM | | |-------+-------| | | EBPA | EBPA = EBP VALUE |- |-------+-------| FOR PROCEDURE A | | | | |-------+-------| DYNAMIC -| | | STORAGE | |-------+-------| | | | +- |-------+-------|<--ESP | | . .Fig.3-20 Stack Frame for Procedure B at Level 3 Called from A
Figure 3-20. Stack Frame for Procedure B at Level 3 Called from A . 31 0 . D O | | I F |-------+-------| R | OLD ESP | E E |-------+-------| C X | EBPM | EBPM = EBP VALUE T P |-------+-------| FOR MAIN I A | | O N |-------+-------| N S | | I |-------+-------| | O | | | N |-------+-------| | | EBPM | v |-------+-------| | EBPM | |-------+-------| | EBPA | |-------+-------| | | |-------+-------| | | |-------+-------| | | +- |-------+-------| | | EBPA | | |-------+-------|<--EBP | | EBPM | DISPLAY -| |-------+-------| | | EBPA | | |-------+-------| | | EBPB | EBPB = EBP VALUE |- |-------+-------| FOR PROCEDURE B | | | | |-------+-------| DYNAMIC -| | | STORAGE | |-------+-------| | | | +- |-------+-------|<--ESP | | . .Fig.3-21 Stack Frame for Procedure C at Level 3 Called from B
Figure 3-21. Stack Frame for Procedure C at Level 3 Called from B . 31 0 . D O | | I F |-------+-------| R | OLD ESP | E E |-------+-------| C X | EBPM | EBPM = EBP VALUE T P |-------+-------| FOR MAIN I A | | O N |-------+-------| N S | | I |-------+-------| | O | | | N |-------+-------| | | EBPM | v |-------+-------| | EBPM | |-------+-------| | EBPA | EBPA = EBP VALUE |-------+-------| FOR PROCEDURE A | | |-------+-------| | | |-------+-------| | | +- |-------+-------| | | EBPA | | |-------+-------|<--EBP | | EBPM | DISPLAY -| |-------+-------| | | EBPA | | |-------+-------| | | EBPB | EBPB = EBP VALUE |- |-------+-------| FOR PROCEDURE B | | | | |-------+-------| DYNAMIC -| | | STORAGE | |-------+-------| | | | +- |-------+-------|<--ESP | | . .Fig.3-22 LAHF and SAHF
Figure 3-22. LAHF and SAHF 7 6 5 4 3 2 1 0 +---------------------------------------+ | SF | ZF | UU | AF | UU | PF | UU | CF | +---------------------------------------+ LAHF LOADS FIVE FLAGS FROM THE FLAG REGISTER INTO REGISTER AH. SAHF STORES THESE SAME FIVE FLAGS FROM AH INTO THE FLAG REGISTER. THE BIT POSITION OF EACH FLAG IS THE SAME IN AH AS IT IS IN THE FLAG REGISTER. THE REMAINING BITS (MARKED UU) ARE RESERVED; DO NOT DEFINE.Fig.3-23 Flag Format for PUSHF and POPF
Figure 3-23. Flag Format for PUSHF and POPF PUSHFD/POPFD +----------------------------------------------------------------+ PUSHF/POPF +--------------------------------+ 31 23 15 7 0 +---------------+------------------------------------------------+ | |V|R| |N|ID |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| +---------------+------------------------------------------------+ BITS MARKED 0 AND 1 ARE RESERVED BY INTEL. DO NOT DEFINE. SYSTEMS FLAGS (INCLUDING THE IOPL FIELD, AND THE VM, RF, AND IF FLAGS) ARE PUSHED AND ARE VISIBLE TO APPLICATIONS PROGRAMS. HOWEVER, WHEN AN APPLICATIONS PROGRAM POPS THE FLAGS, THESE ITEMS ARE NOT CHANGED, REGARDLESS OF THE VALUES POPPED INTO THEM.