鱼C论坛

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

[争议讨论] 检测点9.3的一点个人见解

[复制链接]
发表于 2012-4-29 10:53:47 | 显示全部楼层 |阅读模式

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

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

x
补全程序,利用loop指令,实现在内存2000H段中查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中。


assume cs:code

code segment

start:

        mov ax,2000h

        mov ds,ax

        mov bx,0

        s:

                mov cl,[bx]

                mov ch,0

               
inc cx
   ;此条指令为题目要求补全的指令

                inc bx

        loop s

        

        ok:

                dec bx

                mov dx,bx

                mov ax,4c00h

                int 21h

code ends

end start

首先我们要理解的就是  loop 指令执行时它的两个步骤:
(1): (cx) = (cx) - 1
(2):判断 (cx) 是否等于 0 ,如果等于 0 ,则不跳转,继续往下执行程序;如果不等于 0 ,则进行跳转到标号出;

那么,现在我们来看一下习题的程序:
现在假设 (cl) = 0,也就是程序执行完
               
mov cl,[bx]

                mov ch,0
后,(cx) = 0;  
这时,我们希望程序不跳转继续往下执行,是吧。
如果我们没有   
inc cx
  
的话,即
        s:

                mov cl,[bx]

                mov ch,0

                inc bx

        loop s
当执行到  
loop s 时,它就得先执行
(cx) = (cx) - 1 【一开始讲的知识点】;此时  
(cx) = (cx) - 1 = 0 - 1 = -1
也就不等于 0 了,也就是执行跳转了,天啊,不能按照我们的思路让它
继续往下执行了耶!

所以,
inc cx  
的作用很明显了吧,我们在没执行到 loop s 时,执行完
inc cx
后;
(cx) = 1
再到我们执行到
loop s 时;
(cx) = (cx) - 1 = 1 - 1 = 0  
哈哈!
(cx) = 0
啦! 那么 loop 就不会跳转咯,就会按们的的思路
继续往下执行咯!

在这里,个人认为  ok的标号其实是多余的,可以去掉。

明白了嘛!应该很清楚的啦!

好了,我们再来讲一下
dec bx  其实也很简单啦
首先,在
        
            s:

                mov cl,[bx]

                mov ch,0

               
inc cx
   ;此条指令为题目要求补全的指令

                inc bx

        loop s

中,我们已经 执行了
inc bx ,bx 就移到了下一个单元;
但题目要求 “
查找第一个值为0的byte,找到后,将它的偏移地址存储在dx中
”,所以前一个
单元才是我们要找的,所以要
dec bx 回去。

最后,如果还有什么不明白的,可以留言!
亲,如果觉得能帮到你的,记得回下贴哦!你们的回帖,是我前行的动力!

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-3 15:07:54 | 显示全部楼层
努力前行.永不止步.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-2-17 03:36:17 | 显示全部楼层
解释贴,不错不错
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-7-15 15:40:02 | 显示全部楼层
明白了................................
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-5 07:34:20 | 显示全部楼层
好人啊!!!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-5 10:09:37 | 显示全部楼层
解释的很好啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-6 18:38:10 | 显示全部楼层
很好。。支持一下。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-11-4 21:37:01 | 显示全部楼层
解释的很好啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-11 23:14:26 | 显示全部楼层
学习学习再学习
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2014-1-17 17:58:20 | 显示全部楼层
dec bx还不不太懂,为什么放到前一个呢?:dizzy:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-28 17:50

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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