内联汇编程序:无效的引用语法



两天前,我在Free Pascal编译器2.2.0中收到以下错误:

Error: Invalid reference syntax

病史:

我想编译一个pascal源代码,其中包含一些用于平台"的汇编指令;i386-linux";

procedure drawpixel(x,y,color: word); assembler;
asm
mov ax, y
mov bx, x
mov dl, color
mov cx, 320
mul cx
add ax, bx
mov di, ax
mov [es:di], dl /// Right at [es:di] the inline assembler gives this annoying exception
ret
end;

有人能帮帮我吗。

正如评论员已经指出的,这是一个16位汇编程序,如果不修改它,它将无法在32位中工作。

除了使用16位寄存器作为间接目的地([di](很奇怪之外,32位应用程序中的ES段与DS段相同,所以可能不是你想要的(我认为这应该是某个X模式屏幕缓冲区(,而是将其ram在应用程序内存的前64kb中的某个位置,该内存至少部分防止写入陷阱零指针引用。

你需要重新思考一下,在Linux中不可能像在dos中那样访问图形屏幕。

最新更新