                          

                            N 16

             2  iX86  INTEL

                          80386

                        2 樨

       80386  ᫥騥  樨:

	       BSF     BTR     LFS     MOVZX
	       BSR     BTS     LGS     SETxx
	       BT      CDQ     LSS     SHLD
               BTC     CWDE    MOVSX   SHRD

                         ஢ઠ ⮢

     ﬨ ஢ન ⮢  80386    -
樨 BT, BTC, BTR  BTS.  BT -  ᭮ -
 ஢ન ⮢,   祭  ⨯    䫠
७.  ਬ,    ᫥饬 ࠣ ணࠬ 室 
Bit3Is1 ந室 ⮫쪮  ⮬ 砥,  ᫨  3 ॣ  EAX
⫨祭  0:

        bt      eax,3
        jc      Bit3Is1
        .
        .
Bit3Is1:
        .
        .

     ᫨ EAX ᮤন 祭 00000008h,     ⮩  ணࠬ
ந  室    Bit3Is1.  ᫨   EAX ᮤন 祭
0FFFFFF7h,   室 믮  㤥.  ࠭ -
樨  BT ।⠢ ᮡ 16-  32-ࠧ來 騩 ॣ 
祩 ,  ᮤঠ ஢塞 .  ன ࠭ - 
 ஢塞 ,  8-⮢ ।⢥ -
祭  ᮤন 16-  32-ࠧ來 饣 ॣ. ᫨
  ⢥  ண ࠭ ᯮ ॣ,    ࠧ
 ᮢ  ࠧ஬ ࢮ ࠭.   ஢塞
    ॣ஬,  ⠪  ।⢥ -
祭,  ,  ஬ ஢ ,  ।⠢ -
  祩 , ⠪  ॣ.

      BTC  筠 樨 BT,  ⮫쪮 㥬
 䫠 ७ 祭 ।⠢ ᮡ  
.     䫠 ७ ⠭  祭 1,  ᫨

                              - 2 -

  ࠢ 0,    祭 0, ᫨   ࠢ 1.
  BTC  ࠭ 室 ᯮ짮 樨
CMC,   ॡ  ﭨ 䫠  ७,  ⭮
祭 ஢塞 .

      BTR ⠪ 筠 樨 BT,   ᫥ -
஢ ஢塞   䫠 ७  祭  ⠭-
 ࠢ 0. 筮,  BTS ⠭ ஢-
  ,  㥬    䫠  ७,    祭  1.  
樨 ஢ન  ᯮ짮    ⠭
ﭨ 䫠   樨 ( ⮬  ࠧ㬥,  
   ந 뢠  ஢મ 䫠  ⠭
   祭).

                         ᬮ ⮢

      宦  ࢮ   ᫥ 㫥  -
࠭ ࠧ஬  ᫮   ᫮  ᯮ짮 -
樨  BSF   BSR.   BSF ᬠਢ 室 -
࠭,  稭   0 (訩 ), ।  㫥
.  ᫨   ࠭-筨  㫥묨,  䫠
 頥.  ⨢ 砥 䫠  ⠭,  
楫  ॣ  (ਥ)    ࢮ 
㫥 .
     ன ࠭ 樨 BFS -  16-  32-ࠧ來 -
騩 ॣ  ᬠਢ 祩 ,   ࠭ -
 16-  32-ࠧ來 騩 ॣ,    㤥  -
    ࢮ  㫥   ᬠਢ .
 ࠭    ࠧ.
      BSR 筠 樨 BFS,    ᬮ  
稭  襣 ( 饣)  ࠭-筨
 襬 .

       ६饭   ७    

     樨 MOVZX  MOVSX   ஢ 8-  16-
ࠧ來 祭  16-  32-ࠧ來 騩 ॣ  -
室 ᯮ짮 譨 権  ७ 祭
    ࠧ.    MOVZX  訥 
ਥ ﬨ,   MOVSX ࠭  祭
  ᮮ⢥⢨   ࠧ஬ ਥ.   樨 
⠭⭮ 樨 MOV.

           ८ࠧ  ⨯ DWORD  QWORD

      ८ࠧ 祭   ࠧ஬     -
  AL    祭    ࠧ஬  ᫮  祭 
  ॣ AL ࠧ஬  ᫮  祭   ࠧ-

                              - 3 -

஬      ᫮   80386 ।ᬮ७ ᮮ⢥-
⢥ 樨 CBW  CWD.    80386   
樨 ८ࠧ, CWDE  CDQ,   ࠡ 
32-ࠧ來묨 ॣࠬ  80386.
      CWDE ८ࠧ 祭     ࠧ஬  
᫮,  ᠭ  ॣ AX,  祭   ࠧ஬ 
 ᫮,  ⠪    CWD.  稥   ⨬
 ﬨ ⮨  ⮬,    ६  CWD 頥
32-ࠧ來 १  DX:AX,  CWDE 頥 頥
32-ࠧ來 १  ॣ EAX,   ⥬ ᯮ-
  32-ࠧ來   80386.
      CWD  ८ࠧ  祭     ࠧ஬ 
 ᫮  ॣ EAX  祭    (8-⮢)
 EDX:EAX.

                       ᪮쪨 ᫮

     樨  80386 SHRD  SHLD,  ᯥ稢 ᤢ
 ᪮쪮 ⮢  ॣ஢  ॣ  祩 .
      ࠭ 樨 SHLD -  16-  32-ࠧ來 -
騩 ॣ  祩 ,   㦭 믮 ᤢ.
ன ࠭ ।⠢ ᮡ 16-  32-ࠧ來 ॣ, 
 㦭 믮 ᤢ,   ⨩ ࠭ -  ᫮  -
⮢,   㦭 ⢨ ᤢ.  ࢮ  -
 ࠭  ᮢ.  ⨩ ࠭  ।⠢
ᮡ ।⢥ 祭  ॣ CL.   ᫥ -
砥 楫 ࠭ ᤢ  ᫮ ⮢,  ।塞  -
஢ CL.
      SHRD  筠 樨 SHLD,    -
 ᤢ   饣 (襣)   ࠢ
 ⮢.

                    ᫮ ⠭ ⮢

     饥 ਬ  ᫮ ஢ப  室 ⮨ 
⠭ 祭 祩  ,  ⮡  ࠧ  ।
ﭨ.  ਬ,   ⥫ ⠭ -
祭  ६,    ६ ࠢ, 㪠⥫ ࠢ
,      ।饩  樨  ⠭ 䫠 ७.
   80386  ᪮७ ⠪ 権 ஢ન  -
 ।ᬮ७ 魠 㯯 権 SET.
     ஢         ᫮ 室 
믮   樨 SET.  SETNC ⠭-
  楫 ࠭  祭 1,  ᫨ 䫠 ७ ࠢ 0,  
뢠 祭 楫 ࠭  0, ᫨ 䫠 ७ -
  1.   SETS ⠭ ਥ,  ᫨ 䫠 
ࠢ 1,   뢠 ,  ᫨ 䫠  ࠢ 0  . . -
࠭  樨  SET      8-⮢ 騬 ॣ஬ 

                              - 4 -

8-⮢ ६  . 16-  32-ࠧ來 ࠭  -
᪠.

                 㧪 ॣ஢ SS, FS  GS

       8086 LDS    㦠  
ॣ DS,  ⠪     ॣ஢     -
樨,  , ⠪ ࠧ, 祭 䥪⨢ ⠭
쭨  㪠⥫.   LES ᯥ稢  -
,    DS 㦠 ॣ ES.    80386
  㧪 쭨 㪠⥫  樨 LSS,  LFS 
LGS,  㦠 쭨 㪠⥫  ᭮ ᥣ -
஢ SS, FS  GS ᮮ⢥⢥.

                     2७ 樨

        80386  ⮫쪮    -
樨      ࠢ        ஬    権    ஬
8086/80186/80286,    ⠪ ७ 騥 樨.  
᫥騥 樨:

        CMPS    JC      JNAE    JNLE    JPO     OUTS
        IMUL    JCXZ    JNB     JNO     JS      POPA
        INS     JE      JNBE    JNP     JZ      POPF
        IRET    JG      JNC     JNS     LODS    PUSHA
        JA      JGE     JNE     JNZ     LOOP    PUSHF
        JAE     JL      JNG     JO      MOV     SCAS
        JB      JLE     JNGE    JP      MOVS    STOS
        JBE     JNA     JNL     JPE

     ஬ ⮣,   80386  樨  ࠡ-
  32-ࠧ來묨 ࠭,       -
.

                樠 ᨨ 樨 MOV

      80386 ন  ᯥ樠    樨
MOV,   ணࠬ, ࠡ饩  ஢ ਢ
0 (஢  ᨬ묨 ﬨ) ६   
32-ࠧ來묨 騬 ॣࠬ  ᯥ樠묨 ॣࠬ -
 80386.  ᯮᮡ    ᫥騬 ॣࠬ
 80386:

        CR0     DR0     DR3     TR6
        CR2     DR1     DR6     TR7
        CR3     DR2     DR7

         32-ࠧ來 ᨨ 権  8086

                              - 5 -


      樨  8086 ७  ⠪  ࠧ,
⮡  뫮 ᯮ짮   樨  
࠭  80386.   믮 32-ࠧ-
來  ⠭ 32-⮢ ॣ EBX  32-⮢ ६-
   EBP+EAX*8+10h.  ⮬  뫪  楫 祩-
  ᯮ 32-ࠧ來 ॣ:

sub     DWORD PTR [ebp+eax*8+10h],ebx

                ᨨ 権 LOOP  JCXZ

     樨 LOOP,  LOOPE,  LOOPNE  JCXZ  ࠡ  筮  
16-ࠧ來 ॣ஬ CX.  8086 ।ᬠਢ  16-
ࠧ來,  ⠪  32-ࠧ來   権. 32-ࠧ-
 ᨨ  ॣ CX  ࠡ  ॣ஬ ECX.
     樨 LOOP,  LOOPE  LOOPNE ᯮ  ⢥ -
稪 横 ॣ CX  ECX,  ᨬ  ⨯ ᥣ (16
-⮢   32-⮢).  ᫨   ᯥ,  ⮡ 
⢥ ॣ ࠢ 横 ᥣ  ᯮ  ॣ
CX  (    32-⮢ ᥣ),   ᯮ ᫮ 
 権 (LOOPW,  LOOPWE  LOOPWNE).  筮, ᫨
㦭 ᯥ ᯮ짮  ⢥ ࠢ饣 横 -
  ॣ  ECX,  ᯮ  ᫥騥    権:
LOOPD, LOOPDE  LOOPDNE.
      LOOPD  㬥蠥 ᮤন ECX  믮 -
室  㪠 ᬥ饭, ᫨ 頥 祭 ⫨筮 
.
      LOOPDE 㬥蠥 ᮤন ECX  믮 -
室  楫 ᬥ饭,   䫠  ࠢ 1,   ECX  ࠢ
0.  (LOOPDZ  -    ଠ ⮩  樨.) 筮,
 LOOPDNE 㬥蠥 祭 ECX  室  楫
ᬥ饭,   䫠  ࠢ 0,   ECX  ࠢ 0.  (LOOPDNZ -
 ⭠ .)

                 ᨨ ப 権

       80386  ப 樨  ࠡ 
⠬,  ᫮   묨 ᫮.  ᨨ  権,
ࠡ騥  묨 ᫮,   稢 㪢 D,  
 㪢 W  B.  ᫥騥 樨:

        CMPSD   MOVSD   SCASD
        INSD    OUTSD   STOSD
        LODSD

         権 ࠡ⠥ ࠧ  32 ⠬ 
 㢥稢  㬥蠥   ७ ᮮ⢥騩

                              - 6 -

ॣ-㪠⥫  4.

                         IRETD

      IRETD  筠 樨 IRET.   
 ⥪ EIP,   ⥬ CS,    ᫮ (뢠 襥
᫮), ᫥ 祣  EFLAGS,   ᫮.

                    樨 PUSHFD  POPFD

      PUSHFD   ⥪  32-ࠧ來 ॣ
䫠  80386.  POPFD   ⥪ -
 32-ࠧ來 ॣ 䫠.
     樨  PUSHF  POPF   ⥪    -
 ⮫쪮 訥 16 ⮢ ॣ 䫠.

                    樨 PUSHAD  POPAD

      PUSHAD   ⥪ ᥬ  32-ࠧ來  
ॣ஢  ᫥饬 浪: EAX, ECX, EDX, EBX, ESP, EBP, ESI,
EDI. 祭, ᨬ  ॣ ESP, ᮮ⢥ 祭
ॣ ESP  砫 樨 PUSHAD.   POPAD -
  ⥪ ᥬ 32-ࠧ來  ॣ஢   ᫥饬  -
浪:  EDI,  ESI,  EBP,  EBX, EDX, ECX   EAX.    ॣ
 ࠭  ⥪     樨  PUSHAD,    ⥬
⠭   樨 POPAD.   ESP 樥
POPAD  ⠭.   ⮣ 믮 믮
㢥祭  32, ⮡    쬨 32-ࠧ來 -
 ॣ஢,  ࠭ ࠭  ⥪. ࠭ ࠭ -
祭 ESP .

                   ᨨ 樨 IMUL

     ⥫쭮  ଠ 樨 IMUL,  ।ᬮ७ 
஢  8086/80186/80286      80386 ।ᬮ७
 ᠬ 㤮 ଠ 樨 IMUL:  騩 ॣ
 祩   㬭   騩 ॣ,  ⮬
१ ᭮ ࠭    室 ॣ஢. -
, :

        imul    ebx,[edi*4+4]

㬭 ᮤন  ॣ  EBX  祭 ࠧ஬  
᫮, ࠭饥    edi*4+4,  १ ࠭
᭮  ॣ EBX.
        ,   ࠭  ⮩ ଥ 樨
IMUL ।⠢ ᮡ 楫 ॣ.   ࠭  
 16-  32-ࠧ來 騬 ॣ஬.  ன ࠭ 

                              - 7 -

  16-  32-ࠧ來 騬 ॣ஬  祩
.    ࠭  ᮢ.  ᫨ १,
ᬠਢ,  祭  , ᫨誮 , ⮡ 
 뫮 ࠧ  ਥ,  ⠭ 䫠 -
  ९.
       ,    80386  ⠪  -
७    樨  IMUL  ஢ 8086/80186/80286,
ন騥 32-ࠧ來 ࠭.  ਬ,  ᫥饬 
ECX 㬭  1000000000h,  १ ࠭  ॣ
EBP:

        imul    ebp,ecx,100000000h

 ᫥  㬭 ECX  EBX, 뢠 १ 
EDX:EAX:

        imul    ebx

