. : : Assembly Language : : .  |  首页  |  我提出的问题  |  我参与的问题  |  我的收藏  |  消息中心   |  游客  登录  | 
刷新 | 提问 | 未解决 | 已解决 | 精华区 | 搜索 |
  《汇编语言》论坛 ->转移指令的原理
  管理员: assembly   [回复本贴] [收藏本贴] [管理本贴] [关闭窗口]
主题 : :  实验九(循环嵌套)  [待解决] 回复[ 6次 ]   点击[ 228次 ]  
ganlian_6666
[帖 主]   [ 发表时间:2011-10-01 19:08 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-26 14:05
assume cs:code

data segment

                db 'welcome to masm!'
                db 02h, 24h, 71h
                
data ends

stack segment

        db 10h dup (0)        ;定义栈空间,用来储存和恢复外层循环次数

stack ends

code segment

start:
                mov ax, data
                mov ds, ax
                
                mov ax, stack
                mov ss, ax
                mov sp, 10h
                
                mov ax, 0b86eh
                mov es, ax                   ;(es) = 显示第一行字符串的段地址 
                
                mov bp, 0
                mov si, 0
                mov cx, 3                     ;初始化相关寄存器
s:
                push cx                       ;保存外层循环的次数!
                mov bx, 0
                mov di, 0
                mov cx, 10h
        s0:
                        mov al, [bx]
                        mov ah, ds:10h[si]
                        mov es:40h[bp][di], ax
                        
                        inc bx
                        add di, 2
                        
                        loop s0                  ;在内层循环中,完成行的输出显示!
                        
                add bp, 0a0h
                inc si
                pop cx                       ;恢复外层循环的次数!

                loop s                                      
                        
                mov ax, 4c00h
                int 21h                       ;程序返回
                
code ends

end start                                   

有不足的地方请大家指出来,谢谢了!
chinatree
[第1楼]   [ 回复时间:2011-10-01 20:32 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
能用1层循环最好了,不过能做出来就是过关。
ganlian_6666
[第2楼]   [ 回复时间:2011-10-01 21:46 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-26 14:05
呵呵,用循环嵌套应该要比一层循环更难吧,有人贴出来了,我就不贴了,我这里只是另一种思路而已
winlau
[第3楼]   [ 回复时间:2011-10-02 12:32 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-09-24 10:53
我發現我跟你的程序寫的差不多,可是就是顯示不出來、、把你的程序複製然後生成exe文件也是顯示不出來、、不知道怎麼回事
chinatree
[第4楼]   [ 回复时间:2011-10-02 14:54 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
有时没有错误的程序也会不显示,我知道的方法有两个可以解决:1,在纯dos环境下运行。2,先用debug加载它,然后输入g+回车,这样就会显示了。毕竟虚拟86模式是xp虚拟出的。
ganlian_6666
[第5楼]   [ 回复时间:2011-10-03 21:25 ]   [引用]   [回复]   [ top ] 
荣誉值:0
信誉值:0
注册日期:2011-05-26 14:05
回复:[第3楼]
------------------
请问你是在win7下运行的吗?
你按楼上的办法做就会显示了
chinatree
[第6楼]   [ 回复时间:2011-10-04 07:27 ]   [引用]   [回复]   [ top ] 
荣誉值:118
信誉值:0
注册日期:2011-07-07 22:59
win7对Dos不兼容。
需要登录后才能回帖 -->> 请单击此处登录
    Copyright © 2006-2024   ASMEDU.NET  All Rights Reserved