在理解实验9时我首先在debug在直接对显示缓冲区B8000十六进制数进行直接修改。在dos中看到了效果,也就理解了原理。
后来就着手汇编了。
其实很简单
就是将自己定义好的data段中‘welcome to masm’和属性数据写入B800段偏移地址为0780中
assume cs:code,ds:data
data segment
db 'welcome to masm!'
data ends
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov cx,16
mov bx,0
mov ax,0780h
mov di,ax
mov ah,0
s: mov al,[bx]
mov es:[di],ax
mov byte ptr es:[di+1],02h
inc bx
add di,2
loop s ;welcome..录入
mov ax,0780h
mov di,ax
mov byte ptr es:[di+17],24h
mov byte ptr es:[di+19],24h
mov byte ptr es:[di+23],71h
mov byte ptr es:[di+25],71h
mov byte ptr es:[di+27],71h
mov byte ptr es:[di+29],71h
mov byte ptr es:[di+31],0f1h
mov ax,4c00h
int 21h
code ends
end start