• 【转】第二课.汇编语言-8086指令、典型函数调用约定


    www.jmpoep.com

    第二课.汇编语言-8086指令、典型函数调用约定
    代课:BambooQJ
    论坛:WwW.JmpOep.CoM


    一.8086 指令
    1.数据传送指令
    MOV
    功能: 把源操作数送给目的操作数
    语法: MOV 目的操作数,源操作数
    格式: MOV r1,r2
    MOV r,m
    MOV m,r
    MOV r,data


    XCHG
    功能: 交换两个操作数的数据
    语法: XCHG
    格式: XCHG r1,r2 XCHG m,r XCHG r,m


    PUSH,POP
    功能: 把操作数压入或取出堆栈
    语法: PUSH操作数POP 操作数
    格式: PUSH r PUSH M PUSH data POP r POP m


    PUSHF,POPF,PUSHA,POPA
    功能:堆栈指令群
    格式: PUSHF POPF PUSHA POPA


    LEA,LDS,LES
    功能: 取地址至寄存器
    语法: LEA r,m LDS r,m LES r,m
    Lea eax,[esp] = mov eax,[esp]
    Lea eax,[esp+4] != mov eax,[esp+4]


    XLAT(XLATB)
    功能:查表指令
    语法: XLAT XLAT m
    MOV BX,2000H ;BX←表首地址
    MOV AL,0BH ;AL←序号
    XLAT ;查表转换

    2.算数运算指令
    ADD,ADC
    功能: 加法指令
    语法: ADD OP1,OP2 ADC OP1,OP2
    格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data
    影响标志: C,P,A,Z,S,O


    SUB,SBB
    功能:减法指令
    语法: SUB OP1,OP2 SBB OP1,OP2
    格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data
    影响标志: C,P,A,Z,S,O


    INC,DEC
    功能: 把OP的值加一或减一
    语法: INC OP DEC OP
    格式: INC r/m DEC r/m
    影响标志: P,A,Z,S,O


    MUL,IMUL
    功能: 乘法指令
    语法: MUL OP IMUL OP
    格式: MUL r/m IMUL r/m
    影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)


    DⅣ,IDⅣ
    功能:除法指令
    语法: DⅣ OP IDⅣ OP
    格式: DⅣ r/m IDⅣ r/m


    3.逻辑运算指令
    NEG
    功能: 将OP的符号反相(取二进制补码)
    语法: NEG OP
    格式: NEG r/m
    影响标志: C,P,A,Z,S,O


    CBW,CWD
    功能:有符号数扩展指令
    语法: CBW CWD


    AAA,AAS,AAM,AAD
    功能: 非压BCD码运算调整指令
    语法: AAA AAS AAM AAD
    影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)


    DAA,DAS
    功能:压缩BCD码调整指令
    语法: DAA DAS
    影响标志: C,P,A,Z,S


    4.位运算集
    AND,OR,XOR,NOT,TEST
    功能: 执行BIT与BIT之间的逻辑运算
    语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m
    影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位


    SHR,SHL,SAR,SAL
    功能:移位指令
    语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL
    影响标志: C,P,Z,S,O


    ROR,ROL,RCR,RCL
    功能: 循环移位指令
    语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL
    影响标志: C,P,Z,S,O


    5.程序流程控制集
    CLC,STC,CMC
    功能: 设定进位标志
    语法: CLC STC CMC
    标志位: C


    CLD,STD
    功能: 设定方向标志
    语法: CLD STD
    标志位: D


    CLI,STI
    功能: 设定中断标志
    语法: CLI STI
    标志位: I


    CMP
    功能: 比较OP1与OP2的值
    语法: CMP r/m,r/m/data
    标志位: C,P,A,Z,O
    为第一个操作减去第二个操作数,
    但不影响第两个操作数的值
    它影响flag的CF,ZF,OF,AF,PF
    我们怎么判断大小呢?
    若执行指令后
    ZF=1 这个简单,则说明两个数相等,因为zero为1说明结果为0
    若SF=1,OF=1则说明了此时的值为负数,有溢出,可以看出oprd1>oprd2


    JMP
    功能: 跳往指定地址执行
    语法: JMP 地址
    JXX
    功能: 当特定条件成立则跳往指定地址执行
    语法: JXX 地址
    注:
    A: ABOVE,当C=0,Z=0时成立
    B: BELOW,当C=1时成立
    C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立
    E: EQUAL,当Z=1时成立
    G: GREATER(大于),当Z=0且S=0时成立
    L: LESS(小于),当S不为零时成立
    N: NOT(相反条件),需和其它符号配合使用
    O: OVERFLOW,O=1时成立
    P: PARITY,P=1时成立
    PE: PARITY EVEN,P=1时成立
    PO: PARITY ODD,P=0时成立
    S: SIGN,S=1时成立
    Z: ZERO,Z=1时成立


    LOOP
    功能: 循环指令集
    语法: LOOP 地址


    LOOPE(Z)
    地址 LOOPNE(Z) 地址
    标志位: 无


    CALL,RET
    功能:子程序调用,返回指令
    语法: CALL 地址 RET RET n
    标志位: 无


    INT,IRET
    功能: 中断调用及返回指令
    语法: INT n IRET
    标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器
    串操作集


    MOVSB,MOVSW,MOVSD
    功能: 字符串传送指令
    语法: MOVSB MOVSW MOVSD
    标志位: 无


    CMPSB,CMPSW,CMPSD
    功能: 字符串比较指令
    语法: CMPSB CMPSW CMPSD
    标志位: C,P,Z,S,O


    SCASB,SCASW
    功能: 字符串搜索指令
    语法:SCASBSCASW
    标志位: C,P,Z,S,O


    LODSB,LODSW,STOSB,STOSW
    功能: 字符串载入或存贮指令
    语法:LODSBLODSWSTOSBSTOSW
    标志位: 无


    REP,REPE,REPNE
    功能: 重复前缀指令集
    语法: REP 指令S REPE 指令S REPNE 指令S
    标志位: 依指令S而定

    二.常见函数调用约定
    常见三种调用约定
    Fastcall Cdecl StdCall
    代表: GCC C/C++/java Win系统API
    Xxx (1,2,3)
    Push 3
    Push 2
    Push 1
    Call xxx

  • 相关阅读:
    lenovo thinkpad e40 is suite for ubuntu 10.04lts
    Ubuntu下思维导图软件Xmind
    myeclipse pluse service & exteration好像老报错,怎么用啊
    svn相关工作
    gssapiauthentication
    Java中的流
    dedecms的include文件夹是干什么的?
    dedecms利用memberlist标签调用自定义会员模型的会员信息
    织梦程序做的网站,会员下载的弹窗问题
    dede中弹出框函数function ShowMsg
  • 原文地址:https://www.cnblogs.com/Lthis/p/4954986.html
Copyright © 2020-2023  润新知