如何使用GNU汇编程序(as)将程序集文件编译为原始二进制文件(如DOS .com)格式?

时间:2011-12-12 22:49:15

标签: assembly gas binutils

我想在Windows中编译这个源代码(这只是一个例子):

start:
NOP
NOP

当我用NASM或FASM编译它时,输出文件长度是2个字节。但是当我使用GNU汇编程序(as)编译它时,输出文件长度为292字节!

如何使用GNU汇编程序(as)将汇编文件编译为原始二进制文件(如DOS .com)格式?


为什么我这样做?

我想编写自己的简单操作系统,用C编写代码(不使用任何C标准库,甚至是stdio.h或math.h)并将其转换为汇编:

gcc -S my_os.c -o my_os.asm -masm=intel

然后,我将汇编文件编译为原始二进制文件:

as my_os.asm

然后我将a.out(汇编程序的输出)重命名为my_os.flp,最后用VMWare启动我的操作系统:)

2 个答案:

答案 0 :(得分:1)

使用带有-f bin选项的NASM将汇编代码编译为原始二进制文件。

答案 1 :(得分:0)

org 100h
nop
nop

您可以使用fasm进行编译:

fasm yourcode.asm targetfilename.com
相关问题