当前位置: 代码迷 >> 汇编语言 >> 通过程序在屏幕上显示彩色字的有关问题
  详细解决方案

通过程序在屏幕上显示彩色字的有关问题

热度:196   发布时间:2016-05-02 04:30:27.0
通过程序在屏幕上显示彩色字的问题。
;welcome to masm
;w:119,e:101,l:108,c:99,o:111,
;闪烁绿色:10001010:8ah
;绿底红色: 00100100:24h
;白底蓝色: 00000001:1h
;低字节(偶数位存放ASCII),高字节存放属性(奇数位存放配色)
;B800:0000开始存放信息
assume cs:codesg
datasg segment
db 'welcome to masm ' ;16位存放字符
db 8 dup(8ah)                      ;16位存放字符对应的色彩
db 3 dup(24h)
db 5 dup(1h)
datasg ends

codesg segment
start:
mov ax,datasg ;设置待读取段
mov ds,ax

mov ax,0b800h ;设置待写入段
mov es,ax

mov di,0 ;设置读取偏移
mov si,0 ;设置写入偏移
mov ax,0 ;清空ax寄存器

mov cx,16 ;预计转移16次。
s:
mov al,[di] ;设置写入字符
mov es:[si],al

mov al,[di+16] ;设置写入颜色
mov es:[si+1],al

inc di   ;读取下一个元素
add si,2   ;设置下一个写入位置

loop s

mov ax,4c00h
int 21h
codesg ends
end start

这是我的想法,可是不知道为什么。在对缓冲区写入值的时候,写入后得不到理想值。就是es:[si],al这句,很奇怪。求解救哎。
------解决思路----------------------
其它偏移是正确的话,dos 命令 cls 清屏后在运行自己的程序试试?
  相关解决方案