汇编语言图形显示中遇到的问题
;我测试以下代码,但是在dosbox中只显示了一半的图形,这是我所不能理解的,
data segment
hong db 1,2
num equ $-hong
data ends
stack segment
dw 16 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov ax,stack
mov ss,ax
mov sp,32
mov ax,0a000h
mov es,ax
mov ah,00h
mov al,12h
int 10h ;设为640*480的图形模式
mov dx,3ceh
mov al,5
out dx,al
inc dx
mov al,2
out dx,al ;选择写模式2
mov dx,3ceh ;设定位屏蔽寄存器
mov al,8
out dx,al
inc dx
mov al,11111111b
out dx,al
mov cx,480
mov bx,0
loop1: mov ah,0
mov al,bl
mov dl,80
mul dl
mov si,ax
mov byte ptr es:[si],4 ;这里的程序只是为了给第一列设置红色,按理说应该第一列的八个像素值都会变成红色,但是实际显
inc bx ;显示只有第一列的一半显示了红色,我实在是搞不懂为什么
loop loop1
call delay
mov ah,00h
mov al,03h
int 10h
mov ax,4c00h
int 21h
delay proc near
;设置延时
push si
push di
mov si,8000
d1: mov di,3000
d2: dec di
jnz d2
dec si
jnz d1
pop di
pop si
ret
delay endp
code ends
end start