[汇编] 基于栈的嵌套循环

assume cs:codes,ds:datas,ss:stacks

;没有任何用的数据
datas segment
    db 10H dup (0)
datas ends

;一个普通的栈,貌似也没有用
;调试器显示真正的栈不在这
;我:???
stacks segment
    db 10H dup (0)
stacks ends

codes segment
    ;移动数据进寄存器
    mov ax,datas
    mov ds,ax
    
    ;移动栈进寄存器
    mov ax,stacks
    mov ss,ax
    
    ;结果
    mov bx,0H
    
    ;父循环循环次数
    push 10H
    main:
        ;呼叫子循环
        call sub1
        
        ;恢复父循环
        pop cx
        
        ;父循环循环次数-1
        mov ax,cx
        sub ax,1H
        push ax
        
        loop main
    
    ;退出    
    mov ax,4C00H
    int 21H
    
    ;子循环
    sub1:
        ;子循环循环次数
        push 5H
        
        ;真正的循环体
        sub2:
            add bx,1H
            
            ;恢复子循环
            pop cx
            
            ;子循环循环次数-1
            mov ax,cx
            sub ax,1H
            push ax
            
            loop sub2
            
        ;不pop掉的话会干扰父循环
        pop cx
        
        ;返回父循环
        ret    
codes ends

end
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值