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

    • 逻辑与指令:
      • 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 内存单元
        • 乘法指令
      • adc-带进位加法指令
        • 利用了CF上记录的进位值
        • adc 操作对象1,操作对象2
          • 功能: 操作对象1=操作对象1+操作对象2+CF
      • sbb-带借位减法指令
        • sbb 操作对象1,操作对象2
          • 功能: 操作对象1=操作对象1-操作对象2-CF
      • cmp 比较指令
        • cmp 操作对象1,操作对象2
        • 功能:计算操作对象1-操作对象2
        • 会影响标志寄存器的值,并不在操作对象中储存,不保存结果
        • 当为有符号数时,还要记住将SF与OF结合判断结果
      • 条件转移指令(一般与可以影响标志寄存器的指令一起使用)
      • 指令缩写含义

        • 形式:jxxx 标号

          • 根据单个标志位
          • 根据无符号数比较结果
        • 实质就是修改IP
      • rep指令(常和串传送指令搭配使用)
        • 根据cx的值,重复执行后面的指令
      • 移位指令
        • 移动位数大于1时,必须用cl
        • 逻辑左移 shl 寄存器 移位大小,最高位移至CF,后面补零
        • 循环左移 rol 寄存器 移位大小
        • 逻辑右移 shr opr,cnt
        • 循环右移 ror opr,cnt
        • 算术左移 sal opr,cnt
        • 算术右移 sar opr,cnt 最高位不会发生变化
        • 带进位循环左移 rcl opr,cnt
        • 带进位循环右移 rcr opr,cnt
    •  

posted on 2023-11-29 21:58  messing  阅读(128)  评论(0编辑  收藏  举报

导航