高分请教一道汇编程序!!!!
题目:在屏幕上画一彩色方块
思路:首先,通过BIOS中断调用,将屏幕工作方式设置为图形方式。之后通过嵌套两个循环在屏幕上画一彩色方块。
源代码:(编译环境:Masm5)
;rectangle.asm
code segment
assume cs:code,ds:code
start:
mov ax,cs
mov ds,ax
mov ax,0012h ;设置显示方式,Al=显示方式
int 10h ;调用显示器中断设置当前屏幕为图形方式
mov bh,100 ;彩色方块的长为100个点
mov cx,0 ;线的起始列坐标
DRAW_LOOP1:
mov bl,100 ;彩色方块的宽为100个点
mov dx,0 ;线的起始行坐标
DRAW_LOOP2:
mov al,bl
mov ah,12 ;功能0Ch,在指定的位置显示一个点
;调用该功能时,cx=点的列位置(X坐标)
;dx=点的行位置(Y坐标)
;al=点的值,低四位为颜色值
int 10h ;在当前坐标上划一个点
inc dx ;行坐标加1
dec bl
jnz DRAW_LOOP2 ;如果一列(100个点)未完则继续
inc cx
dec bh
jnz DRAW_LOOP1 ;如果不到100列则继续
mov ah,4ch
int 21h ;返回dos
code ends
end start
本来运行后显示应该是这样的
|||||||||||
|||||||||||
|||||||||||
|||||||||||
结果实际运行结果是
||||||
||||||
||||||
|||||||
|||||||
|||||||
|||||||
|||||||
|||||||
也就是说,在做里面的循环时是一条直线画下来的,但改变列值时就跳了,
请各位大侠帮忙解决?调通即给分。