汇编网首页登录博客注册
kingwrcy的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
文章收藏
友情链接

[2009-04-13 15:50] 实验九

此题没啥难度.自己肯花时间多调就一定ok,贴出我的方法.可能有些繁琐.不过结果ok.呵呵.


assume ss:stack

stack segment

        db 32 dup (0) ;中转栈
        
        dw 0          ;保存cx计数器
        
stack ends

data segment
   
   dw 'w','e','l','c','o','m','e',' ','t','o',' ','m','a','s','m','!'

   db 00000010b,00100100b,01110001b ;三种颜色
   
data ends

code segment

start:

                mov ax,stack
                
                mov ss,ax
                
                mov sp,32
                
                mov ax,data
                
                mov ds,ax
                
                mov ax,0B872H                        ;屏幕的正中间是第11行第64个字符.一共25行.就是0-24行.除去要显示的3行.还22行.所以就是0-10行,11-13,14-24
                
                                                                                                                 ;一列共80个字.160个字节.除去要显示的welcome to masm!+颜色=32个字节.还128个字节.所以就是第64个字节开始.
                
                mov es,ax
                
                mov di,0
                
                mov cx,3
                
                mov bp,32
        s3:
                mov ss:[32],cx
                
                mov bx,30
                
                mov si,31
                
                mov cx,16
                
                
                s: push ds:[bx]                    ;把welcome to masm! 逆序入栈,并把对应的颜色代码也全部mov进去
                
                        mov al,ds:[bp]
                
                        mov BYTE  ptr ss:[si],al
                        
                        sub bx,2
                        
                        sub si,2
                        
                        loop s
                        
                        mov cx,16
                        
                        mov bx,0
                        
                s1:pop es:[bx+di]                   ;顺序出栈.一行Welcome to masm!就搞定.
                
                        add bx,2
                
                        loop s1
        
                add di,0A0H
                
                mov cx,ss:[32]
                
                inc bp
                
                loop s3                                                                                        ;然后循环3次.每次出栈保存的地方+160个字节,就是add di0A0H,一行是160个字节.

           mov ax,4c00h
           
                int 21h
                
                
code ends


end start
评论次数(1)  |  浏览次数(659)  |  类型(汇编作业) |  收藏此文  | 

[  游客   发表于  2009-04-15 09:37  ]

调程序,尤其是汇编程序,耐心是必备的。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码