我正在实模式下编写 C 程序。程序将被加载到0x2000:0x0000
地址并运行。DS
寄存器等于CS
,即0x2000
。我也在用bochs调试。
我的目标是在屏幕上打印一些文本。所以我需要内联汇编(用于 BIOS INT 10h
)。
这是我的测试文件:
asm("jmp _main");
void putchar(c) char c;
{
asm("mov ah, 0x0e");
asm("mov al, c");
asm("xor bx, bx");
asm("int 0x10");
}
void main ()
{
asm("push cs");
asm("pop ds");
putchar('A');
for(;;);
}
当我用这个命令编译它时......
bcc -W -0 -c test.c -o test.obj
......它正在工作。但是当我试图将它与...链接时
ld86 -d isimsiz.obj -o kernel.bin
...它给了我这个错误:
undefined symbol: c
为什么会这样?如何在 BCC In-Line Assembly 下使用 C 变量?
如果您知道关于密件抄送的好教程,请留下链接。我在互联网上找不到它:(
提前致谢。