• x01.os.6: 8086 指令


    M:存储器
    A:累加器
    R:寄存器
    SEGR:段寄存器
    IMM:立即数
    X:标志位状态依运算或操作结果而定
    U:相应标志位未定义
    -:不影响

    数据传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义

    MOV M,A 10(14) 1 3 - A-->M
    MOV A,M 10(14) 1 3 - M-->A
    MOV R1,R2 2 - 2 - R2-->R1
    MOV R,M 8(12)+EA 1 2-4 - M-->R
    MOV M,R 9(3)+EA 1 2-4 - R-->M
    MOV R,IMM 4 - 2-3 - IMM-->R
    MOV M,IMM 10(14)+EA 1 3-6 - IMM-->M
    MOV SEGR,R16 2 - 2 - R16-->SEGR
    MOV SEGR,M 8(12)+EA 1 2-4 - M-->SEGR
    MOV R16,SEGR 2 - 2 - SEGR-->R16
    MOV M,SEGR 9(13)+EA 1 2-4 - SEGR-->M

    LEA R16,M 2+EA - 2-4 - OFFSET M-->R16
    LDS R16,M32 24+EA 2 2-4 - M32 段地址 --> DS, M32 偏移地址 --> R16
    LES R16,M32 24+EA 2 2-4 - M32 段地址 --> ES, M32 偏移地址 --> R16

    SAHF 4 - 1 低8位改变 AH --> FLAG 低8位
    LAHF 4 - 1 - FLAG 低8位 --> AH

    POP R 12 1 1 - 栈顶字 --> R
    POP SEGR(CS非法) 12 1 1 - 栈顶字 --> SEGR
    POP M 25+EA 2 2-4 - 栈顶字 --> M
    POPF 8 1 1 各标志位均改变 栈顶字 --> FLAG

    PUSHF 10 1 1 - FLAGS 进栈
    PUSH R 15 1 1 - R 进栈
    PUSH SEGR(CS非法) 14 1 1 - SEGR 进栈
    PUSH M 24+EA 2 2-4 - M 进栈

    XCHG A,R 3 - 1 - A <--> R
    XCHG R1,R2 4 - 2 - R1 <--> R2
    XCHG M,R 17(25)+EA 2 2-4 - M <--> R

    XLAT 源表 11 1 1 - [BX+AL]-->AL

    IN AL,IMM8 10(14) 1 2 - [IMM8] --> AL
    IN AX,IMM8 10(14) 1 2 - [IMM8+1][IMM8] --> AX
    IN AL,DX 8(12) 1 1 - [DX] --> AL
    IN AX, DX 8(12) 1 1 - [DX+1][DX] --> AX

    OUT IMM8,AL 10(14) 1 2 - AL --> [IMM8]
    OUT IMM8,AX 10(14) 1 2 - AX --> [IMM8],[IMM8+1]
    OUT DX,AL 8(12) 1 1 - AL --> DX
    OUT DX,AX 8(12) 1 1 - AX --> [-DX],[DX+1]

    算术运算指令 时钟数 访问次数 字节数 对标志位影响 指令意义
    O D I T S Z A P C
    ADD R1,R2 3 - 2 X - - - X X X X X R1+R2 --> R1
    ADD R,M 9(13)+EA 1 2-4 X - - - X X X X X R+M --> R
    ADD R,IMM 4 - 3-4 X - - - X X X X X R+IMM --> R
    ADD A,IMM 4 1 2-3 X - - - X X X X X A+IMM --> A
    ADD M,IMM 17(25)+EA 2 3-6 X - - - X X X X X M+IMM --> M
    ADD M,R 16(24)+EA 2 2-4 X - - - X X X X X M+R --> M

    ADC R1,R2 3 - 2 X - - - X X X X X 带进位加:目的操作数 + 源操作数 + 进位标志
    ADC R,M 9(13)+EA 1 2-4 X - - - X X X X X --> 目的操作数
    ADC R,IMM 4 - 3-4 X - - - X X X X X
    ADC A,IMM 4 - 2-3 X - - - X X X X X
    ADC M,IMM 17(25)+EA 2 3-6 X - - - X X X X X
    ADC M,R 16(24)+EA 2 2-4 X - - - X X X X X

    INC R8 3 - 2 X - - - X X X X - R8+1 --> R8
    INC R16 2 - 1 X - - - X X X X - R16+1 -->R16
    INC M 15(23)+EA 2 2-4 X - - - X X X X - M+1 --> M

    AAA 4 - 1 U - - - U U X U X 调整 AL 中非压缩 BCD 之和
    DAA 4 - 1 U - - - X X X X X 调整 AL 中的压缩 BCD 之和

    SUB R1,R2 3 - 2 X - - - X X X X X R1-R2 --> R1
    SUB R,M 9(13)+EA 1 2-4 X - - - X X X X X R-M --> R
    SUB R,IMM 4 - 3-4 X - - - X X X X X R-IMM --> R
    SUB A,IMM 4 - 2-3 X - - - X X X X X A-IMM --> A
    SUB M,IMM 17(25)+EA 2 3-6 X - - - X X X X X M-IMM --> M
    SUB M,R 16(24)+EA 2 2-4 X - - - X X X X X M-R --> M

    SUB R1,R2 3 - 2 X - - - X X X X X 带借位减:目的 - 源 - 进位标志
    SUB R,M 9(13)+EA 1 2-4 X - - - X X X X X --> 目的
    SUB R,IMM 4 - 3-4 X - - - X X X X X
    SUB A,IMM 4 - 2-3 X - - - X X X X X
    SUB M,IMM 17(25)+EA 2 3-6 X - - - X X X X X
    SUB M,R 16(24)+EA 2 2-4 X - - - X X X X X

    DEC R8 3 - 2 X - - - X X X X - R8-1 --> R8
    DEC R16 2 - 1 X - - - X X X X - R16-1 --> R16
    DEC M 15(23)+EA 2 2-4 X - - - X X X X - M-1 --> M

    NEG R 2 - 2 X - - - X X X X X 0-R --> R
    NEG M 16(24)+EA 2 2-4 X - - - X X X X X 0-M --> M

    CMP R1,R2 3 - 2 X - - - X X X X X R1-R2
    CMP R,M 9(13)+EA - 2-4 X - - - X X X X X R-M
    CMP R,IMM 4 - 3-4 X - - - X X X X X R-IMM
    CMP A,IMM 4 - 2-3 X - - - X X X X X A-IMM
    CMP M,IMM 10(14)+EA - 3-6 X - - - X X X X X M-IMM
    CMP M,R 9(13)+EA - 2-4 X - - - X X X X X M-R

    AAS 4 - 1 U - - - U U X U X 调整 AL 中非压缩 BCD 之差
    DAS 4 - 1 X - - - X X X X X 调整 AL 中压缩 BCD 之差

    MUL R8 70-77 - 2 X - - - U U U U X AL*R8 --> AX
    MUL R16 118-133 - 2 X - - - U U U U X AX*R16 --> DX:AX
    MUL M8 (76to83)+EA 1 2-4 X - - - U U U U X AL*M --> AX
    MUL M16 (128to164)+EA 1 2-4 X - - - U U U U X AX*M16 --> DX:AX

    IMUL R8 80-98 - 2 X - - - U U U U X 除参与运算的数为带符合整数外,与 MUL 同
    IMUL R16 128-154 - 2 X - - - U U U U X
    IMUL M8 (86to104)+EA 1 2-4 X - - - U U U U X
    IMUL M16 (138to164)+EA 1 2-4 X - - - U U U U X

    AMM 83 - 1 U - - - X X U X U 调整 AX 中的非压缩 BCD 之积

    <-DIV R8 80-90 - 2 U - - - U U U U U AX/R8 的商,余数 --> AL:AH
    <-DIV R16 144-162 - 2 #:同上 DX:AX/R16 的商,余数 --> AX:DX
    <-DIV M8 (86to92)+EA 1 2-4 # AX/M8 的商,余数 --> AL:AH
    <-DIV M16 (154to172)+EA 1 2-4 # DX:AX/M16 的商,余数 --> AX:DX

    IDIV R8 101-112 - 2 # #:参与运算数为带符号整数
    IDIV R16 165-184 - 2 #
    IDIV M8 (107to118)+EA 1 2-4 #
    IDIV M16 (175to194)+EA 1 2-4 #

    AAD 60 - 2 U - - - X X U X U 将 AX 中的非压缩 BCD 调整,以便除

    CBW 2 - 1 - 若 AL<80H,AH=0,否则 AH=FFH
    CWD 5 - 1 - 若 AX<8000H,DX=0;否则 DX=FFFFH


    逻辑运算指令 时钟数 访问次数 字节数 对标志位影响 指令意义
    O D I T S Z A P C
    NOT R 3 - 2 - !R --> R
    NOT M 16(24)+EA 2 2-4 - !M --> M

    SAL/SHL R,1 2 - 2 X - - - X X U X X [C]<--[7<----0]<--0
    SAL/SHL R,CL 8+4/bit - 2 # 算术,逻辑左移 1 次或 CL 位
    SAL/SHL M,1 15(23)+EA 2 2-4 #
    SAL/SHL M,CL 20(28)+EA+4/bit 2 2-4 # +----+
    | |
    SAR R,1 2 - 2 0 - - - X X U X X +->[C] +-->|7|-->0|---+
    SAR R,CL 8+4/bit - 2 # |_________________________|
    SAR M,1 15(23)+EA 2 2-4 # 算术右移 1 次或 CL 位
    SAR M,CL 20(28)+EA+4/bit 2 2-4 #

    SHR R,1 2 - 2 X - - - X X U X X +->[C] 0->[7-->0]-+
    SHR R,CL 8+4/bit - 2 # |_____________________|
    SHR M,1 15(23)+EA 2 2-4 # 逻辑右移 1 位或 CL 位
    SHR M,CL 20(23)+EA+4/bit 2 2-4 #

    ROL R,1 2 - 2 X - - - - - - - X [C]<--+--[7<--0]<-+
    ROL R,CL 8+4/bit - 2 # |___________|
    ROL M,1 15(23)+EA 2 2-4 # 不通过进位的循环左移 1 位或 CL 位
    ROL M,CL 20(28)+EA+4/bit 2 2-4 #

    ROR R,1 2 - 2 # [C]-+->[7-->0]-+
    ROR R,CL 8+4/bit - 2 # |__________|
    ROR M,1 15(23)+EA 2 2-4 # 不含进位的循环右移 1 位或 CL 位
    ROR M,CL 20(28)+EA+4/bit 2 2-4 #

    RCL R,1 2 - 2 # [C]<--[7<--0]<--+
    RCL R,CL 8+4/bit - 2 # |______________|
    RCL M,1 15(23)+EA 2 2-4 # 含进位的循环左移 1 位或 CL 位
    RCL M,CL 20(28)+EA+4/bit 2 2-4 #

    RCR R,1 2 - 2 # +-->[C]-->[7-->0]-+
    RCR R,CL 8+4/bit - 2 # |_________________|
    RCR M,1 15(23)+EA 2 2-4 # 含进位的循环右移 1 位或 CL 位
    RCR M,CL 20(28)+EA+4/bit 2 2-4 #

    AND R1,R2 3 - 2 0 - - - X X U X 0 R1 & R2 --> R1
    AND R,M 9(13)+EA 1 2-4 # R & M --> R
    AND R,IMM 4 - 3-4 # R & IMM --> R
    AND A,IMM 4 - 2-3 # A & IMM --> A
    AND M,IMM 17(25)+EA 2 3-6 # M & IMM --> M
    AND M,R 16(24)+EA 2 2-4 # M & R --> M

    TEST R1,R2 3 - 2 # R1 & R2
    TEST R,M 9(13)+EA 1 2-4 # R & M
    TEST R,IMM 5 - 3-4 # R & IMM
    TEST A,IMM 4 - 2-3 # A & IMM
    TEST M,IMM 11+EA - 3-6 # M & IMM

    OR R1,R2 3 - 2 # R1 | R2 --> R1
    OR R,M 9(13)+EA 1 2-4 # R | M --> R
    OR R,IMM 4 - 3-4 # R | IMM --> R
    OR A,IMM 4 - 2-3 # A | IMM --> A
    OR M,IMM 17(25)+EA 2 3-6 # M | IMM --> M
    OR M,R 16(24)+EA 2 2-4 # M | R --> M

    XOR R1,R2 3 - 2 # R1 ^ R2 --> R1
    XOR R,M 9(13)+EA 1 2-4 # R ^ M --> R
    XOR R,IMM 4 - 3-4 # R ^ IMM --> R
    XOR A,IMM 4 - 2-3 # A ^ IMM --> A
    XOR M,IMM 17(25)+EA 2 3-6 # M ^ IMM --> M
    XOR M,R 16(24)+EA 2 2-4 # M ^ R --> M

    串操作指令 时钟数 访问次数 字节数 对标志位影响 指令意义
    O D I T S Z A P C
    MOVS 目的串, 源串 18(26) 2 1 - 源串-->目的串,修改源目的串地址
    REP MOVS 目的串,源串 9+17(25)/REP 2/REP 1 - #

    CMPS 目的串,源串 22(30) 2 1 X - - - X X X X X 源串-目的串,
    REP CMPS 目的串,源串 9+22(30)/REP 2/REP 1 # (SI+-1)/(SI+-2),(DI+-1)(DI+-2)

    SCAS 目的串 15(19) 1 1 # (AL-字节串)/(AX-字符串),
    REP SCAS 目的串 9+15(19)/REP 1/REP 1 # (DI+-1)/(DI+-2)

    LODS 源串 12(16) 1 1 - 源串--> AL/AX,
    REP LODS 源串 9+13(17)/REP 1/REP 1 - (SI+-1)/(SI+-2)

    STOS 目的串 11(15) 1 1 - AL-->字节串,AX-->字串,
    REP STOS 目的串 9+10(14)/REP 1/REP 1 - (DI+-1)/(DI+-2)


    控制传送指令 时钟数 访问次数 字节数 对标志位影响 指令意义

    CALL NEAR PROC 19(23) 1 3 - 下同:直接、间接调用近远过程(或子程序)
    CALL FAR PROC 28(36) 2 5 -
    CALL M16 21(29)+EA 2 2-4 -
    CALL M32 37(57)+EA 4 2-4 -
    CALL R16 16(24) 1 2 -

    JMP 短标号 15 - 2 - 下同:无条件转向操作数所指的位置取指令
    JMP NEAR-标号 15 - 3 -
    JMP FAR-标号 15 - 5 -
    JMP M16 18+EA - 2-4 -
    JMP M32 24+EA - 2-4 -
    JMP R16 11 - 2 -

    RET 20 1 1 - 下同:过程,子程序返回。段内,无操作数
    RET 24 1 3 -
    RET 32 2 1 -
    RET 31 2 3 -

    JB/JNAE/JC 短标号 16/4 - 2 - 低于/不高于或等于/有进位(借位时),转向标号行指令
    JAE/JNB/JNC 短标号 16/4 - 2 - 高于或等于/不低于/无进位(借位时),转向标号行指令

    JE/JZ 短标号 16/4 - 2 - 等于/结果为 0 时,转向标号行指令
    JNE/JNZ 短标号 16/4 - 2 - 不等于/结果不为 0 时,转向标号行指令

    JS 短标号 16/4 - 2 - 符号标志 SF 为 1 时,转向短标号行指令
    JNS 短标号 16/4 - 2 - 符号标志位 SF 为 0 时,转向短标号行指令

    JP/JPE 短标号 16/4 - 2 - 奇偶标志 PF 为 1 时,转向标号行指令
    JNP/JPO 短标号 16/4 - 2 - 奇偶标志 PF 为 0 时,转向标号行指令

    JO 短标号 16/4 - 2 - 溢出,转向标号行指令
    JNO 16/4 - 2 - 不溢出,转向标号行指令

    JA/JNBE 短标号 16/4 - 2 - 高于/不低于时,转向标号行指令
    JBE/JNA 短标号 16/4 - 2 - 低于或等于/不高于时,转向标号行指令

    JG/JNLE 短标号 16/4 - 2 - 大于/不小于或等于时,转移
    JGE/JNL 短标号 16/4 - 2 - 大于或等于/不小于时,转移
    JL/JNGE 短标号 16/4 - 2 - 小于/不大于或等于时,转移
    JLE/JNG 短标号 16/4 - 2 - 小于或等于/不等于时,转移
    JCXZ 短标号 18/6 - 2 - CX=0 时,转向标号所指的指令

    LOOP 短标号 17/5 - 2 - 先 CX-1, 若 CX != 0,则循环至标号所指指令
    LOOPE/LOOPZ 短标号 18/6 - 2 - 先 CX-1,若 CX!=0,且 ZF=1,转向标号行指令
    LOOPNE/LOOPNZ 短标号 19/5 - 2 - 先 CX-1,若 CX!=0,且 ZF=0,转向标号行指令

    O D I T S Z A P C
    INT IMM8(中断号=3) 52(72) 5 1 - - 0 0 - - - - - FLAG、CS、IP进栈,将相应中断向量的低字
    INT IMM8(中断号!=3) 51(71) 5 2 # 送 IP,高字送 CS

    INTO 53(73)/4 5 1 # 溢出则FLAG、CS、IP进栈,且中断向量低字
    送 IP,高字送CS,不溢出则顺序执行

    IRET 32(44) 3 1 X X X X X X X X X 中断返回,将栈顶连续三个字内容出栈送
    IP,CS,FLAG

    处理器控制指令 时钟数 访问次数 字节数 指令意义 对标志位影响

    CLS 2 - 1 使标志 CF=0 下同:除对指定标志操作外,对其它标志均无影响
    CMC 2 - 1 使标志 CF 取反
    STC 2 - 1 使 CF=1
    CLD 2 - 1 使标志 DF=0
    STD 2 - 1 使 DF=1
    CLI 2 - 1 使标志 IF=0
    STI 2 - 1 使 IF=1

    HLT 2 - 1 使 CPU 暂停,外中断和复位信号可启动 无

    ESC IMM,M 8(12)+EA 2-4 2-4 主处理器交权给协处理器 无
    ESC IMM,R 2 2 2 # 无

    WAIT 3+5n - 1 等待到 TEST 变为有效时为止 无

    NOP 3 - 1 空操作,只执行 IP+1 无

    LOCK 任一指令 2 - 1 作为任一指令的总线封锁前缀 无

    REP 串操作指令 2 - 1 CX!=0 时,无条件重复其后的指令,直至 CX-1=0 无
    REPE/REPZ 串操作指令 2 - 1 ZF=1 且 CX!=0时,重复执行其后指令,直至 CX-1=0 或 ZF=0 无
    REPNE/REPNZ 串操作指令 # ZF=0 且 CX!=0 时,重复执行其后指令且 CX-1,直至 CX-1=0 或 ZF=1 无

  • 相关阅读:
    使用 RemObjects SDK 建立 WebService 应用
    Excel文件读写的.NET开源组件 Koogra Excel BIFF/XLSX Reader Library
    DataSnap 2009 系列之三 (生命周期篇)
    更改SQL Server表所有者的操作方法
    delphi调用cmd的两种方法
    用AndroidX86和VirtualBox打造高性能Android开发环境
    DevExpress 换肤
    Remobjects关于Channel is Busy 错误的解决方法
    关于D7“System.pas not found”错误的解决方法
    40 套漂亮的图标
  • 原文地址:https://www.cnblogs.com/china_x01/p/3943887.html
Copyright © 2020-2023  润新知