Начинающий программировать на ассемблере для x86. У меня есть простой asm-файл, который я собираю, используя версию nasm - NASM версии 2.10rc6, скомпилированную 6 июня 2011 года, для Windows (у меня Windows 64-битная версия Windowa-7). NASM можно загрузить с здесь (nasm-2.10rc6-win32.zip).
ORG 100
USE16
mov ah, 09
mov dx, msg
int 21h
mov ah, 01
int 21h
mov ah, 4ch
int 21h
msg db 'Hello assembly', 0Ah, '$'
Затем я собираюсь с помощью команды -
nasm -f bin hello.asm -o hello.com
Затем я запускаю сгенерированный исполняемый файл hello.com, используя Dosbox (эмулятор Dos для 64-битной ОС Windows-7).
Когда он запускает вывод, выводимый на консоль, перед ним выводится строка «Hello Assembly» плюс несколько ненужных символов / управляющих символов, как показано ниже:
В чем причина этого. Что-то не так в коде?
Что мне нужно сделать, чтобы это исправить?
РЕДАКТИРОВАТЬ: Когда я пытался дать опцию -f для NASM для генерации определенного типа исполняемого вывода, например, Win32 или Win64 выводит сообщение об ошибке:
nasm -f win64 hello.asm -o hello.com
hello.asm:1: error: parser: instruction expected
Чего это ожидает? Как я могу создать исполняемый файл win32 / win64, используя nasm? или в этом отношении любой другой исполняемый файл, такой как elf32 / coff, который, как говорит nasm, поддерживает?