# #assembly #x86 #x86-emulation
Вопрос:
Я создаю свою первую программу сборки x86. Я использую VS Code в качестве редактора и использую Insight в качестве отладчика в сочетании с DOSBox в качестве эмулятора.
Для начала я создал .asm
программу для изменения цвета экрана:
global _start
section .text
_start:
call set_colour
ret 16
set_colour:
mov ah, 06h ; scroll up function
xor al, al ; clear entire screen
xor cx, cx ; upper left corner
mov dx, 184fh ; lower right corner
mov bh, 1eh ; yellow on blue
int 10h
ret
Когда я пытаюсь преобразовать этот .asm
файл в .o
файл, DOSBox возвращает сообщение об ошибке, в котором говорится, что он не может загрузить файл. Что я делаю не так?
Комментарии:
1. Он должен быть скомпилирован в файл .exe, а не просто в объектный файл .o.
2. @WillWalsh, насколько я понимаю, он должен быть преобразован в
.o
объект, прежде чем он будет преобразован в.exe
файл? Когда я пытаюсь преобразовать в.o
, я получаю ошибку..?3. Извините, я неправильно понял, о чем вы говорили. Итак, чтобы уточнить, вы используете компилятор в DOSBox для компиляции из .asm в .o, и DOSBox возвращает ошибку, в которой говорится, что он не может загрузить файл, или компилятор возвращает ошибку, в которой говорится, что он не может загрузить файл?
4. В то время как DOSBox эмулирует 32-разрядный процессор, DOS работает в 16-разрядном реальном режиме, без таких инструментов, как DOS4gw, используемых в некоторых играх DOS, таких как Doom. Я думаю
-f win32
, что в этой ошибке может быть виновата опция командной строки.5. Потрясающе. Счастлив, что помог. Наслаждайтесь своим путешествием по кодированию!
Ответ №1:
В то время как DOSBox эмулирует 32-разрядный процессор, сама DOS работает в 16-разрядном реальном режиме, без таких инструментов, как DOS4gw, используемых в некоторых играх DOS, таких как Doom.
Я думаю -f win32
, что в этой ошибке виновата опция командной строки.