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

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
  •  横尽虚空,天象地理无一可恃而可恃者唯我. 坚尽来劫,河图洛书无一可据而可据者皆空!
  • 『姓名』:刘斌                
  • 『性别』:男    『发送消息
  • 个人说明:以诚为本!
  • 详细信息『加为好友』
学习动态

[2007-10-28 16:55] 实验10  编写子程序

实验10 编写子程序
1.显示字符串

子程序描述
名称:show_str
功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
参数:(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79)
      (cl)=颜色,ds:si指向字符串的首地址
返回:无

分析:
   在80*25彩色字符模式(B8000H~BFFFFH)下,显示器可以显示25
行(N*A0,N为整数且N≤24),每行80个字符(00~9F),每个字符可
以有256种属性,这样,一个字符在显示缓冲区中就要占两个字节。
因此:dh=(0~24)*A0,dl=(0~79)*2,cl=0~7

源程序如下:
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
        call show_str
        mov ah,4ch
        int 21h
 show_str:
        push ax
        push bx
        push cx
        push dx
        push si
        push di

        mov al,0a0h
        mov bl,dh
        mul bl       ;计算行址
        add dl,dl    ;计算列址
        mov di,0b800h
        mov es,di    ;显存段址送ES 
        mov di,ax
        mov ah,0
        mov al,dl
        add di,ax    ;计算显存偏移地址
        ;On computer Line and Col
        mov ah,cl
     s: mov al,[si]  ;字符、属性送AX
        mov es:[di],ax
        mov ch,0
        mov cl,[si]
        inc si
        add di,2
        jcxz ext
        loop s
        ;
   ext: pop di
        pop si
        pop dx
        pop cx
        pop bx
        pop ax
        ret
code ends
end start
评论次数(1)  |  浏览次数(1025)  |  类型(汇编作业) |  收藏此文  | 

[  Wednesday   发表于  2007-11-09 17:45  ]

功能实现,继续努力啊!

多交流,多写注释,是个好习惯!

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