assume cs:code
data segment
db'welcome to masm!'
data ends
stack segment
dw 8 dup(0)
stack ends
code segment
begin: mov ax,data
mov ds,ax
mov ax,0b872h
mov es,ax
mov si,0
mov di,0
mov cx,16
s1: mov al,[si]
mov es:[di],al
mov al,00000010b
mov es:[di+1],al
inc si
add di,2
loop s1
mov cx,16
mov ax,es
add ax,0ah
mov es,ax
mov si,0
mov di,0
s2: mov al,[si]
mov es:[di],al
mov al,00100100b
mov es:[di+1],al
inc si
add di,2
loop s2
mov ax,es
add ax,0ah
mov es,ax
mov si,0
mov di,0
mov cx,16
s3: mov al,[si]
mov es:[di],al
mov al,01110001b
mov es:[di+1],al
inc si
add di,2
loop s3
mov ax,4c00h
int 21h
code ends
end begin
大家看我给ES初始化段基址的时候是:
mov ax,0b872h
mov es,ax
结果全部正常,字符显示在屏幕中间
如果改成:
mov ax,0b800h
mov es,ax
也就是正常初始化,第一个字符显示在屏幕左上角的第一个位置
运行结果是什么都没有。。。。。 |