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

我的博客

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

[2009-01-30 15:14] 实验十 1.显示字符串

程序如下:
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             ;让ds:si指向data段首
      call show_str

      mov ax,4c00h
      int 21h
show_str:
         mov ax,0b800h
         mov es,ax          ;让es指向b800段
         mov al,160
         sub dh,1
         mul dh             ;计算行数,结果在ax中
         mov bx,ax          ;把行数转放到bx中
         mov dh,0
         add bx,dx         ;行数与列数相加,结果放入bx中
         add bx,1
     s:  mov al,[si]
         mov ah,0
         mov es:[bx],al    ;以上3句实现把字符放入显存
         add bx,1
         mov es:[bx],cl    ;该句实现把颜色放入显存相应位置
         push cx           ;把颜色参数cl压入堆栈保存
         mov cl,[si]       ;将ds:si里的字符放入cx,供下面的jcxz检查cx是否为0时使用
         mov ch,0
         jcxz ok
         pop cx            ;如果cx不等于0,则接着执行该句,把颜色参数从栈中弹出恢复到cx中,供下一轮循环使用。
         add si,1
         add bx,1
         jmp s
    ok:  pop cx
         ret
                        
code ends
end start
评论次数(1)  |  浏览次数(610)  |  类型(汇编作业) |  收藏此文  | 

[  younggay   发表于  2009-02-02 16:55  ]

没问题,写的不错。

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