汇编指令之CMP, TEST指令

Posted reverse-xiaoyu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编指令之CMP, TEST指令相关的知识,希望对你有一定的参考价值。

一、CMP指令

这一块呢,我不想上图了,汇编的博文我已经快要让我写吐了,其实也有好多我没有补充进来,比如进制,LEA指令,数据宽度,有符号,无符号的区分等等,但我真的要吐了,这些玩意我已经不是第一次写了,也不是第一次看了,以前我是习惯于在EXCEL上写,这一次由于是我对汇编遗忘的有点狠,想从头复习一遍,刚好把这个复习的过程上传到博客园来,于是就有了这些文章,这两条指令,如果有兴趣,大家自己去测试测试吧

 

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,20:23:27。
作者By-----溺心与沉浮----博客园 

 

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

CPM指令相当于SUB,唯一不同的是它不改变操作数或者寄存器的值

该指令是比较两个操作数,实际上,它相当于SUB指令,但是相减的结构并不保存到第一个操作数中。

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

MOV EAX,100

MOV ECX,100

CMP EAX,ECX    观察Z位

 

 MOV EAX,100

 MOV ECX,200

 CMP EAX,ECX    观察S位

 

 CMP AX,WORD PTR DS:[405000]

 CMP AL,BYTE PTR DS:[405000]

 CMP EAX,DWORD PTR DS:[405000]

 

 二、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。

 TEST EAX,EAX    观察Z位

 但是如果EAX的二进制某些位为1的话,那么运算的结果就不为零。

 

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,20:23:27。
作者By-----溺心与沉浮----博客园

以上是关于汇编指令之CMP, TEST指令的主要内容,如果未能解决你的问题,请参考以下文章

Android 逆向x86 汇编 ( cmp 比较指令 | test 比较指令 )

汇编指令学习(CMP,TEST)

16位汇编第六讲汇编指令详解第二讲

8086汇编 cmp 指令

汇编基础 汇编指令

汇编 - CMP 后的 JZ 指令