我在具有 VGA 模式和 8 位固定 RGBA 像素格式的 Windows 10 上使用 emu8086,学习图形和 ASM 的基础知识只是为了好玩。我找到了一种一次绘制一个像素的方法,如下面的代码所示:
org 100h
mov ax, 13h
int 10h
mov ax, 40960
mov ds, ax
mov ax, 2Fh
mov bx, 0 ; will hold addr of pxl to paint in.
pntLnClr:
mov [bx],ax ; paint color in ax into pixel at bx.
inc bx
cmp bx, 40
JL pntLnClr
mov ah, 0
int 16h
ret
我想编写一个 ASM 程序,它可以同时绘制多个像素,而不是从一个像素到另一个像素循环,让它看起来像一条轨迹。我一直在 SO 和网络的其他部分试图找到实现目标的基本代码,但找不到任何东西。这里接受的答案似乎是最接近答案的东西,尽管我不清楚我是否真的需要像额外的段这样的东西以及像推送和弹出这样的技术来访问和写入多个像素地址。不仅如此,我尝试了答案中的代码,汇编器告诉我BITS是一条非法指令,并且里面的参数mov [es:di],dx
是错误的。
[编辑:] 这个问题来自于满足创建具有低分辨率的类似 2D 游戏的演示的目标的想法,就像精灵和背景位于同一平面层上的板一样简单。