
POP - 祭 ᫮  ⥪

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|8F /0     POP m16      6        祭 設 ⥪      |
|                                饭   ᫮     |
|8F /0     POP m32      6        祭 設 ⥪      |
|                                饭    ᫮   |
|                                                         |
|58+ rw    POP r16      4        祭 設 ⥪      |
|                                饭   ᫮ - ॣ |
|58+ rd    POP r32      4        祭 設 ⥪      |
|                                饭    ᫮ - |
|                                ॣ                        |
|1F        POP DS       3        祭 設 ⥪      |
|                                饭   ॣ DS      |
|07        POP ES       3        祭 設 ⥪      |
|                                饭   ॣ ES      |
|17        POP SS       3        祭 設 ⥪      |
|                                饭   ॣ SS      |
|0F A1     POP FS       3        祭 設 ⥪      |
|                                饭   ॣ FS      |
|0F A9     POP GS       3        祭 設 ⥪      |
|                                饭   ॣ GS      |

 

IF StackAddrSize = 16
THEN
  IF OperandSize = 16
  THEN
    DEST <- (SS:SP); (* ஢ ᫮ *)
    SP <- SP + 2;
  ELSE (* OperandSize = 32 *)
    DEST <- (SS:SP); (* ஢  ᫮ *)
    SP <- SP + 4;
  FI;

ELSE (* StackAddrSize = 32 *)
  IF OperandSize = 16
  THEN
    DEST <- (SS:ESP); (* ஢ ᫮ *)
    ESP <- ESP + 2;
  ELSE (* OperandSize = 32 *)
    DEST <- (SS:ESP); (* ஢  ᫮ *)
    ESP <- ESP + 4;
  FI;
FI;


ᠭ
 POP  ⥪饥 ᮤন ࠭ , ॣ  ᥣ⭮ ॣ ᫮,   設 ⥪ i486, 㥬 SS:SP ( ਡ ࠧ  16 ⮢)  SS:ESP ( ਡ ࠧ  32 ). ⥫ ⥪ SP 砥 饭 2  ࠧ ࠭ 16 ⮢  4  ࠧ ࠭ 32 . ᫥ ⮣ 㪠⥫ ⠭   設 ⥪.
 POP CS     i486. 祭  ⥪  ॣ CS ⢫  RET.
᫨ ࠭ 祭  ᥣ ॣ (DS, ES, FS  SS),    ⥪ 祭   ᥫ஬.  饭 ० 㧪 ᥫ 樨 ⮬ 㧪 ଠ樨 ਯ, 易   ᥫ஬,    ᥣ⭮ ॣ: 㧪 ⠪ 樨 ஫ ⮢୮ ଠ樨 ᥫ  ਯ.
⮥ 祭 (0000-0003)   祭  ॣ DS, ES, FS  GS,  뢠 ᪫祭 . ⪠ ᫠  ᥣ, ᥣ ॣ ண  㦥  祭, 맮 ᪫祭 #GP(0). 뫮    ந室.   ⮬ ࠭ ⮥ 祭.
 POP SS 頥  뢠,   ᪨㥬 뢠,   믮 ᫥饩 .   ᫥⥫쭮 믮  POP SS  POP eSP  ᭮   ६ 뢠 ୮ ﭨ ⥪. , ᯮ짮  LSS  㧪 ॣ஢ SS  eSP ।⥫쭥.
㧪 ᥣ⭮ ॣ  饭 ० ᮯ஢ ᯥ樠묨 ஢ઠ  ⢨ﬨ,    ᫥饬 ⨭:

IF 㦠 SS:
  IF ᥫ ⮩ THEN #GP(0);
     ᥫ    ࠭  ⠡ ਯ஢,
          ELSE #GP(ᥫ);
    RPL ᥫ   ࠢ CPL ELSE #GP(ᥫ);
     AR     ᥣ , 㯭  ,
          ELSE #GP(ᥫ);
    DPL   AR   ࠢ CPL ELSE #GP(ᥫ);
           祭      騩   ELSE
          #NP(ᥫ);
    㧪 ॣ SS ᥫ஬;
    㧪 ॣ SS ਯ஬;

IF DS, ES, FS  GS 㦠 - ᥫ஬:
   AR     ᥣ    ᥣ,
     㯭   ⥭, ELSE #GP(ᥫ);
  IF ᥣ   -ଭ ᥣ 
  THEN RPL  CPL     ࠢ DPL   AR;
  ELSE #GP(ᥫ);
  FI;
         祭      騩   ELSE
          #NP(ᥫ);
  㧪 ᥣ⭮ ॣ ᥫ஬;
  㧪 ᥣ⭮ ॣ ਯ஬;

IF DS, ES, FS  GS 㦠  ᥫ஬:
  㧪 ᥣ⭮ ॣ ᥫ஬;
  ⪠  ⮢୮    ॣ

塞 䫠

᪫祭 饭 ०
#GP, #SS  #NP, ᫨ 㦠 ᥣ ॣ; #SS(0), ᫨ ⥪ 設 ⥪  室  ࠭ ⥪ ᥣ; #GP(0), ᫨ 祭  ᥣ, 㯭  ; #GP(0)  砥 ⨬ ᯮ⥫쭮  ࠭   ᥣ CS, DS, ES, FS  GS; #SS(0)  砥 ⨬   ᥣ SS; #PF( ᡮ)  砥 ࠭筮 ᡮ; #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.
᪫祭 ० ॠ ᮢ
뢠 13, ᫨ -  ࠭   ࠭⢠ ᯮ⥫ ᮢ  0  0FFFFH.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ. #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.
ਬ砭
襭 ᫥⥫쭮   PUSH/POP,  ॡ騥 ⥫쭮 ⠪⮢ 横  .

POPA/POPAD - 祭  ⥪  ॣ஢ 饣 祭

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|61        POPA         9        祭  ⥪  DI,  SI,  |
|                                 BP,  BX,  DX,  CX    AX      |
|61        POPAD        9        祭  ⥪ EDI, ESI,  |
|                                EBP, EBX, EDX, ECX   EAX      |

 

IF OperandSize = 16 (*  = POPA *)
THEN
  DI <-  Pop();
  SI <-  POP();
  BP <-  Pop();
   <-  Pop();  (* ய SP *)
  BX <-  Pop();
  DX <-  Pop();
  CX <-  Pop();
  AX <-  Pop();
ELSE (* OperandSize = 32,  = POPAD *)
  EDI <-  Pop();
  ESI <-  POP();
  EBP <-  Pop();
   <-  Pop();  (* ய ESP *)
  EBX <-  Pop();
  EDX <-  Pop();
  ECX <-  Pop();
  EAX <-  Pop();
FI;

 ᠭ
 POPA   ⥪ ᥬ 16-⮢ ॣ஢ 饣 祭. , 祭 SP  㧪 ॣ SP 㭨⮦.  POPA ॢ ⢨ ।饩  PUSHA, ⠭ 祭 ॣ஢ 饣 祭,    । 믮  PUSHA.   ॣ -  DI.
 POPAD   ⥪ ᥬ 32-⮢ ॣ஢ 饣 祭. , 祭 ESP  㧪 ॣ ESP 㭨⮦.  POPAD ॢ ⢨ ।饩  PUSHAD, ⠭ 祭 ॣ஢ 饣 祭,    । 믮  PUSHAD.   ॣ -  EDI.
塞 䫠

᪫祭 饭 ०
#SS(0), ᫨ 砫    ⥪  室  । ⥪ ᥣ; #PF( ᡮ)  砥 ࠭筮 ᡮ;

᪫祭 ० ॠ ᮢ
뢠 13, ᫨ -  ࠭   ࠭⢠ ᯮ⥫ ᮢ  0  0FFFFH.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ.

POPF/POPFD - 祭  ⥪ ॣ஢ FLAGS  ERFLAGS

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|9D        POPF         9,pm=6   祭 設 ⥪      |
|                                FLAGS                          |
|9D        POPFD        9,pm=6   祭 設 ⥪      |
|                                EFLAGS                         |

 
 <- Pop();
ᠭ
 POPA ᭨  設 ⥪ ᫮   ᫮  頥   䫠 ॣ. ᫨ ਡ ࠧ ࠭  ࠢ 16 ⠬,  ⥪  ᫮,   ᮤন 頥  ॣ FLAGS. ᫨ ਡ ࠧ ࠭  ࠢ 32 ,  ⥪   ᫮,   ᮤন 頥  ॣ EFLAGS.
ଠ  ॣ FLAGS  EFLAGS 室   2  4. ⬥⨬,   16  17 ॣ EFLAGS, 뢠 VM  RF, ᮮ⢥⢥,    ࠡ  POPF  POPFD.
஢ ਢ஢ /뢮    ⮫쪮  믮  ஢ ਢ஢ 0.  뢠  ⮫쪮  믮  ஢,   ࠢ ஢ ਢ஢ /뢮. ( ॠ ᮢ ⥭ ஢ ਢ஢ 0). ᫨  POPF 믮  筮 ஢ ਢ஢, ᪫祭  ,  ਢ஢   .

塞 䫠
 䫠,  ᪫祭 䫠 VM  RF.
᪫祭 饭 ०
#SS(0), ᫨ 設 ⥪  室  । ⥪ ᥣ.
᪫祭 ० ॠ ᮢ
뢠 13, ᫨ -  ࠭   ࠭⢠ ᯮ⥫ ᮢ  0  0FFFFH.
᪫祭 㠫쭮 ० 8086
 #GP(0), ᫨ ஢ ਢ஢  3,   .

PUSH - 饭 ࠭  ⥪

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|FF /6     PUSH m16     4        饭  ⥪               |
|                                ᫮                    |
|FF /6     PUSH m32     4        饭  ⥪               |
|                                 ᫮           |
|50+ /r    PUSH r16     1        饭  ⥪               |
|                                ᫮ - ॣ               |
|50+ /r    PUSH r32     1        饭  ⥪               |
|                                 ᫮ - ॣ      |
|6A        PUSH imm8    1        饭  ⥪               |
|                                ।⢥         |
|68        PUSH imm16   1        饭  ⥪               |
|                                ।⢥ ᫮        |
|68        PUSH imm32   1        饭  ⥪               |
|                               ।⢥  ᫮|
|0E        PUSH CS      3        饭  ⥪ CS            |
|16        PUSH SS      3        饭  ⥪ SS            |
|1E        PUSH DS      3        饭  ⥪ DS            |
|06        PUSH ES      3        饭  ⥪ ES            |
|0F A0     PUSH FS      3        饭  ⥪ FS            |
|0F A8     PUSH GS      3        饭  ⥪ GS            |

 

IF StackAddrSize = 16
THEN
  IF OperandSize = 16 THEN
    SP <- SP - 2;
    (SS:SP) <- (筨);  (* 祭 ᫮ *)
  ELSE
    SP <- SP - 4;
    (SS:SP) <- (筨);  (* 祭  ᫮ *)
  FI;

ELSE (* StackAddrSize = 32 *)
  IF OperandSize = 16
  THEN
    ESP <- ESP - 2;
    (SS:ESP) <- (筨);  (* 祭 ᫮ *)
  ELSE
    ESP <- ESP - 4;
    (SS:ESP) <- (筨);  (* 祭  ᫮ *)
  FI;


ᠭ
 PUSH ६ 㪠⥫ ⥪  2, ᫨ ਡ ࠧ ࠭  ࠢ 16 ⠬;  ⨢ 砥  ६ 㪠⥫ ⥪  4. ⥬  PUSH 頥 ࠭   設 ⥪,   㪠뢠 㪠⥫ ⥪.
 PUSH ESP 頥  ⥪ 祭 ॣ ESP,  ⮬ ,     믮 .  ⮬ ⮨ ⫨稥  8086,   PUSH SP 頥  ⥪  祭 (६஢  2).
塞 䫠

᪫祭 饭 ०
#SS(0), ᫨  祭 ॣ SP  ESP  室  ࠭ ⥪ ᥣ; #GP(0)  砥 ⨬ ᯮ⥫쭮  ࠭   ᥣ CS, DS, ES, FS  GS; #SS(0)  砥 ⨬   ᥣ SS; # PF( ᡮ)  砥 ࠭筮 ᡮ; #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.
᪫祭 ० ॠ ᮢ
: ᫨ ॣ SP  ESP ࠢ 1,  室  ०  - 筮 ࠧ  ⥪.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ. #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.
ਬ砭
 ᯮ짮 ࠭   PUSH 믮 , 祬 ᫥⥫쭮  , 뫠 ࠭ १ ॣ.
襭 ᫥⥫쭮   PUSH/POP,  ॡ騥 ⥫쭮 ⠪⮢ 横  .

PUSHA/PUSHAD - 饭  ⥪  ॣ஢ 饣 祭

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|60        PUSHA        11       饭  ⥪  AX,  CX,  DX,|
|                                 BX, 室  SP, BP, SI  DI|
|60        PUSHAD       11       饭  ⥪ EAX, ECX, EDX,|
|                               EBX, 室 ESP,EBP,ESI  EDI|

 

IF OperandSize = 16 (*  = PUSHA *)
THEN
  ६ <- (SP);
  Push(AX);
  Push(CX);
  Push(DX);
  Push(BX);
  Push(६);
  Push(BP);
  Push(SI);
  Push(DI);
ELSE (* OperandSize = 32,  = PUSHAD *)
  ६ <- (ESP);
  Push(EAX);
  Push(ECX);
  Push(EDX);
  Push(EBX);
  Push(६);
  Push(EBP);
  Push(ESI);
  Push(EDI);
FI;


ᠭ
 PUSHA  PUSHAD   ⥪ i486 16-  32-⮢ ॣ 饣 祭.  PUSHA ६ 㪠⥫ ⥪ (SP)  16,  ᮮ⢥ 쬨 頥 祭 ࠧ஬  ᫮.  PUSHAD ६ 㪠⥫ ⥪ (ESP)  32,  ᮮ⢥ 쬨 頥 祭 ࠧ஬   ᫮. ᪮ ॣ   ⥪   浪,   ⥪    ⭮ 浪. ᫥  ⥪ 頥 ॣ DI  EDI.
塞 䫠

᪫祭 饭 ०
#SS(0), ᫨ 砫    ⥪  室  । ⥪ ᥣ; #PF( ᡮ)  砥 ࠭筮 ᡮ;
᪫祭 ० ॠ ᮢ
। 믮  PUSHA  PUSHAD  386 DX 室  ०   ࠢ⢥ ॣ SP  ESP 1, 3  5; ᫨ ॣ SP  ESP ࠢ 7, 9, 11, 13  15,  ந室 ᪫祭 13.
뢠 13, ᫨ -  ࠭   ࠭⢠ ᯮ⥫ ᮢ  0  0FFFFH.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ.

PUSHF/PUSHFD - 饭  ⥪ 䫠 ॣ஢

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|9C        PUSHF        4,pm=3   饭  ⥪ FLAGS         |
|9C        PUSHFD       4,pm=3   饭  ⥪ EFLAGS        |

 

IF OperandSize = 32
THEN push(EFLAGS);
ELSE push(FLAGS);
FI;


ᠭ
 PUSHF ६ 㪠⥫ ⥪  2   ॣ FLAGS   設 ⥪;  PUSHFD ६ 㪠⥫ ⥪  4,    設 ⥪  ॣ EFLAGS,   㪠뢠 SS:ESP. ଠ  ॣ EFLAGS .   2  4.
塞 䫠

᪫祭 饭 ०
#SS(0), ᫨  祭 ॣ ESP  室  । ⥪ ᥣ.
᪫祭 ० ॠ ᮢ
:  室  ०  - 筮 ࠧ  ⥪.
᪫祭 㠫쭮 ० 8086
 #GP(0), ᫨ ஢ ਢ஢  3,   .

RCL/RCR/ROL/ROR - ᪨ ᤢ

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|D0 /2     RCL r/m8,1  3/4       ᪨ ᤢ 9 ⮢      |
|                                (CF,  r/m)  1  ࠧ    |
|D2 /2     RCL r/m8,   8-30/9-31 ᪨ ᤢ 9 ⮢      |
|              CL                (CF,  r/m)  CL ࠧ    |
|C0 /2 ib  RCL r/m8,   8-30/9-31 ᪨ ᤢ 9 ⮢      |
|              imm8              (CF,  r/m)  imm8 ࠧ  |
|D1 /2     RCL r/m16,1 3/4       ᪨ ᤢ 17 ⮢     |
|                                (CF,᫮ r/m)  1  ࠧ    |
|D3 /2     RCL r/m16,  8-30/9-31 ᪨ ᤢ 17 ⮢     |
|              CL                (CF,᫮ r/m)  CL ࠧ    |
|C1 /2 ib  RCL r/m16,  8-30/9-31 ᪨ ᤢ 17 ⮢     |
|              imm8              (CF,᫮ r/m)  imm8 ࠧ  |
|D1 /2     RCL r/m32,1 3/4       ᪨ ᤢ 33 ⮢     |
|                          (CF, ᫮ r/m)  1  ࠧ  |
|D3 /2     RCL r/m32,  8-30/9-31 ᪨ ᤢ 33 ⮢     |
|              CL          (CF, ᫮ r/m)  CL ࠧ  |
|C1 /2 ib  RCL r/m32,  8-30/9-31 ᪨ ᤢ 33 ⮢     |
|              imm8        (CF, ᫮ r/m)  imm8 ࠧ|
|D0 /3     RCR r/m8,1  3/4       ᪨ ᤢ 9 ⮢      |
|                                (CF,  r/m) ࠢ 1  ࠧ   |
|D2 /3     RCR r/m8,   8-30/9-31 ᪨ ᤢ 9 ⮢      |
|              CL                (CF,  r/m) ࠢ CL ࠧ   |
|C0 /3 ib  RCR r/m8,   8-30/9-31 ᪨ ᤢ 9 ⮢      |
|              imm8              (CF,  r/m) ࠢ imm8 ࠧ |
|D1 /3     RCR r/m16,1 3/4       ᪨ ᤢ 17 ⮢     |
|                                (CF,᫮ r/m) ࠢ 1  ࠧ   |
|D3 /3     RCR r/m16,  8-30/9-31 ᪨ ᤢ 17 ⮢     |
|              CL                (CF,᫮ r/m) ࠢ CL ࠧ   |
|C1 /3 ib  RCR r/m16,  8-30/9-31 ᪨ ᤢ 17 ⮢     |
|              imm8              (CF,᫮ r/m) ࠢ imm8 ࠧ |
|D1 /3     RCR r/m32,1 3/4       ᪨ ᤢ 33 ⮢     |
|                          (CF, ᫮ r/m) ࠢ 1  ࠧ |
|D3 /3     RCR r/m32,  8-30/9-31 ᪨ ᤢ 33 ⮢     |
|              CL          (CF, ᫮ r/m) ࠢ CL ࠧ |
|C1 /3 ib  RCR r/m32,  8-30/9-31 ᪨ ᤢ 33 ⮢     |
|              imm8        (CF, ᫮ r/m)ࠢ imm8 ࠧ|
|D0 /0     ROL r/m8,1  3/4       ᪨ ᤢ 8 ⮢      |
|                                (     r/m)  1  ࠧ    |
|D2 /0     ROL r/m8,   3/4       ᪨ ᤢ 8 ⮢      |
|              CL                (     r/m)  CL ࠧ    |
|C0 /0 ib  ROL r/m8,   3/4       ᪨ ᤢ 8 ⮢      |
|              imm8              (     r/m)  imm8 ࠧ  |
|D1 /0     ROL r/m16,1 3/4       ᪨ ᤢ 16 ⮢     |
|                                (   ᫮ r/m)  1  ࠧ    |
|D3 /0     ROL r/m16,  3/4       ᪨ ᤢ 16 ⮢     |
|              CL                (   ᫮ r/m)  CL ࠧ    |
|C1 /0 ib  ROL r/m16,  3/4       ᪨ ᤢ 16 ⮢     |
|              imm8              (   ᫮ r/m)  imm8 ࠧ  |
|D1 /0     ROL r/m32,1 3/4       ᪨ ᤢ 32 ⮢     |
|                             ( ᫮ r/m)  1  ࠧ  |
|D3 /0     ROL r/m32,  3/4       ᪨ ᤢ 32 ⮢     |
|              CL             ( ᫮ r/m)  CL ࠧ  |
|C1 /0 ib  ROL r/m32,  2/4       ᪨ ᤢ 32 ⮢     |
|              imm8           ( ᫮ r/m)  imm8 ࠧ|
|D0 /1     ROR r/m8,1  3/4       ᪨ ᤢ 8 ⮢      |
|                                (     r/m) ࠢ 1  ࠧ   |
|D2 /1     ROR r/m8,   3/4       ᪨ ᤢ 8 ⮢      |
|              CL                (     r/m) ࠢ CL ࠧ   |
|C0 /1 ib  ROR r/m8,   3/4       ᪨ ᤢ 8 ⮢      |
|              imm8              (     r/m) ࠢ imm8 ࠧ |
|D1 /1     ROR r/m16,1 3/4       ᪨ ᤢ 16 ⮢     |
|                                (   ᫮ r/m) ࠢ 1  ࠧ   |
|D3 /1     ROR r/m16,  3/4       ᪨ ᤢ 16 ⮢     |
|              CL                (   ᫮ r/m) ࠢ CL ࠧ   |
|C1 /1 ib  ROR r/m16,  3/4       ᪨ ᤢ 16 ⮢     |
|              imm8              (   ᫮ r/m) ࠢ imm8 ࠧ |
|D1 /1     ROR r/m32,1 3/4       ᪨ ᤢ 32 ⮢     |
|                             ( ᫮ r/m) ࠢ 1  ࠧ |
|D3 /1     ROR r/m32,  3/4       ᪨ ᤢ 32 ⮢     |
|              CL             ( ᫮ r/m) ࠢ CL ࠧ |
|C1 /1 ib  ROR r/m32,  2/4       ᪨ ᤢ 32 ⮢     |
|              imm8           ( ᫮ r/m)ࠢ imm8 ࠧ|

 

(* ROL - 横᪨ ᤢ  *)
६ <- 稪;
WHILE(६ <> 0)
DO
  ६cf <- 訩  (r/m);
  r/m <- r/m * 2 + (६cf);
  ६ <- ६ - 1;
OD;
IF 稪 = 1
THEN
  IF 訩  r/m <> CF
  THEN OF <- 1;
  ELSE OF <- 0;
  FI;
ELSE OF <- ।;
FI;

(* ROR - 横᪨ ᤢ ࠢ *)
६ <- 稪;
WHILE(६ <> 0)
DO
  ६cf <- 訩  (r/m);
  r/m <- r/m / 2 + (६cf * 2 ** width(r/m));
  ६ <- ६ - 1;
OD;
IF 稪 = 1
THEN
  IF (訩  r/m) <> (, ᥤ  訬 ⮬ r/m)
  THEN OF <- 1;
  ELSE OF <- 0;
  FI;
ELSE OF <- ।;
FI;


ᠭ
  横᪮ ᤢ ᤢ   ࠭ ॣ  .  横᪮ ᤢ  ᤢ    孥 ࠢ,  ᪫祭 ᠬ 孥 ,  室   .  横᪮ ᤢ 믮 ⭮ ⢨:  ᤢ   ࠢ,  ᠬ     ᢥ.
 砥  RCL  RCR 䫠 CF   ᤢ .  RCL ᤢ 䫠 CF   ,  孨  ᤢ  䫠 CF;  RCR ᤢ 䫠 CF  孨 ,    ᤢ  䫠 CF.   ROL  ROR 室 祭 䫠 CF    १,  䫠 CF 砥  ,   ᤢ     㣮.
  ᫮ ࠧ,   ࠭,  ।⠢ ᮡ  ।⢥ 祭,  ᮤন ॣ CL.  㬥襭 ᨬ쭮 ६ 믮   i486   ᫮ 横᪨ ᤢ  31.  ⪥ ᤥ 稪 ᤢ  31 ᯮ ⮫쪮  5 ⮢. 8086  ᪨ 稪 ᤢ.  㠫쭮 ० 8086  i486  ᪨ 稪 ᤢ.
 OF । ⮫쪮     (ன ࠭ ࠢ 1).  ⠫    ।.  ᤢ/横᪨ ᤢ    CF ᫥ ᤢ 믮  XOR  ⮬ १ 襣 浪.  ᤢ/横᪨ ᤢ ࠢ   ⮢ 襣 浪 १ 믮  XOR  祭 䫠 OF.
塞 䫠
 OF  ⮫쪮  砥 横᪨ ᤢ  1 ;  ᤢ  ᪮쪮 ⮢ 䫠 OF ।; 䫠 CF ᮤন 祭 ,     饭 ᤢ; 䫠 SF, ZF, AF  PF  .
᪫祭 饭 ०
#GP(0), ᫨ 祭  ᥣ, 㯭  ; #GP(0)  砥 ⨬ ᯮ⥫쭮  ࠭   ᥣ CS, DS, ES, FS  GS; #SS(0)  砥 ⨬   ᥣ SS; #PF( ᡮ)  砥 ࠭筮 ᡮ; #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.
᪫祭 ० ॠ ᮢ
뢠 13, ᫨ -  ࠭   ࠭⢠ ᯮ⥫ ᮢ  0  0FFFFH.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ. #AC  ࠢ 뫪    ⥪饬 ஢ ਢ஢, ࠢ 3.

REP/REPE/REPZ/REPNE/REPNZ - ७ ᫥饩 ப 

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|F3 6C     REP INS     16+8(E)CX,         (E)CX ⮢    |
|           r/m8,DX    pm=10+8(E)CX *1/   DX  ES:[(E)DI]  |
|                      30+8(E)CX *2,                            |
|                      VM=29+8(E)CX                             |
|F3 6D     REP INS     16+8(E)CX,         (E)CX ᫮      |
|          r/m16,DX    pm=10+8(E)CX *1/   DX  ES:[(E)DI]  |
|                      30+8(E)CX *2,                            |
|                      VM=29+8(E)CX                             |
|F3 6D     REP INS     16+8(E)CX,         (E)CX  ᫮|
|          r/m32,DX    pm=10+8(E)CX *1/   DX  ES:[(E)DI]|
|                      30+8(E)CX *2,                            |
|                      VM=29+8(E)CX                             |
|F3 A4     REP MOVS    5 *3, 13 *4,      뫪 (E)CX ⮢ |
|          m8,m8       12+3(E)CX *5       [(E)SI]  ES:[(E)DI]|
|F3 A5     REP MOVS    5 *3, 13 *4,      뫪 (E)CX ᫮   |
|          m16,m16     12+3(E)CX *5       [(E)SI]  ES:[(E)DI]|
|F3 A5     REP MOVS    5 *3, 13 *4,      뫪 (E)CX |
|          m32,m32     12+3(E)CX *5      ᫮                   |
|                                         [(E)SI]  ES:[(E)DI]|
|F3 6E     REP OUTS    17+5(E)CX,       뢮 (E)CX ⮢    |
|          DX,r/m8     pm=11+5(E)CX *1/ [(E)SI]   DX       |
|                      31+5(E)CX *2,                            |
|                      VM=30+5(E)CX                             |
|F3 6F     REP OUTS    17+5(E)CX,       뢮 (E)CX ᫮      |
|          DX,r/m16    pm=11+5(E)CX *1/ [(E)SI]   DX       |
|                      31+5(E)CX *2,                            |
|                      VM=30+5(E)CX                             |
|F3 6F     REP INS     17+5(E)CX,       뢮 (E)CX  ᫮|
|          DX,r/m32    pm=11+5(E)CX *1/  [(E)SI]   DX    |
|                      31+5(E)CX *2,                            |
|                      VM=30+5(E)CX                             |
|F2 AC     REP LODS    5 *3,             㧪  (E)CX ⮢ |
|          m8          7 +4(E)CX *6       [(E)SI]  AL        |
|F2 AD     REP LODS    5 *3,             㧪  (E)CX ᫮   |
|          m16         7 +4(E)CX *6       [(E)SI]  AX        |
|F2 AD     REP LODS    5 *3,             㧪  (E)CX |
|          m32         7 +4(E)CX *6      ᫮                   |
|                                         [(E)SI]  EAX       |
|F3 AA     REP STOS    5 *3,             (E)CX ⮢ |
|          m8          7 +4(E)CX *6       ES:[(E)DI]  AL     |
|F3 AB     REP STOS    5 *3,             (E)CX ᫮   |
|          m16         7 +4(E)CX *6       ES:[(E)DI]  AX     |
|F3 AB     REP STOS    5 *3,             (E)CX |
|          m32         7 +4(E)CX *6      ᫮                   |
|                                         ES:[(E)DI]  EAX    |
|F3 A6    REPE CMPS    5 *3,              ᮢ    |
|          m8,M8       7 +7(E)CX *6      ⮢                 |
|                                         ES:[(E)DI]  [(E)SI] |
|F3 A7    REPE CMPS    5 *3,              ᮢ    |
|          m16,m16     7 +7(E)CX *6      ᫮                   |
|                                         ES:[(E)DI]  [(E)SI] |
|F3 A7    REPE CMPS    5 *3,              ᮢ    |
|          m32,m32     7 +7(E)CX *6       ᫮           |
|                                         ES:[(E)DI]  [(E)SI] |
|F3 AE    REPE SCAS    5 *3,               ࠢ     AL |
|          m8          7 +5(E)CX *6      ⮢, 稭       |
|                                          ES:[(E)DI]           |
|F3 AF    REPE SCAS    5 *3,               ࠢ     AX |
|          m16         7 +5(E)CX *6      ᫮  , 稭       |
|                                          ES:[(E)DI]           |
|F3 AF    REPE SCAS    5 *3,               ࠢ     EAX|
|          m32         7 +5(E)CX *6       ᫮, 稭 |
|                                          ES:[(E)DI]           |
|F2 A6   REPNE CMPS    5 *3,                ᮢ    |
|          m8,M8       7 +7(E)CX *6      ⮢                 |
|                                         ES:[(E)DI]  [(E)SI] |
|F2 A7   REPNE CMPS    5 *3,                ᮢ    |
|          m16,m16     7 +7(E)CX *6      ᫮                   |
|                                         ES:[(E)DI]  [(E)SI] |
|F2 A7   REPNE CMPS    5 *3,                ᮢ    |
|          m32,m32     7 +7(E)CX *6       ᫮           |
|                                         ES:[(E)DI]  [(E)SI] |
|F2 AE   REPNE SCAS    5 *3,                 ࠢ     AL |
|          m8          7 +5(E)CX *6      ⮢, 稭       |
|                                          ES:[(E)DI]           |
|F2 AF   REPNE SCAS    5 *3,                 ࠢ     AX |
|          m16         7 +5(E)CX *6      ᫮  , 稭       |
|                                          ES:[(E)DI]           |
|F2 AF   REPNE SCAS    5 *3,                 ࠢ     EAX|
|          m32         7 +5(E)CX *6       ᫮, 稭 |
|                                          ES:[(E)DI]           |

ਬ砭:  *1  ᫨ CPL <= IOPL
             *2  ᫨ CPL > IOPL
             *3  (E)CX = 0
             *4  (E)CX = 1
             *5  (E)CX > 1
             *6  (E)CX > 0

 

IF AddressSize = 16
THEN  ⢥ CountReg ᯮ CX;
ELSE (* AddressSize = 32 *)  ⢥ CountReg ᯮ ECX;
FI;

WHILE CountReg <> 0
DO
  㦨 襭 뢠 (᫨  );
  믮 ਬ⨢ ப ;
  CountReg <- CountReg - 1;
  IF ਬ⨢   CMPB,CMPW,SCAB  SCAW
  THEN
    IF ( REP/REPE/REPZ) AND (ZF=1)
    THEN 室  横 WHILE
    ELSE
      IF ( REPNZ  REPNE) AND (ZF=0)
      THEN 室  横 WHILE;
      FI;
    FI;
  FI;
OD;


ᠭ
䨪 REP, REPE (  ࠢ)  REPNE (   ࠢ) ਬ  ப .  䨪 뢠 ७ ᫥饩   ப  ⮫쪮 ࠧ, ᪮쪮 㪠  ॣ஬  ( 䨪ᮢ REPE  REPNE)   ⠭ 㤮⢮ ᫮, 㪠 䫠 ZF.
᪨ ଠ 䨪ᮢ REPE  REPNE  䨪 REPZ  REPNZ, ᮮ⢥⢥.
䨪 REP ६ ਬ ⮫쪮   ப .  ७   ᯮ  LOOP    横.
筮 ᠭ ⢨   樨 ᫥饥:
1. ᫨ ਡ ࠧ  ࠢ 16 ⠬,  ⢥ ॣ-稪 ᯮ CX; ᫨  ਡ ࠧ  ࠢ 32 ⠬,  ⢥ ॣ-稪 ᯮ ECX;
2. ஢ ॣ CX. ᫨  ࠢ 0, ந室 室  樨  室  ᫥饩 .
3.    襭 뢠.
4. ⭮ 믮 ப 樨.
5. ६ ॣ CX  ECX  ; 䫠  .
6. ᫨ ப   SCAS  CMPS, ஢ 䫠 ZF. ᫨ ᫮ ⮥  믮,  ந室 室  樨  室  ᫥饩 . 室  樨 ந室, ᫨ 䨪  REPE,  䫠 ZF ࠢ 0 (᫥ ࠢ  -ࠢ⢮),  ᫨ 䨪  REPNE,  䫠 ZF ࠢ 1 (᫥ ࠢ  ࠢ⢮).
7.   蠣 1  ᫥饩 樨.
室    CMPS  SCAS ,   稪 ⠫ 㦭 ᫮ ࠧ,  䫠 ZF ,  ᫮ ७  믮.     ࠧ, ᯮ  ⮣   JCXZ,  ᫮ 室, ஢騥 䫠 ZF ( JZ, JNZ  JNE).
塞 䫠
 ZF  ﬨ REP CMPS  REP SCAS,  뫮 ᠭ .
᪫祭 饭 ०

᪫祭 ० ॠ ᮢ

᪫祭 㠫쭮 ० 8086

ਬ砭
   /뢮 ᯮᮡ ন ᪮,  ன 믮  REP INS  REP OUTS.
 ᯮ짮  -ப  䨪 ७ .

RET -   楤

|            ᫮      ᠭ                      |
|樨              ⠪⮢                                 |
|                      横                                   |
|                                                               |
|C3         RET        5          ()             |
|                                뢠 楤           |
|CB         RET        13,pm=18   (쭨)             |
|                                뢠 楤,          |
|                                  ਢ஢      |
|CB         RET        13,pm=33   (쭨)              |
|                                 ਢ஢,   |
|                                ⥪ ४祭        |
|C2 iw      RET imm16  5          (쭨),             |
|                                祭  ⥪ imm16      |
|                                ⮢ ࠬ஢              |
|CA iw      RET imm16  14,pm=17   (쭨),             |
|                                  ਢ஢,     |
|                                祭  ⥪ imm16      |
|                                ⮢                         |
|CA iw      RET imm16  14,pm=33   (쭨),             |
|                                 ਢ஢,   |
|                                祭  ⥪ imm16      |
|                                ⮢                         |

 

IF  =  RET
THEN
  IF OperandSize = 16
  THEN
    IP <- Pop();
    EIP <- EIP AND 0000FFFFH;
  ELSE (* OperandSize = 32 *)
    EIP <- Pop();
  FI;
  IF    ।⢥ ࠭
    THEN eSP <- eSP + imm16; FI;
FI;

IF (PE = 0 OR (PE = 1 AND VM = 1))
   (* ० ॠ ᮢ  㠫 ० 8086 *)
   AND  = 쭨 RET
  THEN
    IF OperandSize = 16
    THEN
      IP <- Pop();
      EIP <- EIP AND 0000FFFFH;
      CS <- Pop(); (* 祭  ⥪ 16 ⮢ *)
    ELSE (* OperandSize = 32 *)
      EIP <- Pop();
      CS <- Pop(); (* 祭  ⥪ 32 ⮢, 16 ⮢
                       *)
    FI;
    IF    ।⢥ ࠭
       THEN eSP <- eSP + imm16; FI;
FI;

IF (PE = 1 AND VM = 0)
   (* 饭 ०,  㠫 ० 8086 *)
   AND  = 쭨 RET
  THEN
    IF OperandSize = 16
    THEN   ᫮  ⥪  室  ࠭ ⥪
            #SS(0);
    ELSE  ஥ ᫮  ⥪  室  ࠭ ⥪
            #SS(0);
    FI;
    RPL ᥫ    >= CPL
         ELSE #GP(ᥫ );
    IF RPL ᥫ  = CPL
    THEN GOTO --;
    ELSE GOTO --;
    FI;
FI;


--:
      - ELSE  #GP(0)
   ᥫ    ࠭  ⠡ ਯ஢,
      ELSE  #GP(ᥫ);
   AR ਯ      ᥣ,
      ELSE #GP(ᥫ);
  IF -ଭ
  THEN  DPL  ᥣ   ࠢ CPL;
  ELSE #GP(ᥫ);
  FI;
  IF ଭ
  THEN  DPL  ᥣ   <= CPL;
      ELSE #GP(ᥫ);
  FI;
   ᥣ  ⢮ ELSE #NP(ᥫ);
  孥 ᫮  ⥪    ࠭ ⥪ ELSE #SS(0);
  IP    ࠭  ᥣ ELSE #GP(0);
  IF OperandSize = 32
  THEN
    㧪 CS:EIP  ⥪
    㧪 ॣ CS ਯ஬
    ६ eSP    4  ।⢥ 祭 ᬥ饭,
              ᫨  
  FI;


--:
  IF OperandSize = 32
  THEN 孨  (16+।⢥  祭)  ⮢    ⥪
        । ࠭ ⥪,  #SS(0);
  ELSE 孨  (8+।⢥  祭)  ⮢     ⥪
        । ࠭ ⥪,  #SS(0);
  FI;
  ᬮਬ ᥫ CS   易   ਯ:
       -,  #GP(0);
     ᥫ    ࠭  ⠡ ਯ஢,
          ELSE #GP(ᥫ);
     AR ਯ      ᥣ,
          ELSE  #GP(ᥫ);
    IF -ଭ
    THEN DPL    ᥣ      =  RPL  ᥫ
          ; ELSE #GP(ᥫ);
    FI;
    IF ଭ
    THEN DPL    ᥣ      <= RPL ᥫ
        , ELSE #GP(ᥫ);
    FI;
      ⢮,  #NP(ᥫ);

  ᬮਬ ᥫ SS   易   ਯ:
       -,  #GP(0);
     ᥫ    ࠭  ⠡ ਯ஢,
          ELSE #GP(ᥫ);
    RPL ᥫ   ࠢ RPL ᥫ CS 
          ELSE #GP(ᥫ);
     AR ਯ     ᥣ , 㯭
        , ELSE #GP(ᥫ);
    DPL ਯ   = RPL ᥫ CS ;
        ELSE #GP(ᥫ);
      ⢮,  #NP(ᥫ);
    ⥫     । ࠭  ᥣ,
        ELSE #GP(0);
    ⠭ CPL ࠢ RPL ᥫ CS ;
    IF OperandMode = 32
    THEN
      㧪 CS:EIP  ⥪;
      ⠭ RPL CS ࠢ CPL;
      ६ eSP  8  ।⢥ 祭 ᬥ饭,
         ᫨  ;
      㧪 SS:eSP  ⥪;
    ELSE  (* OperandMode *)
      㧪 CS:IP  ⥪;
      ⠭ RPL CS ࠢ CPL;
      ६ eSP  4  ।⢥ 祭 ᬥ饭,
         ᫨  ;
      㧪 SS:eSP  ⥪;
    FI;
    㧪 ॣ CS ਯ஬ CS ;
    㧪 ॣ SS ਯ஬ SS ;
    FOR   ES, FS, GS  DS
    DO;
      IF ⥪饥  祭  ॣ  ⮢୮    譥
           ஢, ॣ ⠭ 
           (ᥫ <- AR <- 0);
      ⮡    ⮢,   ⠭    ॣ    
           㤮⢮ ᫥騬 ᢮⢠:
         ᥫ    ࠭  ⠡
           ਯ஢;
         AR ਯ      ᥣ    
            ᥣ, 㯭  ⥭;
        IF  ᥣ   -ଭ  ᥣ,
          THEN DPL   >= CPL,  DPL   >= RPL;
        FI;
  OD;


ᠭ
 RET । ࠢ   , 室騩  ⥪.  筮 頥  ⥪  CALL,   믮  , ᯮ ᫥  CALL.
易⥫ ᫮ ࠬ  RET । ᫮ ⮢ (operandMode = 16)  ᫮ (OperandMode = 32),    ᢮ ᫥ 祭  ⥪  .   筮 ᯮ  室 ࠬ 뢠 楤).
 ᥣ⭮ ()    ⥪  ᬥ饭 ᥣ,   ⥪  頥  㪠⥫ .  CS  .  ᥣ⭮ (쭥)    ⥪   㪠⥫. 砫  ⥪  ᬥ饭,    ᥫ.
 ॠ쭮 ० ॣ CS  IP 㦠 אַ.  饭 ० ᥣ  ⠢  ஢ ਯ, 㥬 ᥫ஬ .  AR ਯ    ᥣ, ࠢ   ਢ஢ ( 訬  ࠢ ᫮ ஬ ஢ ਢ஢),  ⥪騩 ஢ ਢ஢.   訩 ஢ ਢ஢ 뢠 १㧪 ⥪  祭, ᠭ ᫥  ࠬ஢.
 ६ -஢ । ࠢ  RET   ॣ DS, ES, FS  GS. ᫨  ॣ ⭮  ᥣ⠬,     ᯮ짮   ஢ ਢ஢,  , ⮡ ।। ࠧ襭    ஢ ਢ஢.
塞 䫠

᪫祭 饭 ०
#GP, #NP  #SS,  㪠   ࠧ " "; # PF( ᡮ)  砥 ࠭筮 ᡮ;
᪫祭 ० ॠ ᮢ
뢠 13, ᫨ -    ⥪ ࠭   ᮬ 0FFFFH.
᪫祭 㠫쭮 ० 8086
  ᪫祭,    ० ॠ ᮢ: #PF ( ᡮ)  ࠭ ᡮ.


