⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 80x86-code.htm

📁 这里面是各种总线的定义
💻 HTM
📖 第 1 页 / 共 5 页
字号:
        mem8     (107-118)+EA   20    22    20           2-4

        mem16    (171-190)+EA   38    30    28           2-4  (W88=175-194)

        mem32            -      -     46    44           2-4

&#12;IMUL - Signed Multiply</font></pre>



<pre><font color="#008080">        Usage:  IMUL    src

                IMUL    src,immed        (286+)

                IMUL    dest,src,immed8  (286+)

                IMUL    dest,src         (386+)

        Modifies flags: CF OF (AF,PF,SF,ZF undefined)</font></pre>



<pre><font color="#008080">        Signed multiplication of accumulator by &quot;src&quot; with result placed

        in the accumulator.  If the source operand is a byte value, it

        is multiplied by AL and the result stored in AX.  If the source

        operand is a word value it is multiplied by AX and the result is

        stored in DX:AX.  Other variations of this instruction allow

        specification of source and destination registers as well as a

        third immediate factor.</font></pre>



<pre><font color="#008080">                                  Clocks                Size

        Operands         808x   286   386   486         Bytes</font></pre>



<pre><font color="#008080">        reg8             80-98   13   9-14  13-18         2

        reg16           128-154  21   9-22  13-26         2

        reg32              -     -    9-38  12-42         2

        mem8             86-104  16  12-17  13-18        2-4

        mem16           134-160  24  12-25  13-26        2-4

        mem32              -     -   12-41  13-42        2-4

        reg16,reg16        -     -    9-22  13-26        3-5

        reg32,reg32        -     -    9-38  13-42        3-5

        reg16,mem16        -     -   12-25  13-26        3-5

        reg32,mem32        -     -   12-41  13-42        3-5

        reg16,immed        -     21   9-22  13-26         3

        reg32,immed        -     21   9-38  13-42        3-6

        reg16,reg16,immed  -     2    9-22  13-26        3-6

        reg32,reg32,immed  -     21   9-38  13-42        3-6

        reg16,mem16,immed  -     24  12-25  13-26        3-6

        reg32,mem32,immed  -     24  12-41  13-42        3-6

</font></pre>



<pre><font color="#008080">IN - Input Byte or Word From Port</font></pre>



<pre><font color="#008080">        Usage:  IN      accum,port

        Modifies flags: None</font></pre>



<pre><font color="#008080">        A byte, word or dword is read from &quot;port&quot; and placed in AL, AX or

        EAX respectively.  If the port number is in the range of 0-255

        it can be specified as an immediate, otherwise the port number

        must be specified in DX.  Valid port ranges on the PC are 0-1024,

        though values through 65535 may be specified and recognized by

        third party vendors and PS/2's.</font></pre>



<pre><font color="#008080">                                 Clocks                 Size

        Operands         808x  286   386    486         Bytes</font></pre>



<pre><font color="#008080">        accum,immed8    10/14   5     12     14           2

        accum,immed8 (PM)            6/26  8/28/27        2

        accum,DX         8/12   5     13     14           1

        accum,DX (PM)                7/27  8/28/27        1</font></pre>



<pre><font color="#008080">        - 386+ protected mode timings depend on privilege levels.</font></pre>



<pre><font color="#008080">          first number is the timing if:    CPL ?IOPL

          second number is the timing if:   CPL &gt; IOPL or in VM 86 mode (386)

                                            CPL ?IOPL  (486)

          third number is the timing when:    virtual mode on 486 processor

        - 486 virtual mode always requires 27 cycles

&#12;INC - Increment</font></pre>



<pre><font color="#008080">        Usage:  INC     dest

        Modifies flags: AF OF PF SF ZF</font></pre>



<pre><font color="#008080">        Adds one to destination unsigned binary operand.</font></pre>



<pre><font color="#008080">                                 Clocks                 Size

        Operands         808x  286   386   486          Bytes</font></pre>



<pre><font color="#008080">        reg8              3     2     2     1             2

        reg16             3     2     2     1             1

        reg32             3     2     2     1             1

        mem             15+EA   7     6     3            2-4  (W88=23+EA)

</font></pre>



<pre><font color="#008080">INS - Input String from Port  (80188+)</font></pre>



<pre><font color="#008080">        Usage:  INS     dest,port

                INSB

                INSW

                INSD    (386+)

        Modifies flags: None</font></pre>



<pre><font color="#008080">        Loads data from port to the destination ES:(E)DI  (even if a

        destination operand is supplied).  (E)DI is adjusted by the size

        of the operand and increased if the Direction Flag is cleared and

        decreased if the Direction Flag is set.  For INSB, INSW, INSD no

        operands are allowed and the size is determined by the mnemonic.</font></pre>



<pre><font color="#008080">                                 Clocks                 Size

        Operands         808x  286   386    486         Bytes</font></pre>



<pre><font color="#008080">        dest,port         -     5     15     17           1

        dest,port (PM)    -     5    9/29 10/32/30        1

        none              -     5     15     17           1

        none (PM)         -     5    9/29 10/32/30        1</font></pre>



<pre><font color="#008080">        - 386+ protected mode timings depend on privilege levels.</font></pre>



<pre><font color="#008080">          first number is the timing if:    CPL ?IOPL

          second number is the timing if:   CPL &gt; IOPL

          third number is the timing if:    virtual mode on 486 processor

</font></pre>



<pre><font color="#008080">INT - Interrupt</font></pre>



<pre><font color="#008080">        Usage:  INT     num

        Modifies flags: TF IF</font></pre>



<pre><font color="#008080">        Initiates a software interrupt by pushing the flags, clearing the

        Trap and Interrupt Flags, pushing CS followed by IP and loading

        CS:IP with the value found in the interrupt vector table.  Execution

        then begins at the location addressed by the new CS:IP</font></pre>



<pre><font color="#008080">                                               Clocks           Size

            Operands                    808x  286   386   486   Bytes</font></pre>



<pre><font color="#008080"> 3 (constant)                          52/72  23+m   33    26     2

 3 (prot. mode, same priv.)              -    40+m   59    44     2       

 3 (prot. mode, more priv.)              -    78+m   99    71     2

 3 (from VM86 to PL 0)                   -     -    119    82     2

 3 (prot. mode via task gate)            -   167+m   TS  37+TS    2

 immed8                                51/71  23+m   37    30     1

 immed8 (prot. mode, same priv.)         -    40+m   59    44     1

 immed8 (prot. mode, more priv.)         -    78+m   99    71     1

 immed8 (from VM86 to PL 0)              -     -    119    86     1

 immed8 (prot. mode, via task gate)      -   167+m   TS  37+TS    1

&#12;INTO - Interrupt on Overflow</font></pre>



<pre><font color="#008080">        Usage:  INTO

        Modifies flags: IF TF</font></pre>



<pre><font color="#008080">        If the Overflow Flag is set this instruction generates an INT 4

        which causes the code addressed by 0000:0010 to be executed.</font></pre>



<pre><font color="#008080">                                          Clocks           Size

        Operands                808x    286   386   486    Bytes</font></pre>



<pre><font color="#008080">        none: jump             53/73   24+m    35    28      1

              no jump            4       3     3     3

        (prot. mode, same priv.) -       -     59    46      1

        (prot. mode, more priv.) -       -     99    73      1

        (from VM86 to PL 0)      -       -    119    84      1

        (prot. mode, via task gate)      -     TS  39+TS     1

</font></pre>



<pre><font color="#008080">INVD - Invalidate Cache  (486+)</font></pre>



<pre><font color="#008080">        Usage:  INVD

        Modifies flags: none</font></pre>



<pre><font color="#008080">        Flushes CPU internal cache.  Issues special function bus cycle

        which indicates to flush external caches.   Data in write-back

        external caches is lost.

        </font></pre>



<pre><font color="#008080">                                  Clocks                Size

        Operands         808x   286   386   486         Bytes</font></pre>



<pre><font color="#008080">        none              -      -     -     4            2

</font></pre>



<pre><font color="#008080">INVLPG - Invalidate Translation Look-Aside Buffer Entry (486+)</font></pre>



<pre><font color="#008080">        Usage:  INVLPG

        Modifies flags: none</font></pre>



<pre><font color="#008080">        Invalidates a single page table entry in the Translation

        Look-Aside Buffer.  Intel warns that this instruction may be

        implemented differently on future processors.

        </font></pre>



<pre><font color="#008080">                                  Clocks                Size

        Operands         808x   286   386   486         Bytes</font></pre>



<pre><font color="#008080">        none              -      -     -     12           2</font></pre>



<pre><font color="#008080">        - timing is for TLB entry hit only.

</font></pre>



<pre><font color="#008080">IRET/IRETD - Interrupt Return</font></pre>



<pre><font color="#008080">        Usage:  IRET

                IRETD  (386+)

        Modifies flags: AF CF DF IF PF SF TF ZF</font></pre>



<pre><font color="#008080">        Returns control to point of interruption by popping IP, CS

        and then the Flags from the stack and continues execution at

        this location.  CPU exception interrupts will return to the

        instruction that cause the exception because the CS:IP placed

        on the stack during the interrupt is the address of the offending

        instruction.</font></pre>



<pre><font color="#008080">                                         Clocks                 Size

            Operands            808x   286   386   486          Bytes</font></pre>



<pre><font color="#008080">    iret                       32/44  17+m    22    15            1

    iret  (prot. mode)           -    31+m    38    15            1

    iret  (to less privilege)    -    55+m    82    36            1

    iret  (different task, NT=1) -   169+m    TS  TS+32           1

    iretd                        -      -   22/38   15            1

    iretd (to less privilege)    -      -     82    36            1

    iretd (to VM86 mode)         -      -     60    15            1

    iretd (different task, NT=1) -      -     TS  TS+32           1</font></pre>



<pre><font color="#008080">    - 386 timings are listed as real-mode/protected-mode

&#12;Jxx - Jump Instructions Table</font></pre>



<pre><font color="#008080">        Mnemonic              Meaning                    Jump Condition</font></pre>



<pre><font color="#008080">          JA     Jump if Above                         CF=0 and ZF=0

          JAE    Jump if Above or Equal                CF=0

          JB     Jump if Below                         CF=1

          JBE    Jump if Below or Equal                CF=1 or ZF=1

          JC     Jump if Carry                         CF=1

          JCXZ   Jump if CX Zero                       CX=0

          JE     Jump if Equal                         ZF=1

          JG     Jump if Greater (signed)              ZF=0 and SF=OF

          JGE    Jump if Greater or Equal (signed)     SF=OF

          JL     Jump if Less (signed)                 SF != OF

          JLE    Jump if Less or Equal (signed)        ZF=1 or SF != OF

          JMP    Unconditional Jump                    unconditional

          JNA    Jump if Not Above                     CF=1 or ZF=1

          JNAE   Jump if Not Above or Equal            CF=1

          JNB    Jump if Not Below                     CF=0

          JNBE   Jump if Not Below or Equal            CF=0 and ZF=0

          JNC    Jump if Not Carry                     CF=0

          JNE    Jump if Not Equal                     ZF=0

          JNG    Jump if Not Greater (signed)          ZF=1 or SF != OF

          JNGE   Jump if Not Greater or Equal (signed) SF != OF

          JNL    Jump if Not Less (signed)             SF=OF

          JNLE   Jump if Not Less or Equal (signed)    ZF=0 and SF=OF

          JNO    Jump if Not Overflow (signed)         OF=0

          JN

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -