高分请教一道汇编程序!!!!
题目:在屏幕上画一彩色方块
思路:首先,通过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
本来运行后显示应该是这样的
|||||||||||
|||||||||||
|||||||||||
|||||||||||
结果实际运行结果是
||||||
||||||
||||||
|||||||
|||||||
|||||||
|||||||
|||||||
|||||||
也就是说,在做里面的循环时是一条直线画下来的,但改变列值时就跳了,
请各位大侠帮忙解决?调通即给分。
思路:首先,通过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
本来运行后显示应该是这样的
|||||||||||
|||||||||||
|||||||||||
|||||||||||
结果实际运行结果是
||||||
||||||
||||||
|||||||
|||||||
|||||||
|||||||
|||||||
|||||||
也就是说,在做里面的循环时是一条直线画下来的,但改变列值时就跳了,
请各位大侠帮忙解决?调通即给分。
...全文
相关推荐
经典汇编程序100例
包含了一系列的经典汇编程序,非常适合一些初学者模仿,从而提升自己的汇编程序的编写能力。
30天开发操作系统 第 14 天 -- 高分辨率及键盘输入
那么我们赶快把操作系统我们的做得更像一个真正的操作系统吧。 大家现在可以接触多任务了。可是按计划,我们是从第15天开始才学# 可多任务的,所以今天还是暂时不学习多任务吧。 所以今天打算学点儿别的。 学点儿什么呢?好吧, 就学提高画面分辨率吧。 嗯, 从开发操作系统的角度来看, 现在这样的320x200的画面也没什么问题, 可毕竟还是大画面好。 打印键盘输入
项目总结做一个项目的总结。给自己看!!!!
做一个项目的总结。给自己看!!!!做一个项目的总结。给自己看!!!!做一个项目的总结。给自己看!!!!做一个项目的总结。给自己看!!!!做一个项目的总结。给自己看!!!!
fedora14下载种子!!!!
fedora14下载种子!!!! fedora14下载种子!!!! fedora14下载种子!!!!
arm 汇编程序实例
arm汇编程序实例,可以作为汇编程序学习的实验程序。可以在ADS、rvds环境下编译执行。


非技术区
