2014-10-17 2 views
0
section .data 

map db 1 

section .text 

start: 
cmp byte [map], 1 
je exit 
jmp start 

exit: 
ret 

Мне не повезло прочитать данные. Я имею в виду, что я собираюсь в двоичный формат dos COM, и когда я его запускаю, он просто зависает. Может кто-нибудь сказать мне, что я делаю неправильно?Не повезло с данными NASM

+0

Во-первых, вы выпускаете 'ret', когда нет« ret ». –

+0

@ DanielKamilKozar, если память обслуживается правильно, DOS подготовил стек так, что 'ret' в конце программы вернет управление COMMAND.COM. Тем не менее, у меня нет под рукой моего справочного источника выбора для этого [Руководства программистов Петра Нортона для IBM PC]. –

ответ

2

Ожидается, что файлы DOS com будут загружены по адресу 0x100. Вы должны включить строку org 0x100 в начале вашего кода.

+0

Никогда этого не знал! Благодаря! –

+0

@ Gip-Gip, найдите PSP («Префикс сегмента программы»), чтобы узнать, почему это так. Краткая версия состоит в том, что DOS заполняет первые 0xff байты сегмента с кучей информации, которую может потребоваться вашей программе. –

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