汇编常用指令(持续更新)

发布时间 2023-11-29 22:02:27作者: messing
  • and dest,src将目标与源做与操作
  • or dest,src将目标与源做或操作
  • add 加得数的值超出范围即会溢出
  • inc 汇编语言中的自增指令,相当于++
  • div指令
    • 不会给出被除数
    • 切记提前在默认的寄存器中设置好被除数,且默认寄存器不做别的用处
  • dup设置内存空间,与db、dw、dd等数据定义伪指令配合使用,进行数据的重复
  • nop的机器码占一个字节,器占位作用,为空
  • jmp指令——无条件转移
    • 可以只修改IP,也可以同时修改CS和IP
    • 需给出信息
      • 转移的目的地址
      • 转移的距离
      • 短转移 jmp short 标号
        • 功能:(ip)=(ip)+八位位移
        • 原理
          • 注意位移的范围,避免转移位移超界
      • 近转移 jmp near ptr 标号
        • 相比于短转移仅是将八位位移转变为16位位移
        • 指明了相对于当前IP的转移位移
      • 远转移 jmp far ptr 标号
        • 指明了跳转到的目的地址,即包含了标号的段地址cs和偏移地址IP
      • jmp 16位寄存器
        • IP =(16位寄存器)
      • 转移地址在内存中的jmp指令
  • jcxz 有条件转移指令(短转移)
    • jcxz 标号(包含转移的位移)
      • (cx)= 0,则转移到标号处执行
      • (cx)!= 0,什么都不做
  • loop循环
    • CX存放循环次数
  • call指令和ret指令
    • call 标号
      • 可以跳转到指定的位置,相当于C语言中的go语句
      • 调用子程序
      • call far ptr 标号
        • 实现段间转移
        • 操作
      • call 16位寄存器
      • call word ptr 内存单元地址
      • call dword ptr 内存单元地址
        • 高地址放段地址,低地址放偏移地址
    • ret指令
      • 与call指令相结合,在call跳转到指定位置执行语句后,加上ret即会返回到call指令的下一条语句
      • 相当于pop IP
      • 也可单独使用
    • retf:用栈中数据修改CS和IP的内容
      • 相当于pop IP pop CS
    • mul 指令做乘法
      • 被乘数同样默认存放
      • 格式
        • mul 寄存器
        • mul 内存单元
      • 乘法指令
  •