高分请教一道汇编程序!!!!

xm4014 xm4014 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
题目:在屏幕上画一彩色方块
思路:首先,通过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


本来运行后显示应该是这样的



|||||||||||
|||||||||||
|||||||||||
|||||||||||

结果实际运行结果是

||||||
||||||
||||||
|||||||
|||||||
|||||||
|||||||
|||||||
|||||||
也就是说,在做里面的循环时是一条直线画下来的,但改变列值时就跳了,
请各位大侠帮忙解决?调通即给分。
...全文

相关推荐

评论 4
收藏 已收藏
分享
返回顶部
xm4014
非技术区 831 成员 53,568 内容