【发布时间】:2014-12-09 15:12:06
【问题描述】:
我需要使用模拟器 8086 在程序集中绘制一条斜线,其中行值存储在 dx 中,列存储在 cx 中,所以我将两者的初始值与最终值进行比较,但它不起作用当它仅达到列最终值或行而不是两者都需要时,正确地停止
这是应该画线的代码部分
u4: mov ah, 0ch ; put pixel
int 10h
cmp dx,50
dec dx
dec cx
cmp cx,[1000h]
ja u4
【问题讨论】:
-
从不使用第一个
cmp的结果。你也需要有条件跳转。 -
我不知道你是否被限制使用
int 10h,而不是说,模式13h,但是对于像Bresenham + BIOS这样的关键字有很多代码。 -
当我在第一个 cmp 之后再次跳转时,它刚刚到达最后一行而忽略了第二个 cmp,我无法弄清楚如何解决这个问题
-
•在 AL 中指定颜色属性(例如,1 表示蓝色)•确保使用视频模式。使用命令 "mov ah, 0" "mov al, (videomode)" "int 10h" 将您的计算机设置为视频模式(例如模式 19 是 320x200 和 256 色)
-
@vanUitkon 我在主代码中使用了所有这些 - 它绘制了一个梯形 - 这只是负责斜线的一小部分。