Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 汇编jlejmp指令示例_Assembly_X86_Mnemonics - Fatal编程技术网

Assembly 汇编jlejmp指令示例

Assembly 汇编jlejmp指令示例,assembly,x86,mnemonics,Assembly,X86,Mnemonics,你是如何使用说明书的 这就是他们得到的: JL标签 如果它小于或不大于或等于,则“它”将跳转。 我的问题是这句话中的it是什么?假设我在ebx中有一个变量,我想跳转到标签那里:如果ebx是,跳转本身会检查EFL寄存器中的标志。这些通常与测试或CMP一起设置(或作为许多其他指令的副作用) CMP对应于计算操作数的差异,更新标志并丢弃结果。通常用于较大/较小的检查 测试对应于计算操作数的二进制和,更新标志并丢弃结果。通常用于相等性检查 另见: 作为旁注:你应该得到。特别是由两部分组成的“英特尔

你是如何使用说明书的

这就是他们得到的:

JL标签
如果它小于或不大于或等于,则“它”将跳转。
我的问题是这句话中的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
    )==1
  • 如果零标志为1且有符号标志和溢出标志不相等,则将执行短相对跳转

    也许只是一个单词
    CMP
    指令是如何工作的
    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