鱼C论坛

 找回密码
 立即注册
查看: 1858|回复: 2

汇编语言 loop问题

[复制链接]
发表于 2014-8-21 15:26:21 | 显示全部楼层 |阅读模式
10鱼币
本帖最后由 拈花小仙 于 2014-8-21 17:56 编辑

assume cs:code

code segment

       mov ax,2
       mov cx,0   ;我将cx设为0,如果在debug下调式,一直按t,还是会跳转,这是为什么呢?
s:     add ax,ax
       loop s
       mov ax,4c00h
       int 21h

code ends
end


最佳答案

查看完整内容

1. 执行完这条add ax,ax,cx自减1,如果为0则跳出循环,不为0则继续循环。 2. 在这里你将cx先赋值0,那么这条add ax,ax执行完后,cx自减等于-1,计算机按照补码的方式存储负数,也就是FFFF,结果FFFF不为0,继续执行循环,执行FFFF次后才为0。 3. 所以cx是不能赋值为0的,否则会错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-21 15:26:22 | 显示全部楼层
1. 执行完这条add ax,ax,cx自减1,如果为0则跳出循环,不为0则继续循环。
2. 在这里你将cx先赋值0,那么这条add ax,ax执行完后,cx自减等于-1,计算机按照补码的方式存储负数,也就是FFFF,结果FFFF不为0,继续执行循环,执行FFFF次后才为0。
3.  所以cx是不能赋值为0的,否则会错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-21 22:28:54 | 显示全部楼层
1. 执行完这条add ax,ax,cx自减1,如果为0则跳出循环,不为0则继续循环。
2. 在这里你将cx先赋值0,那么这条add ax,ax执行完后,cx自减等于-1,计算机按照补码的方式存储负数,也就是FFFF,结果FFFF不为0,继续执行循环,执行FFFF次后才为0。
3.  所以cx是不能赋值为0的,否则会错的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 10:26

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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