首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 嵌入开发 > 汇编语言 >

用绿色展示Welcome to masm

2012-12-14 
用绿色显示Welcome to masm!将指定的字符串显示在屏幕上,dh==行(0-24)dl列 (0-79)cl color1.不知道哪

用绿色显示Welcome to masm!
将指定的字符串显示在屏幕上,dh==行(0-24)          dl==列 (0-79)    cl == color  

1.不知道哪里错了,显示乱码
2.而且,好像不是从1(行)3(列)开始显示,而是从0(行)2(列)开始显示,逻辑计算上有错误?

assume cs:code
data segment
  db 'Welcome to masm!',0
data ends

code segment
start:  mov dh,1                ;行
        mov dl,3                ;列
mov cl,2        ;绿色
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,4c00h
int 21h
show_str: 
          mov ax,0b800h    ;显存段地址
          mov es,ax
          mov al,160       ;对应显存每行160个字节
          mul dh
          add dl,dl
  mov dh,0
  add ax,dx
  mov bx,ax   ;计算字符串对应的显存起始地址
  
          mov al,cl           ;用al暂存颜色参数
   s: 
  mov cl,ds:[si]     ;将ds:[si]指向的字符存入cl
  mov ch,0
  jcxz ok            ;比较0之前的每个字符
  mov es:[bx],al     ;写入颜色参数
  mov es:[bx+1],cl   ;写入字符
  inc si            
  inc bx
  inc bx             ;字符+1  显存+2
  jmp short s
  ok: ret
code ends
end start

[解决办法]
出去转一圈,想明白了,应该是我把  字符和字符属性对应的显存位置搞反了。
应该低地址存放字符,高地址存放属性。
但是显示字符位置问题还是没想明白
[解决办法]
一会回家的时候试试

热点排行