指令2(不完整)2015.1.20

一、CMP指令

MOV EAX,100

MOV ECX,100

CMP EAX,ECX                  这个主要是通过观察Z位来判断EAX和ECX两个数相不相等

先用mov将eax和ecx变成100再进行相减,得到eax为0ecx为100,z位为1

再将eax改成100,把所有标志寄存器改为0,输入指令CMP EAX,ECX

 

只有标志寄存器发生了改变

 

将ECX改成200,标志寄存器全部改为0,再写一行CMP EAX,ECX

主要看S位来判断两个数是否相等且第二个数比第一个数大

二、TEST指令

即EAX为0时TEST EAX,EAX后Z位为1

三、实现JCC的16种跳转(不完整)

1、JE,JZ指令

JE是如果相等则跳转,JZ是Z位为1则跳转

 

 

将EAX,ECX都改为200CMP之后Z位由0变成了1,而Z位变成1后JE 0x004183FA也会跳转到相应位置,但如果将Z位改成0,JE则不会跳转,所以JE、JZ跳转只看标志寄存器Z位为不为1,不看EAXECX

2、JNE,JNZ指令(与JE,JZ相反)

 

 

posted @   Auriry  阅读(13)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示