指令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相反)