
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 (
ᡮ)  ࠭ ᡮ.

-----------------------------------------------------------------
