指令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相反)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理