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


Автор: Agares 29.9.2011, 16:16
Написал небольшую программу:
Код

data segment
    mas1    dw    1,-2,3,4,5,-6,7,8,9,10,0,12,0,14,15,-16 ; Задание №1 - задаем массив из 16 элементов
    mas2    dw    11    dup (0) ; Задание №2 - инициализация массива 0
data ends
code segment
    assume es: data, cs: code
start:
    mov ah, 10h
    int 16h ; ожидание нажатия клавиши
    
    int 21h   ; завершение работы программы
code ends
end start


использую батник для компиляции:
Код

@echo off

echo ------------------------------------------------
echo Clearing old data...
echo ------------------------------------------------

@del LAB1.EXE
@del LAB1.OBJ
@del LAB1.MAP

echo Done

echo ------------------------------------------------
echo Assembling...
echo ------------------------------------------------

D:\lab\TASM\BIN\Tasm.exe lab1.asm

echo ------------------------------------------------
echo Linking...
echo ------------------------------------------------

D:\lab\TASM\BIN\TLink.exe LAB1.OBJ
pause


копилируется без ошибок, но когда я пытаюсь запустить программу - вылетает с ошибкой "The NTVDM CPU has ancountered an illegal instruction. CS:8a21 IP:02bb OP:ff ff 00 00 00"

Подскажите пожалуйста, в чем проблема?

ОС: Win 7 x86

Автор: Agares 29.9.2011, 16:17
Окно компиляции

Автор: iff 29.9.2011, 20:47
Завершение работы программы выполнено неверно.

Автор: Agares 29.9.2011, 23:33
Цитата(iff @ 29.9.2011,  20:47)
Завершение работы программы выполнено неверно.

Не подскажите, как правильно выполнить завершение?

Автор: ksili 30.9.2011, 04:08
Перед int 21h в конце вставить mov ah, 4ch

Автор: Agares 30.9.2011, 11:21
Спасибо! Помогло! smile 

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