汇编JCC笔记

1. JMP指令:唯一作用是无条件修改EIP的值,没有对栈和寄存器产生影响。

JMP 寄存器/立即数

本质是MOV EIP,寄存器/立即数,EIP只能由JMP指令修改


2. CALL指令:

第一个作用和JMP一样,MOV EIP,寄存器/立即数。

第二个作用,把CALL指令的写一个指令地址push到栈顶(修改ESP)

CALL指令还没执行,怎么知道下一行指令的地址?

根据CALL指令占用的数据宽度,加偏移量去算,比如CALL这条指令,地址0X004183D7中数据为E8 21 00 00 00,有5个字节,下一行指令的地址就是地址偏移5


3.RET

本质是POP EIP

RET指令通常和CALL成对出现,把CALL压栈的地址POP EIP,让程序回归原来的流程


4. CMP指令:该指令是比较两个操作数是否相同

指令格式:CMP R/M,R/M/IMM

相当于SUB指令,但是只会用两个数相减来比较是否相同,相减的结果并不保存在第一个操作数中。

只会根据相减的结果来改变标志位的,当两个操作数相等的时候,零标志位置为1.

MOV EAX,100

MOV ECX,100

CMP EAX,ECX  //只相减比较,判断并修改零标志寄存器,不会把EAX修改为相减结果。


CMP AX,WORD PTR DS:[405000]

CMP AL,BYTE PTR DS:[405000]

CMP EAX,DWORD PTR DS:[405000]


4. TEST指令:

指令格式:TEST R/M,R/M/IMM

该指令和CMP有一定的相似性,两个数值进行与操作,结果也不保存,但是会改变相应标志位。

与操作:1 and 1 =1;1 and 0 = 0; 0 and 1 = 0; 0 and 0 = 0

常见用法:用这个指令,可以确定某寄存器是否等于0,如果EAX的二进制某些位为 1 的话,那么运算的结果就不为零。

TEST EAX,EAX


5.

1. JE,JZ -------jump if equal结果为零则跳转(相等时跳转)-------ZF = 1

例:

CMP EAX,ECX

JZ 0x413f9


1、  JE, JZ         -------------结果为零则跳转(相等时跳转)----------------ZF=1


2、  JNE, JNZ   -------------结果不为零则跳转(不相等时跳转)----------------ZF=0


3、  JS              -------------结果为负则跳转----------------SF=1


4、  JNS           -------------结果为非负则跳转----------------SF=0


5、  JP, JPE     -------------结果中1的个数为偶数则跳转----------------PF=1


6、  JNP, JPO  -------------结果中1的个数为偶数则跳转----------------PF=0


7、  JO            -------------结果溢出了则跳转----------------OF=1


8、  JNO         -------------结果没有溢出则跳转----------------OF=0


9、   JB, JNAE-------------小于则跳转 (无符号数)----------------CF=1


10、 JNB, JAE-------------大于等于则跳转 (无符号数)----------------CF=0


11、  JBE, JNA-------------小于等于则跳转 (无符号数)----------------CF=1 or ZF=1


12、 JNBE, JA-------------大于则跳转(无符号数)----------------CF=0 and ZF=0


13、 JL, JNGE-------------小于则跳转 (有符号数)----------------SF≠ OF


14、 JNL, JGE-------------大于等于则跳转 (有符号数)----------------SF=OF


15、 JLE, JNG-------------小于等于则跳转 (有符号数)----------------ZF=1 or SF≠ OF


16、 JNLE, JG-------------大于则跳转(有符号数)----------------ZF=0 and SF=OF

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值