回 帖 发 新 帖 刷新版面

主题:关于跳转语句

CMP A,B    比较A和B的值
TEST A,B   比较A和B的值
CMP和TEST有什么区别?
             
JB 若小于则跳
JA 若大于则跳
JG 若大于则跳  
JL 若小于则跳

JB和JL有什么区别?
JA和JG有什么区别?
望高手指教!

回复列表 (共4个回复)

沙发

cmp 执行的是减操作,但不将结果给A,只是根据结果设置标志位。
test 执行的是与操作,同样不影响A。

jb ja 是基于无符号数进行跳转的。
jl jg 是基于有符号数进行跳转的。

板凳

CMP和TEST不是比较操作么,和减操作,与操作有什么关系呢

3 楼

它们是比较啊,一个很简单的问题,比较5 和 2。如果是人的思维一眼就看出来了,但计算机可没有自己的思维和眼睛啊。哪怎么比较啊?
5-2 = 3 > 0 表示第一个数大于第二个数
3-6 = -3 < 0 表示第一个数小于第二个数
5-5 = 0      表示第一个数等于第二个数
cmp 执行的就是这种操作,两个数相减,如果等于0则设置零标志ZF=1。

test 执行的是与操作,例如5的二进制位0101,2是0010,CPU执行
   0101
  &0010
--------
=  0000    设置ZF =1

4 楼

明白了,谢谢!!

我来回复

您尚未登录,请登录后再回复。点此登录或注册