鱼C论坛

 找回密码
 立即注册
查看: 1785|回复: 3

关于课后9.3检测题不太明白

[复制链接]
发表于 2013-10-24 20:10:42 | 显示全部楼层
本帖最后由 LinuxDeepin 于 2013-10-24 20:13 编辑

inc cx 字面意思是 cx 自增 1

从程序执行角度来看,这是为了防止陷入死循环,及产生错误的结果。

mov cl,[bx]  该代码将 ds:[bx] 所指向的内存 字节单元 数值送入 cl 寄存器
loop s         该指令分两个步骤执行,首先 cx 自减 1,然后再来判断 cx 是否为零。为 零 则结束循环,否者继续循环

mov cl,[bx] 所指向的内存单元 数值 为 零,那么 cl 为零,
inc cx          假设把该指令跳过,我们不执行该指令,看看结果会怎么样
inc bx         bx 自增 1
loop s         cx 此时数值为 0,cx 减 1,那么 cx 会等于多少呢? 结果是 FFFF H,判断 cx 不为 零,继续循环
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-10-24 20:12:33 | 显示全部楼层
本帖最后由 LinuxDeepin 于 2013-10-24 20:16 编辑


mov cl,[bx] 所指向的内存单元 数值 为 零,那么 cl 为零,
inc cx          cx 自增 1,此时 cx 数值为 1
inc bx         bx 自增 1
loop s         cx 此时数值为 1,cx 减 1,结果是 0 。判断 cx 为 零,结束循环
dec bx        bx 自减 1,为什么要自减 1 呢?这是因为上面的程序在找到 0 数值的内存单元后,bx 还在自增 1,
                   指向了下一个内存单元,如果你自减 1,那么所指向的就是为 0 内存单元的下一个内存单元地址
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-10-21 03:37

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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