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

📄 80x86-code.htm

📁 关于单片机接口技术的文档
💻 HTM
📖 第 1 页 / 共 5 页
字号:
        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
          JNP    Jump if No Parity                     PF=0
          JNS    Jump if Not Signed (signed)           SF=0
          JNZ    Jump if Not Zero                      ZF=0
          JO     Jump if Overflow (signed)             OF=1
          JP     Jump if Parity                        PF=1
          JPE    Jump if Parity Even                   PF=1
          JPO    Jump if Parity Odd                    PF=0
          JS     Jump if Signed (signed)               SF=1
          JZ     Jump if Zero                          ZF=1</font></pre>

<pre><font color="#008080">                                 Clocks                 Size
        Operands         808x  286   386   486          Bytes</font></pre>

<pre><font color="#008080">        Jx: jump          16   7+m   7+m    3             2
            no jump        4    3     3     1
        Jx  near-label     -    -    7+m    3             4
            no jump        -    -     3     1</font></pre>

<pre><font color="#008080">        - It's a good programming practice to organize code so the
          expected case is executed without a jump since the actual
          jump takes longer to execute than falling through the test.
        - see   JCXZ  and  JMP  for their respective timings
</font></pre

⌨️ 快捷键说明

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