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

我的博客

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

[2007-11-18 13:05] 实验10

;程序功能:在显示器指定位置显示绿色前景的welcome to masm!
assume cs:code
data segment
        db 'welcome to masm!',0
data ends
code segment
start:
        mov dh,8;行数
        mov dl,3;列数
        mov cl,2
        mov ax,data
        mov ds,ax
        mov si,0;si用于保存输入字符的偏移地址
        call show_str
        mov ax,4c00h
        int 21h
show_str:
        push dx
               push cx
        push ds
        push si;寄存器保存
        
        mov ax,0b800h
        mov es,ax;用es保存显存段地址

        mov bx,0
        mov al,0a0h
        dec dh
        mul dh
        add dl,dl
        mov dh,0
        add ax,dx
        mov bx,ax;用bx存放显存偏移地址

        mov ah,cl;写入字符属性
        
s:
        mov ch,0
        mov cl,[si]
        jcxz ok
        mov al,cl;写入字符
        mov es:[bx],ax;将字符和属性写入指定显存位置
        inc si
        add bx,2
        jmp short s
ok:        
        pop si
        pop ds
        pop cx
        pop dx;还原寄存器
        ret 
code ends
end start
;其中同过两次调试才通过,第一次mov dh,0;add ax,dx;2条指令我原来是用的add ax,dl
第二个bug是:mul指令执行8位乘法时书上错误写为,被乘数默认放在ah中,看了半天源程序找不到错误,后来调试才发现执行mul指令时,ax中的值不对,突然就想到是不是书上对这个指令的介绍有错误,后来在论坛上一查,果然印刷有错误。。!
经验:当写完一 个程序时,发现执行后结果与预想的不符,首先找出结果不同的地方,看哪个功能实现上不对,然后看源程序对这个功能实现上是不是有不当的地方,或者用debug单步执行检查(特别注意在执行实现出错功能的指令时),然后就是发现问题解决问题,一直到得出应有的结果为止。
评论次数(1)  |  浏览次数(941)  |  类型(实验) |  收藏此文  | 

[  mouse   发表于  2007-12-22 20:36  ]

我前两天也调了半天才把这个弄出来,还费了半天劲精简,我看博主的代码也是可以再精简点的~

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