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

xm4014 2002-01-21 09:44:50
题目:在屏幕上画一彩色方块
思路:首先,通过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


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



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

结果实际运行结果是

||||||
||||||
||||||
|||||||
|||||||
|||||||
|||||||
|||||||
|||||||
也就是说,在做里面的循环时是一条直线画下来的,但改变列值时就跳了,
请各位大侠帮忙解决?调通即给分。
...全文
45 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
长弓落日 2002-01-21
  • 打赏
  • 举报
回复
你给出的结果(两个)是不是都显示错了?
长弓落日 2002-01-21
  • 打赏
  • 举报
回复
帮你UP先!
halfdream 2002-01-21
  • 打赏
  • 举报
回复
看源码没有看出哪儿出了毛病。

没有条件调试。
你自己跟踪一下dx,cx的变化吧。
xm4014 2002-01-21
  • 打赏
  • 举报
回复
大致就是这样显示的,最好你们能帮我调一下

828

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧