2014-10-27 4 views
0

У меня есть следующий код:NASM дос прерывания (строка вывода)

%include "io.inc" 

section .data 
msg db 'Hello World...$' 

section .text 
global CMAIN 
CMAIN: 
    ;write your code here 

    mov ah,09 
    mov dx,OFFSET msg 
    int 21h 
    xor eax, eax 
    xor dx,dx 
    ret 

и он получает следующую ошибку:

[19:28:32] Warning! Errors have occurred in the build: C:/Users/user/AppData/Local/Temp/SASM/program.asm:12: error: comma, colon, decorator or end of line expected after operand gcc.exe: error: C:/Users/user/AppData/Local/Temp/SASM/program.o: No such file or directory

Что проблема? Я использую sasm ide.

ответ

3

Это TASM/MASM синтаксис:

mov dx,OFFSET msg 

При использовании NASM вы бы просто написать:

mov dx,msg 
+0

теперь есть еще одна ошибка в одной строке: формат COFF не поддерживает не-32 -bit relocations – ByoTic

+1

Вы пишете код DOS реального режима. Такой код должен быть скомпилирован в DOS EXE или COM-файл и выполнен в DOS (или что-то, что может запускать исполняемые файлы DOS, такие как Windows 9x или DOSBox). Я не знаю, какие команды использует SASM IDE для сборки. – Michael

Смежные вопросы