CPU-BOOM 发表于 2017-8-15 09:30:08

循环中可以再嵌入一个循环吗

第一个问题如题,第二个问题是王爽第二版程序5.9(PDF版133页)用masm编译怎么总是不成功,图中是我编写的和调试(和书上应该是一样的)出现的问题(operator expected),求解答

丶忘却的年少o 发表于 2017-8-15 11:03:51

是loop循环吗?可以的,而且经常出现这么写的。
mov ax,4c00h你少了一个“,”{:10_256:}

CPU-BOOM 发表于 2017-8-15 20:35:35

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

谢谢大佬,是loop循环,这是我写的3的12次方的程序,其中add ax,bx这三个我想用一个循环,可以帮我看看怎么写吗?非常感谢!!!

丶忘却的年少o 发表于 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,存不下的。
assume cs:codesg

codesg segment
start:
        mov ax, 0
      mov bx, 3
        mov cx, 3
       
s:        add ax, bx
        loop s
               
      mov ax,4c00h
      int 21h
codesg ends
end start

CPU-BOOM 发表于 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只有一个所以我觉得是不是不可以循环嵌入循环,说了这么多我也不知道我有没有说明白。{:10_264:}

丶忘却的年少o 发表于 2017-8-15 21:45:12

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

哦,明白,你的意思是外层循环内能不能再有一个内层循环是不是?这个要用到栈,你要是还没学到先别着急用,因为栈是个复杂又实用的东西,用不好会出错。
大致的原理先和你说一下,以便你后面的学习:就是先定义一个外层循环,然后再定义一个内层循环,但是内层循环第一步必须要把cx入栈,因为循环的次数条件都在cx,外层要用,内层也要用,总不能覆盖了吧。然后内层完了后还要出栈,用于外层判断循环次数。
mov cx, 3
        s:        push cx
                mov cx, 3
        s1:        add ax, bx
                loop s1
                push cx
                loop s
看不懂没关系,后面学下去就知道了,我也才学没多久,认真学就会懂。
还有,最好一个问题一个帖子,这样方便后面学习的同学看到,而且也会有更专业的人来解答{:10_242:}

CPU-BOOM 发表于 2017-8-15 22:00:42

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

明白了,谢谢大佬,栈学过了,不过没学具体应用(书上也说很有用),没想到可以这样用,学到了,非常感谢你说的问题我以后会注意的,第一次发帖还不太懂{:10_256:}

丶忘却的年少o 发表于 2017-8-15 22:02:38

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

其实我也不太懂,真的只是刚学完没多久,不过回答问题多了就感觉总能写出点什么,哈哈哈
加油,你也可以的{:10_340:}
页: [1]
查看完整版本: 循环中可以再嵌入一个循环吗