指令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 @ 2024-10-24 19:09  Auriry  阅读(9)  评论(0编辑  收藏  举报