– Программа состоит из программных сегментов;
– В начале сегмента кода должна быть директива ASSUME;
– Вход в программу определяется меткой. Заканчивается программа этой же меткой в директиве END;
– Если есть сегмент данных, то необходимо выполнить загрузку адреса сегмента данных в сегментный регистр;
MOV AX, имя_сегмента_данных
MOV DS,AX
– Для выхода из программы используется функция 4CH (EXIT) прерывания 21H
MOV AH,4CH; ВЫХОД
INT 21H; В DOS
Шаблон для написания программ типа.EXE
имя_сегмента_стека SEGMENT stack 'stack'; стек
; резервирование памяти
имя_сегмента_стека ENDS
имя_сегмента_данных SEGMENT; данные
; объявить переменные
имя_сегмента_данных ENDS
имя_сегмента_кода SEGMENT; исполнимые операторы
ASSUME.....;
имя_процедуры PROC
;Текст подпрограммы
имя_процедуры ENDP
Метка:;Точка_входа_в_программу:
mov ax, имя_сегмента_данных; загрузка адреса регистра данных в ds
mov ds,ax
mov ah,4ch; выход
int 21h; в DOS
имя_процедуры ENDP
имя_сегмента_кода ENDS
END Метка
3. Структура.СОМ программ
Требования к программе типа.COM
|
|
– Содержит только один сегмент;
– Не надо производить загрузку адреса сегмента данных в сегментный регистр;
– В начале сегмента должна быть директива ASSUME, после которой необходимо записать org 100h. Оператор org 100h резервирует 256 байт для PSP. Заполнять PSP будет по - прежнему система, но место под него в начале сегмента должен отвести программист.
– Для выхода из программы используется функция 4CH (EXIT) прерывания 21H
MOV AH,4CH; ВЫХОД
INT 21H; В DOS
– При компоновке использовать ключ /t
TKINK имя_программы /t