1 assembly pascal freepascal i386
两天前,我在 Free Pascal 编译器 2.2.0 中遇到以下错误:
Error: Invalid reference syntax
Run Code Online (Sandbox Code Playgroud)
史前史:
我想编译一个 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;
Run Code Online (Sandbox Code Playgroud)
有人可以帮助我吗?
正如评论者已经指出的那样,这是 16 位汇编程序,如果不进行修改,就无法在 32 位中运行。
除此之外,使用 16 位寄存器作为间接目标([di])很奇怪,32 位应用程序中的 ES 段与 DS 段相同,所以可能不是您想要的(我认为这应该是一些mode-X 屏幕缓冲区),但会将其 RAM 到应用程序内存的前 64kb 中的某个位置,该内存至少部分受到保护,防止写入以捕获零指针引用。
您需要重新考虑这一点,在 Linux 中不可能像在 dos 中那样访问图形屏幕。
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |