两天前,我在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中那样访问图形屏幕。