C/C++ 您当前所在位置:首页 > C/C++ > 常用汇编指令(四)
常用汇编指令(四)
简介 在目前流行的编程语言下,还有更底层的语言,那就是汇编语言,当然还有更底层的机器语言。汇编语言由一条条指令组成,在分析软件的时候会经常和汇编打交道,所以掌握汇编指令是必须的,介绍几个常用汇编指令。
jmp指令
jmp指令就一句话,无条件修改EIP的值。
call指令
call指令和jmp指令有一个相同点,就是都可以将EIP的值修改。不同的是call指令除了修改EIP外还做了一件事,它将当前行的下一行地址压入堆栈,下一行地址称为返回地址。为什么要将下一行地址压入堆栈呢,因为当call执行完后要返回到它的下一行继续执行。
ret指令
ret指令就相当于pop eip,当call执行完后最后会有一个ret,就是把call指令压入堆栈的那个返回地址重新放回EIP上,让CPU回去继续执行。
cmp指令
cmp指令目标操作数可以是内存或寄存器,源操作数可以是内存或寄存器或立即数,但不能两边都是内存。8位、16位、32位都可以比较,但宽度要一样。
cmp指令和sub指令有些像,sub指令目标操作数减去源操作数再把结果放在目标操作数里,并且还会改变标志寄存器,但cmp指令不会改变目标操作数,只是会改变标志寄存器。
cmp用来判断两个数大小,如果两个数一样大,则只会改变ZF位。如果一个大一个小,则我们可以看SF位。
test指令
test指令目标操作数可以是内存或寄存器,源操作数可以是内存或寄存器或立即数,但不能两边都是内存。8位、16位、32位都可以比较,但宽度要一样。
test指令对两个数值进行与操作,结果也是不保存的,但会改变相应的标志位。我们经常看到test eax,eax这样的指令,它就是判断eax是否为0,因为自己和自己进行与运算,只要自己不是0,那么结果肯定也不是0。
上一篇: 关闭网站响应头中PHP版本信息
下一篇: JCC指令说明
猜你喜欢
点击排行
热门推荐
随机展示
站点信息
- 上线时间:2020年05月30日
- 网站程序:自建框架
- 博客模板:今夕何夕
- 文章统计:43篇文章
- 评论统计:0条评论
- 留言统计:1条留言
- 统计数据:百度统计