1、dos系统的显示大小为80*25字符,内存地址空间为B8000H~BFFFFH共32KB的空间,向这里面陷入数据,内容会出现在显示器上。
2、每个字符需要用2个字节的存储空间,高字节存储字符的属性(背景、前景、闪烁、高亮),低字节存储字符的ASCII码。
3、由上可以算出第N行M列的字符(从第1行第1列开始算,而不是第0行0列)在内存中的首地址:
(N-1)*160 + (M-1)*2
4、属性字节的格式:
白底蓝字不闪烁不高亮: 0 111 0 001B = 71H
注意:白色是111不是000;相反的黑色是000。
5、在第14行、32列处开始显示"welcome to masm!",白底蓝字。
assume cs:codesg,ds:datasg
datasg segment
dw 7177h,7165h,716ch,7163h,716fh,716dh,7165h,7120h ;'welcome '
dw 7174h,716fh,7120h ;'to '
dw 716dh,7161h,7173h,716dh,7121h ;'masm!'
datasg ends
codesg segment
start:
mov ax,0b800h
mov es,ax
mov ax,datasg
mov ds,ax
;显示在第14行32列处,偏移地址085EH
mov si,085eh
mov bx,0
mov cx,16 ;一共16个字符,循环16次
s:mov ax,[bx]
mov es:[si],ax
add bx,2
add si,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
6、结果