|  | 
 
 发表于 2011-11-7 18:52:02
|
显示全部楼层 
| 本帖最后由 蛇足之王 于 2011-11-7 18:55 编辑 
 1.data段的数据定义有误,写入显示缓冲区的数据应该是要显示的字符所对应的ASCII码
 2.要显示的一个字符占两个字节,其中高位是颜色信息,低位是ASCII码,如果要用mov es:[di],ax这样的语句,那么应该是ah存储颜色信息,al存储ASCII码,而不是用ax存储整个数据
 改成下面这样应该没问题了
 assume cs:code,ds:data
 
 data segment
 db        '1','2','3','4','5','6','7'                   ;这里改成定义字符型数据
 data ends
 
 
 code segment
 start:
 mov ax,data
 mov ds,ax
 mov bx,0
 
 mov ax,0b800H
 mov es,ax
 mov di,0
 
 mov cx,7
 
 s:
 mov al,ds:[bx]
 mov es:[di],al                              ;这里只传输低位的ASCII码信息,不改动高位的颜色信息
 add di,2
 inc bx
 loop s
 
 mov ax,4c00H
 int 21H
 code ends
 
 end start
 | 
 |