鱼C论坛

 找回密码
 立即注册
查看: 2416|回复: 7

[已解决]循环中可以再嵌入一个循环吗

[复制链接]
发表于 2017-8-15 09:30:08 | 显示全部楼层 |阅读模式

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

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

x
第一个问题如题,第二个问题是王爽第二版程序5.9(PDF版133页)用masm编译怎么总是不成功,图中是我编写的和调试(和书上应该是一样的)出现的问题(operator expected),求解答
最佳答案
2017-8-15 11:03:51
是loop循环吗?可以的,而且经常出现这么写的。
mov ax,4c00h你少了一个“,”
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-8-15 11:03:51 | 显示全部楼层    本楼为最佳答案   
是loop循环吗?可以的,而且经常出现这么写的。
mov ax,4c00h你少了一个“,”
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2017-8-15 20:35:35 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-15 11:03
是loop循环吗?可以的,而且经常出现这么写的。
mov ax,4c00h你少了一个“,”

谢谢大佬,是loop循环,这是我写的3的12次方的程序,其中add ax,bx这三个我想用一个循环,可以帮我看看怎么写吗?非常感谢!!!
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 21:04:49 | 显示全部楼层
本帖最后由 丶忘却的年少o 于 2017-8-15 21:05 编辑
CPU-BOOM 发表于 2017-8-15 20:35
谢谢大佬,是loop循环,这是我写的3的12次方的程序,其中add ax,bx这三个我想用一个循环,可以帮我看看怎 ...


你没理解loop循环的意思,为什么要写3次那,进入循环一次加3,是不是每次进入都是3*n,n是次数。
第二个问题,ax是16个字节,最多只能存2^16=65536,你3^12=531441,存不下的。
  1. assume cs:codesg

  2. codesg segment
  3. start:  
  4.         mov ax, 0
  5.         mov bx, 3
  6.         mov cx, 3
  7.        
  8. s:        add ax, bx
  9.         loop s
  10.                
  11.         mov ax,4c00h
  12.         int 21h
  13. codesg ends
  14. end start
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-15 21:34:36 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-15 21:04
你没理解loop循环的意思,为什么要写3次那,进入循环一次加3,是不是每次进入都是3*n,n是次数。
第二 ...

小白才学有好多不懂,这个例子我自己想的,没考虑到这两个问题,我的意思是能不能嵌入循环,因为loop的循环次数在cs中,可以嵌入loop循环并给cs重复赋值吗?比如在循环s三次add ax,ax后面再加一条指令,这样就不能把cs设成36次来解决了,我想到了可以用两个并列的循环,但因为cs只有一个所以我觉得是不是不可以循环嵌入循环,说了这么多我也不知道我有没有说明白。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 21:45:12 | 显示全部楼层
CPU-BOOM 发表于 2017-8-15 21:34
小白才学有好多不懂,这个例子我自己想的,没考虑到这两个问题,我的意思是能不能嵌入循环,因为loop的循 ...

哦,明白,你的意思是外层循环内能不能再有一个内层循环是不是?这个要用到栈,你要是还没学到先别着急用,因为栈是个复杂又实用的东西,用不好会出错。
大致的原理先和你说一下,以便你后面的学习:就是先定义一个外层循环,然后再定义一个内层循环,但是内层循环第一步必须要把cx入栈,因为循环的次数条件都在cx,外层要用,内层也要用,总不能覆盖了吧。然后内层完了后还要出栈,用于外层判断循环次数。
  1. mov cx, 3
  2.         s:        push cx
  3.                 mov cx, 3
  4.         s1:        add ax, bx
  5.                 loop s1
  6.                 push cx
  7.                 loop s
复制代码

看不懂没关系,后面学下去就知道了,我也才学没多久,认真学就会懂。
还有,最好一个问题一个帖子,这样方便后面学习的同学看到,而且也会有更专业的人来解答
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-15 22:00:42 | 显示全部楼层
丶忘却的年少o 发表于 2017-8-15 21:45
哦,明白,你的意思是外层循环内能不能再有一个内层循环是不是?这个要用到栈,你要是还没学到先别着急用 ...

明白了,谢谢大佬,栈学过了,不过没学具体应用(书上也说很有用),没想到可以这样用,学到了,非常感谢你说的问题我以后会注意的,第一次发帖还不太懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2017-8-15 22:02:38 | 显示全部楼层
CPU-BOOM 发表于 2017-8-15 22:00
明白了,谢谢大佬,栈学过了,不过没学具体应用(书上也说很有用),没想到可以这样用,学到了,非常感谢 ...

其实我也不太懂,真的只是刚学完没多久,不过回答问题多了就感觉总能写出点什么,哈哈哈
加油,你也可以的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 13:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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