鱼C论坛

 找回密码
 立即注册
查看: 4152|回复: 9

[汇编作业] 矛盾的检测点9.2

[复制链接]
发表于 2014-9-29 19:28:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
大家且看下面的图片
QQ图片20140929183418.jpg
不知道大家发现问题没有,没有也没关系,且听我道来!

题目的要求是“找到第一个值为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的字节单元,那么要达到目的应该怎么做呢?请大家在下面回复吧!
最后,如果有什么错误的请大家指教,谢谢!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-9-29 20:32:46 | 显示全部楼层
筛选到为0之后,就跳转到OK处,赋值给dx,退出程序
也就是说找到第一个为0之后,就不会再继续筛选了,那就不是您说的“筛选内存单元为0的字节”,就是第一个为0的字节
这个程序没有什么问题吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

发表于 2014-9-29 22:01:02 | 显示全部楼层
我看好像就是莫有问题啊!!!!!!!!!!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-18 21:31:05 | 显示全部楼层
第一个值为0的字节指的是第一次出现的值为0的字节(00H)。。。按LZ的理解方式。。。00-0F应该是前四个值为0的字节(0000 0000 - 0000 1111)。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2015-1-24 11:34:00 | 显示全部楼层
本帖最后由 傲天 于 2015-1-24 11:38 编辑

所以当ch为0时,cl也要为0,所以mov cl,[bx]执行后cl为0才可以,所以说[bx]一定要为0才可以,所以图片中的程序筛选的是内存单元为0的字节,而不是第一个值为0的字节单元.你这句话理解的有点问题,CL是字节型的,[BX]传送的也是字节型,而不是字型了,赋的是00,而不是0000.mov CH,0是清空高位,以后就用不到CH了,现在看的是CL,和CH无关了。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-6-16 14:32:37 | 显示全部楼层
这里的第一个值为0的字节,是一个字节一个字节看的.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-2 14:04:33 | 显示全部楼层
这个程序没有问题,你可以用debug跟一下,建议进入debug之后手动将2000:0前几个字节改成非0的数值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-12-2 17:11:25 | 显示全部楼层
kingfon 发表于 2017-12-2 14:04
这个程序没有问题,你可以用debug跟一下,建议进入debug之后手动将2000:0前几个字节改成非0的数值

兄弟,你在挖坟啊~~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-25 10:58:45 | 显示全部楼层
没问题,虽然jcxz是判断的cx为字单元,题目要求的是字节,但首先重新审题,题干的字节是基于2000h段中的,所以将其赋给了cl,同时ch赋00,这样又可以不违背jcxz的判断定理,又能满足题意
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 20:25:36 | 显示全部楼层
程序没有错啊,“jcxz”跳转的条件就是cx中的数据要为0000H才可以,所以当ch为0是我们赋的值为0,cl是mov cl,[bx]赋的值,所以可以检测到cl,也就是[bx]是否为0,为0就跳转到ok处
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-26 23:15

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表