主题:关于跳转语句
fancycgx3650
[专家分:30] 发布于 2006-01-14 21:26:00
CMP A,B 比较A和B的值
TEST A,B 比较A和B的值
CMP和TEST有什么区别?
JB 若小于则跳
JA 若大于则跳
JG 若大于则跳
JL 若小于则跳
JB和JL有什么区别?
JA和JG有什么区别?
望高手指教!
回复列表 (共4个回复)
沙发
jhkdiy [专家分:1620] 发布于 2006-01-14 22:10:00
cmp 执行的是减操作,但不将结果给A,只是根据结果设置标志位。
test 执行的是与操作,同样不影响A。
jb ja 是基于无符号数进行跳转的。
jl jg 是基于有符号数进行跳转的。
板凳
fancycgx3650 [专家分:30] 发布于 2006-01-14 22:15:00
CMP和TEST不是比较操作么,和减操作,与操作有什么关系呢
3 楼
jhkdiy [专家分:1620] 发布于 2006-01-14 22:23:00
它们是比较啊,一个很简单的问题,比较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
我来回复