Assembly 汇编jlejmp指令示例
你是如何使用说明书的 这就是他们得到的: JL标签Assembly 汇编jlejmp指令示例,assembly,x86,mnemonics,Assembly,X86,Mnemonics,你是如何使用说明书的 这就是他们得到的: JL标签 如果它小于或不大于或等于,则“它”将跳转。 我的问题是这句话中的it是什么?假设我在ebx中有一个变量,我想跳转到标签那里:如果ebx是,跳转本身会检查EFL寄存器中的标志。这些通常与测试或CMP一起设置(或作为许多其他指令的副作用) CMP对应于计算操作数的差异,更新标志并丢弃结果。通常用于较大/较小的检查 测试对应于计算操作数的二进制和,更新标志并丢弃结果。通常用于相等性检查 另见: 作为旁注:你应该得到。特别是由两部分组成的“英特尔
如果它小于或不大于或等于,则“它”将跳转。
我的问题是这句话中的it是什么?假设我在
ebx
中有一个变量,我想跳转到标签那里:
如果ebx
是,跳转本身会检查EFL寄存器中的标志。这些通常与测试或CMP一起设置(或作为许多其他指令的副作用)
- CMP对应于计算操作数的差异,更新标志并丢弃结果。通常用于较大/较小的检查
- 测试对应于计算操作数的二进制和,更新标志并丢弃结果。通常用于相等性检查
另见:
作为旁注:你应该得到。特别是由两部分组成的“英特尔64和IA-32体系结构软件开发人员手册第2卷:指令集参考”,其中描述了所有x86指令。x86程序集使用表示比较结果的位标志系统。条件跳转指令在决定是否执行跳转时使用这些标志
CMP ebx,10
JLE there
在您的情况下,您将使用以下两个说明:
cmp ebx, 10 ; compare EBX and 10
jle label ; jump if the previous comparison is "less than or equal"
…
label:
…
JLE
说明执行两项测试:
- 签名标志(
SF
)!=溢出标志(
的)
ZF
)==1CMP
指令是如何工作的CMP
指令类似于SUB
(减法),但执行后目标寄存器不会更新。因此,下面的代码将执行与CMP ebx,10类似的结果。CMP和SUB指令影响标志:进位、奇偶校验、辅助、零、符号和溢出标志
push ebx //store ebx value to stack
sub ebx, 10
pop ebx //restore ebx value from stack
JB-使用无符号数字(跳到下面)-1 jb butter//如果使用jb,将发生跳转,cus 0<255
在本例中,JLE是在10小于或等于ebx时跳转,还是在ebx小于或等于10时跳转?@AndersonGreen它在ebx的内容为@AndersonGreen时跳转:Intel选择了助记符,因此
cmp x,y
/jcc
与x对齐
mov bx,0 // BX := 0
cmp bx,FF // 0 < -1 or 0 < 255 (Jump Flag and Sign Flag will change)
jl butter // if you use JL jump will not occurs, cus 0 > -1
jb butter // if you use JB jump will occurs, cus 0 < 255