Функция "int 21h" с компилятором MASM в среде SASM - Assembler
Формулировка задачи:
С помощью MASM в среде SASM скомпилировано:
При отладке указана ошибка:
Если создать .exe и запустить, то вместо закрытия приложения происходит
То же самое происходит при задании других команд в регистре AH.
Что нужно добавить, чтобы функция int 21h начала работать?
.386 .model flat, stdcall .code start: mov ah, 00h int 21h end start
Program received signal SIGSEGV, Segmentation fault.
Сигнатура проблемы:
Имя события проблемы: APPCRASH
Имя приложения: char2.exe
Версия приложения: 0.0.0.0
Отметка времени приложения: 568ff17d
Имя модуля с ошибкой: char2.exe
Версия модуля с ошибкой: 0.0.0.0
Отметка времени модуля с ошибкой: 568ff17d
Код исключения: c0000005
Смещение исключения: 00001002
Версия ОС: 6.1.7601.2.1.0.256.1
Код языка: 1049
Дополнительные сведения 1: 0a9e
Дополнительные сведения 2: 0a9e372d3b4ad19135b953a78882e789
Дополнительные сведения 3: 0a9e
Дополнительные сведения 4: 0a9e372d3b4ad19135b953a78882e789
Ознакомьтесь с заявлением о конфиденциальности в Интернете:
http://go.microsoft.com/fwlink/?linkid=104288&clcid=0x0419
Если заявление о конфиденциальности в Интернете недоступно, ознакомьтесь с его локальным вариантом:
C:\Windows\system32\ru-RU\erofflps.txt
Решение задачи: «Функция "int 21h" с компилятором MASM в среде SASM»
textual
Листинг программы
start: mov ah, 1 int 21h mov ah,4Ch int 21h end start
Объяснение кода листинга программы
- Переменная
ah
используется для хранения регистра состояния процессора после выполнения командыint 21h
. - Команда
int 21h
передает управление на уровень ввода-вывода. - Переменная
4Ch
представляет собой константу, которая используется для завершения работы программы. - Команда
int 21h
используется для выполнения функции завершения работы программы. - Код не содержит никаких других переменных или команд.
- Код не выполняет никаких сложных операций или вычислений.
- Код не содержит ошибок или неопределенного поведения.
- Код не использует какие-либо библиотеки или функции, кроме
int 21h
. - Код не содержит комментариев или пояснений к своей работе.
- Код не является частью более крупной программы или системы.
- Код не содержит никаких управляющих структур или циклов.
- Код не выполняет никаких операций с памятью или вводом-выводом.
- Код не содержит никаких команд перехода или возврата.
- Код не содержит никаких операций сравнения или логических операций.
- Код не содержит никаких операций с регистрами процессора, кроме
ah
и4Ch
. - Код не содержит никаких операций с портами ввода-вывода.
- Код не содержит никаких операций с сегментами памяти.
- Код не содержит никаких операций с регистрами управления процессором.
- Код не содержит никаких операций с флагами процессора.
- Код не содержит никаких операций с буферами или указателями.