2014-02-19 39 views
3
cmp %al, %cl 
js x 

我很困惑什么是js(在标志上跳)。难道说如果al是正数,cl是负数,反之亦然?JS在Assembly x86中做什么?

此外,如果%cl为0或其中什么都不是,会发生什么?

谢谢!

回答

7

JS如果符号标志被设置(通过较早的指令)将跳转。 CMP将始终通过执行减法来修改标志,在本例中为%al - %cl。 (假设英特尔语法,而不是AT & T)。

由于指令的长度,符号将是表达式%al-%cl(并被丢弃)的位7。

如果%cl == 0,那么临时值将完全是%al,并且符号将是寄存器%al的符号。因此,如果%al为负,则会跳转。

这是所有条件跳转的reference

+0

So al will minus cl;如果al是积极的并且比cl大,你会得到积极的,因此不会跳。但是如果al比cl更积极和更小,那么你会得到负面的,因此跳跃。正确? – user3128376

+0

是的,这是正确的。 (除了“al will minus cl”,我解释为al被修改,但不是 - 对不起,我不是母语为英语的人) –