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

我的博客

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

[2009-04-21 17:23] 实验10 1.显示字符串

这里有个问题 为什么要用cl放字符的属性呢 如果用cl放字符 ch放属性 直接把cx放入显存不是更好吗 所以我就擅自修改了参数 用cl放了字符 程序如下

assume cs:code,ds:data
data segment
db 'Welcome to masm!',0
data ends
code segment
start:
mov dh,8     ;行号 0~24
mov dl,3     ;列号 0~79
mov ch,2     ;颜色
mov ax,data  ;ds:si指向字符串首地址
mov ds,ax
mov si,0
call showstr

mov ax,4c00h
int 21h
;********子程序开始***********
showstr:
mov ah,dh
mov al,160   ;一行160个Byte
mul ah
add dl,dl
mov dh,0
add ax,dx
mov bx,ax    ;bx放第一个字符的偏移量
mov ax,0b800h
mov es,ax
mov di,0
mov dh,ch
s:
mov ch,dh
mov cl,[si]        
mov es:[bx][di],cx ;写入显存
inc si
add di,2
mov ch,0
jcxz ok
jmp s
ok:ret
;**********子程序结束**********
code ends
end start
评论次数(4)  |  浏览次数(504)  |  类型(汇编作业) |  收藏此文  | 

[  huangbeidu   发表于  2009-04-21 17:24  ]

没有用到子程序的标准框架 得改改

[  huangbeidu   发表于  2009-04-21 17:40  ]

加个栈段
前push ax
  push bx
  push cx
  push dx
  push di
  push si
  push es
后pop es
  pop si
  pop di
  pop dx
  pop cx
  pop bx
  pop ax
ok:ret
好长啊 寄存器这么多 有没有可以少用点的办法?

[  mess   发表于  2009-04-22 12:35  ]

可以自己编译自己的文章加进去~

[  younggay   发表于  2009-04-24 11:36  ]

这里有个问题 为什么要用cl放字符的属性呢 如果用cl放字符 ch放属性 直接把cx放入显存不是更好吗 所以我就擅自修改了参数 用cl放了字符 程序如下
======================
想法很好,完全可以的。

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