我写了一个引导加载程序并使用NASM
汇编程序(不是AS86
)编译它,一切正常。
现在,我想学习如何将 16 位C
代码插入到我的应用程序中。bcc
由于它支持 8086 处理器,我从几个推荐用于这种情况的SO 中阅读。
在将我的代码与C
测试代码结合时,我遇到了以下错误:ld86: testasm.o has bad magic number
我将代码简化为以下内容:
testasm.asm :
[bits 16]
global foo
foo:
mov ax, 0x0e41
int 0x10
jmp $
测试c.c:
extern void foo();
main() {
foo();
}
和Makefile:
CFLAGS=-0 -c
LDFLAGS=-T 0x7C00 -0
ASFLAGS=-f aout
all: testc.bin
testc.bin: testasm.o testc.o
ld86 -o $@ $^ $(LDFLAGS)
testc.o: testc.c
bcc -o $@ $^ $(CFLAGS)
testasm.o: testasm.asm
nasm -o $@ $^ $(ASFLAGS)
clean:
rm -f *.o testc.bin
我仍然有问题。任何人都知道如何组合NASM
,bcc
以及如何组合ld86
在一起。
对于新来者,我发现了这个问题。输出格式NASM
应该是AS86
为了与LD86兼容。所以,
ASFLAGS=-f aout
应该替换为
ASFLAGS=-f as86
另外,代码还有一个问题:foo
intestasm.asm
应该替换为_foo
但不要问我为什么!
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句