|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
大家且看下面的图片
不知道大家发现问题没有,没有也没关系,且听我道来!
题目的要求是“找到第一个值为0的字节,然后将地址放入dx中”也就是说内存单元中的数据00H—0FH都是符合条件的,可是呢?下面的程序只给出了四条横线。如果是四条横线的话,程序只能写成图片中的那样,可是图片中的那样会符合题目的要求么?
首先我们来看第一条指令:
s:mov ch,0
这条指令我想大家应该不难理解它的用意吧(将cx高字节初始化为0)。
我们再来看看第二条指令:
mov cl,[bx]
就是将内存单元中的数据送入cl以判断。
第三条指令:
jcxz ok
判断,如果cx=0那么跳转到标号ok处执行,如果cxnot=0那么向下执行。
第四条指令:
inc bx
bx++以寻找下一个符合条件的数据。
好了,到这里大家看出有什么问题了么?没有的话,请继续往下看!
我们知道“jcxz”跳转的条件就是cx中的数据要为0000H才可以,所以当ch为0时,cl也要为0,所以mov cl,[bx]执行后cl为0才可以,所以说[bx]一定要为0才可以,所以图片中的程序筛选的是内存单元为0的字节,而不是第一个值为0的字节单元,那么要达到目的应该怎么做呢?请大家在下面回复吧!
最后,如果有什么错误的请大家指教,谢谢!!!
|
|