使用i686-elf-gcc和i686-elf-ld进行编译和链接。
/tmp/ccyjfCee.s:25: Error: invalid instruction suffix for 'mov'
makefile:21: recipe for target 'Release/boot.o' failed
当我尝试将movw %0, %%dx
修改为movw $0x1, %%dx
时。它成功编译和链接。所以我想知道为什么线路有问题。根据{{1}},pStr的偏移地址应为16位,适合.code16
寄存器。它有什么问题?
dx
答案 0 :(得分:2)
从技术上讲,您可以使用.code16gcc
指令生成16位代码,并使用%w0
替换来强制使用字大小的寄存器。
请注意,上面只允许您创建一个程序,该程序将在DOS下以16位实模式运行(经过一些后处理以使其达到正确的格式)。如果这不是你想要的,你将需要使用适当的OS系统调用而不是int 0x21
,而不是写16位代码。