鱼C论坛

 找回密码
 立即注册
查看: 3704|回复: 4

关于检测点9.1jmp指令的用法

[复制链接]
发表于 2012-2-24 21:13:24 | 显示全部楼层 |阅读模式
1鱼币
本人是汇编新手,现在看到关于jmp指令的运用,遇到不懂的地方,请大家帮我解决一下。
检测点9.1那三题不会做,还请您把详细过程教授给我,在这谢谢你们了。

最佳答案

查看完整内容

当()=0时,我们就找到了第一个值为0的字符,然后(cl)=()=0 cx=0,然后是我们填程序的地方,如果我们能用jcxz指令。再看转移到标号ok之后的指令,bx自减1,然后才是dx=bx,那么bx就不是“0”的偏移地址了,所以此处不能用jcxz。那么以cx=0为条件的转移指令还有什么呢?那就是loop了,loop是当cx不等于0时转移,cx=0时继续下条指令。程序中已经有个loop了,当cx=0时CPU就会执行loop后面一条指令,即bx自减1。这么来看此处似乎不需要 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-2-24 21:13:25 | 显示全部楼层
当([bx])=0时,我们就找到了第一个值为0的字符,然后(cl)=([bx])=0  cx=0,然后是我们填程序的地方,如果我们能用jcxz指令。再看转移到标号ok之后的指令,bx自减1,然后才是dx=bx,那么bx就不是“0”的偏移地址了,所以此处不能用jcxz。那么以cx=0为条件的转移指令还有什么呢?那就是loop了,loop是当cx不等于0时转移,cx=0时继续下条指令。程序中已经有个loop了,当cx=0时CPU就会执行loop后面一条指令,即bx自减1。这么来看此处似乎不需要填什么东西程序就能满足要求了。但是loop循环的关键是CX,CPU对loop的执行过程是:读取指令loop s → ip=ip+2 → (cx)=(cx)-1 → 判断cx是否为零 →cx不为零则ip指向标号S,cx等于零,则ip不变,读取下一条指令。所以当此程序CX=0时,loop命令会先令cx-1=-1再判断cx是否为零,我们为了使cx-1之后仍然为零让loop后不跳转,那么此处我们应该填入:add cx,1
或者 inc cx
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-2-27 09:46:47 | 显示全部楼层

非常感谢你的帮助。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-2-27 23:57:08 | 显示全部楼层
建议你仔细挺好小甲鱼针对这章内容的讲解后再来做题,另外,如果真的想寻求帮助,建议你把具体哪里不懂的地方说明,也好我们来共同商议答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-3-2 13:57:00 | 显示全部楼层
非同凡想 发表于 2012-2-27 23:57
建议你仔细挺好小甲鱼针对这章内容的讲解后再来做题,另外,如果真的想寻求帮助,建议你把具体哪里不懂的地 ...

嗯嗯。好的。谢谢你的建议哦。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-19 20:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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