Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Asm: Общие вопросы > Не могу выйти в DOS


Автор: Dreamuchiy 16.10.2011, 20:00
Что бы я не делал все равно виснет система. Сократил вплоть до mov ax,4c00h и int21h соответственно. Ивсе равно виснет. У меня MS-DOS 6.22. Один с флехи грузится, другой на ноуте установлен и везде одинаковая фигня. Хотя иногда на станционаре корректный выход был. Может кто сталкивался с подобной хренью ? 

Автор: iff 16.10.2011, 21:27
А другие программы нормально запускаются?

Автор: 500mhz 17.10.2011, 17:15
предлогаю сократить до

org 0x100

RET


и проверить

Автор: iff 17.10.2011, 19:00
500mhz, да, тогда выполнится прерывание INT 20h.

Добавлено через 38 секунд
Может быть автор вообще имеет в виду зависание при компиляции?.. у меня такое бывало.

Автор: Dreamuchiy 17.10.2011, 21:35
Вот, я только включил комп и выше упомянутые мной команды работают на ура. Иакое впечатление как буд то система начинает перегружаться чем то. Ладно фиг сним.  Скажите ребята, а если использовать как вы рекомендуете ORG и Ret, надо писать там типа MAIN PROC и END main ? после .CODE сразу пишу ORG 100h, далее собственно сама программа и в конце RET и END MAIN ? Правильно я понял ?

Компиляция проходит успешно. Кстати как файл с расширением COM создается ? Пишу пока на MASM 6.1

Автор: iff 18.10.2011, 15:03
Цитата(Dreamuchiy @  17.10.2011,  21:35 Найти цитируемый пост)
Кстати как файл с расширением COM создается 

Используйте EXE2BIN, еслив MASM.


Цитата(Dreamuchiy @  17.10.2011,  21:35 Найти цитируемый пост)
выше упомянутые мной команды работают на ура.

только внутренние команды? ещё раз: попробуйте запустить какую-либо программу, написанную под DOS.

Автор: Dreamuchiy 24.10.2011, 21:47
Все само разрешилось когда я поставил в самое начало прграммы команды: mov ax,@data и mov ds,ax. До этого у меня сначала производилась запись байтов по нескольким адресам типа mov [byte],al, Не знаю как одно на другое влияет< но выход в дос стал безпроблемный ! Спасибо всем за помощь ! Я столько времени мучался.

Автор: 3abpbeginner 6.11.2011, 19:19
браток может стоит правильно оформить твой екзешник|com-файл.
в екзешнике надобно засунуть в стек ds(чуть не забыл);определить ds, es; засунуть 0000h в верхушку стека(в таком же порядке).
в сom-файле надобно выполнять с смещения 100h(org 100h (я после определения сегмента пишу)).

Автор: iKhR 14.11.2011, 18:14
попробуй
mov ah,4h
int 21h

Автор: iff 15.11.2011, 14:22
iKhR, вы написали вызов функции вывода символа, находящегося в DL, га экран. Читайте тему! автор уже уяснил свою ошибку.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)