张国祥 发表于 2011-6-28 20:40:19

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

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

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

code segment

mov ax,2

mov cx,11

s:add ax,ax

loop s



mov ax,4c00h

int 21h

code ends

end

张国祥 发表于 2011-6-28 20:41:28

我的疑问就是小甲鱼的说法,循环应该是10次,第一次执行 add ax,ax时不叫循环!

再生缘 发表于 2011-6-28 21:08:21

张国祥 发表于 2011-6-28 20:41 static/image/common/back.gif
我的疑问就是小甲鱼的说法,循环应该是10次,第一次执行 add ax,ax时不叫循环!

前面的两段代码 和后面的两段代码都是什么啊 我怎么没学过啊

张国祥 发表于 2011-6-28 21:33:55

再生缘 发表于 2011-6-28 21:08 static/image/common/back.gif
前面的两段代码 和后面的两段代码都是什么啊 我怎么没学过啊

额,你学到那里了?这个是第五章的

服气 发表于 2011-6-28 22:22:36

本帖最后由 服气 于 2011-6-28 22:23 编辑

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

张国祥 发表于 2011-6-28 22:25:03

服气 发表于 2011-6-28 22:22 static/image/common/back.gif
这个应该没有明确的定义吧 楼主不用这么较真吧 反正自己知道他能执行几次就行了么= =?
我学过一点汇编- - ...

你说的没错,但是现在较真一点以后出错也就会少一点啦`

服气 发表于 2011-6-28 22:33:23

恩 这个应该是以自己的习惯为标准吧没硬性的规定 - - 去MSDN查查吧

再生缘 发表于 2011-6-28 22:33:23

张国祥 发表于 2011-6-28 22:25 static/image/common/back.gif
你说的没错,但是现在较真一点以后出错也就会少一点啦`

哦 还没学到第五章呢

幕府幽魂 发表于 2011-6-28 22:41:29

CX是几 就是几次循环,关于循环到底几次,只认CX里的值

binboys 发表于 2011-6-29 10:38:33

還未學到噶路過

king嗜血法师 发表于 2011-6-29 11:46:22

本帖最后由 king嗜血法师 于 2011-6-29 11:51 编辑

其实这个很好理解,因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了。
你可以去试一下,如果CX为0的时候去执行循环CX会变成FFFFH,借位了。相当于循环10000H次了。
如果是CX是1,那就正好,loopCX-1,CX=0,跳出循环。那就是只执行了一次。

张国祥 发表于 2011-6-29 12:35:09

king嗜血法师 发表于 2011-6-29 11:46 static/image/common/back.gif
其实这个很好理解,因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了。
你可 ...

我觉得你说的不对:
因为loop是先CX-1,在判断CX是不是为0,就相当于当前的代码已经执行过一次循环了
第一次执行s: ……不能算作循环!只是按代码顺序执行的!

king嗜血法师 发表于 2011-6-30 00:54:58

又不是死脑筋````应该学会变通。

ギ无訫_ 发表于 2011-7-1 16:39:30

小甲鱼说,add ax,ax循环了11次。

你就认为哪个循环就叫做执行吧。。别纠结了 。。

liuhui88126 发表于 2011-7-1 17:10:08

如果没有loop,它就按顺序执行,
如果有了loop,它就以CX为循环次数,就将中间执行的指令,做为已循环的。
主要看有没有loop了,慢慢你就了解了,我之前也很纠结这个。

sdlicong 发表于 2011-7-12 20:17:12

纠正一下,LOOP循环是先循环后减1,当CX=1时就不循环了

sdlicong 发表于 2011-7-12 20:25:39

第一次执行add ax,ax时 那就叫循环,如果不相信的话,你把CX设置为1看下~~

张国祥 发表于 2011-7-12 21:45:54

sdlicong 发表于 2011-7-12 20:25 static/image/common/back.gif
第一次执行add ax,ax时 那就叫循环,如果不相信的话,你把CX设置为1看下~~

loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了

sdlicong 发表于 2011-7-13 03:06:40

张国祥 发表于 2011-7-12 21:45 static/image/common/back.gif
loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了

有图为证,自已看

sdlicong 发表于 2011-7-13 03:22:33

张国祥 发表于 2011-7-12 21:45 static/image/common/back.gif
loop并没有起到效果,因为这样的话,因为loop判定时,cx=0了,就不会执行循环了

另外,你可以将CX设为0,你可能会说他不进行循环,其实设为0他会进行FFFF次循环~~
页: [1] 2
查看完整版本: 对于小甲鱼的汇编视频有个疑问(视频:24)