nasm: error: more than one input file specified


I am trying to compile a nasm file but it is returning the following error: "nasm: error: more than one input file specified". What is wrong? boot.asm:

BITS 16 ; The mode we are running in (default for every modern computer)
ORG 0x7c00 ; the origin, the boot loader is always loaded at 7C00 by the BIOS
jmp Main ; Jump the a label called "Main"

;IN: si=string, OUT:-
lodsb ; Load string byte (Load a character that's in si into al)
cmp al, 0 ; If that character is equal to "0" jump to done
je Done

mov ah, 0eh ; Set parameters for interrupt 10
int 10h ; Call the interrupt
jmp Print ; Loop back in Print to print the next character

ret ; return back to the place we where called

mov si, msg ; Move the data of msg into si
call Print ; Call the Print label
hlt ; Halt the system

msg db 'Hello World!',0 ; Define the variable msg to a string

times 510 - ($-$$) db 0 ; make sure the file is 512 bytes

dw 0xAA55 ; Last 2 bytes need to be AA55

I'm using the following command to compile:

nasm -f boot.asm -a boot.bin
asked by anonymous 17.05.2015 / 02:13

1 answer


The syntax that is used to compile is incorrect, the -f option is used to specify the output format of the file, while the -a option is used to suppress preprocessing and assume that the compiler has already done so, in this case this option is also not required.

To compile to binary you can make binary is the standard format):

nasm boot.asm -o boot.bin

To know which formats are available, use the -hf option.

More information: Chapter 2: Running NASM >

17.05.2015 / 02:58