鱼C论坛

 找回密码
 立即注册
查看: 6223|回复: 21

对于小甲鱼的汇编视频有个疑问(视频:24)

[复制链接]
发表于 2011-6-28 20:40:19 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 张国祥 于 2011-6-28 22:34 编辑

小甲鱼说,add ax,ax循环了11次。
但是,第一次执行add ax,ax时, 不叫做循环吧?
loop循环是先cx-1再执行循环,就是说减到0后,loop s将不执行循环。
源码:
  1. assume cs:code

  2. code segment

  3. mov ax,2

  4. mov cx,11

  5. s:add ax,ax

  6. loop s



  7. mov ax,4c00h

  8. int 21h

  9. code ends

  10. end
复制代码


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-28 20:41:28 | 显示全部楼层
我的疑问就是小甲鱼的说法,循环应该是10次,第一次执行 add ax,ax时不叫循环!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 21:08:21 | 显示全部楼层

前面的两段代码 和后面的两段代码都是什么啊 我怎么没学过啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-28 21:33:55 | 显示全部楼层
再生缘 发表于 2011-6-28 21:08
前面的两段代码 和后面的两段代码都是什么啊 我怎么没学过啊

额,你学到那里了?这个是第五章的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:22:36 | 显示全部楼层
本帖最后由 服气 于 2011-6-28 22:23 编辑

这个应该没有明确的定义吧 楼主不用这么较真吧 反正自己知道他能执行几次就行了么= =?
我学过一点汇编- - 最近准备看甲鱼老师的视频 ..........

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-28 22:25:03 | 显示全部楼层
服气 发表于 2011-6-28 22:22
这个应该没有明确的定义吧 楼主不用这么较真吧 反正自己知道他能执行几次就行了么= =?
我学过一点汇编- - ...

你说的没错,但是现在较真一点以后出错也就会少一点啦`
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:33:23 | 显示全部楼层
恩 这个应该是以自己的习惯为标准吧  没硬性的规定 - - 去MSDN查查吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:33:23 | 显示全部楼层
张国祥 发表于 2011-6-28 22:25
你说的没错,但是现在较真一点以后出错也就会少一点啦`

哦 还没学到第五章呢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-28 22:41:29 | 显示全部楼层
CX是几 就是几次循环,关于循环到底几次,只认CX里的值
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 10:38:33 | 显示全部楼层
還未學到噶路過
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-29 11:46:22 | 显示全部楼层
本帖最后由 king嗜血法师 于 2011-6-29 11:51 编辑

其实这个很好理解,因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了。
你可以去试一下,如果CX为0的时候去执行循环CX会变成FFFFH,借位了。相当于循环10000H次了。
如果是CX是1,那就正好,loop  CX-1,CX=0,跳出循环。那就是只执行了一次。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-6-29 12:35:09 | 显示全部楼层
king嗜血法师 发表于 2011-6-29 11:46
其实这个很好理解,因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了。
你可 ...

我觉得你说的不对:
因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了
第一次执行  s: ……  不能算作循环!只是按代码顺序执行的!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-6-30 00:54:58 | 显示全部楼层
又不是死脑筋````应该学会变通。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-1 16:39:30 | 显示全部楼层
小甲鱼说,add ax,ax循环了11次。

你就认为哪个循环就叫做执行吧。。别纠结了 。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-1 17:10:08 | 显示全部楼层
如果没有loop,它就按顺序执行,
如果有了loop,它就以CX为循环次数,就将中间执行的指令,做为已循环的。
主要看有没有loop了,慢慢你就了解了,我之前也很纠结这个。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-12 20:17:12 | 显示全部楼层
纠正一下,LOOP循环是先循环后减1,当CX=1时就不循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-12 20:25:39 | 显示全部楼层
第一次执行add ax,ax时 那就叫循环,如果不相信的话,你把CX设置为1看下~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-7-12 21:45:54 | 显示全部楼层
sdlicong 发表于 2011-7-12 20:25
第一次执行add ax,ax时 那就叫循环,如果不相信的话,你把CX设置为1看下~~

loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-13 03:06:40 | 显示全部楼层
张国祥 发表于 2011-7-12 21:45
loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了

有图为证,自已看
1CS`2XW(7%6I1HD7{%C8YS2.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-7-13 03:22:33 | 显示全部楼层
张国祥 发表于 2011-7-12 21:45
loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了

另外,你可以将CX设为0,你可能会说他不进行循环,其实设为0他会进行FFFF次循环~~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-4-20 16:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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