Иллюстрированный самоучитель по Assembler


Организация приложений MS-DOS - часть 13


tlink /x /v /3 /t p,p

Для того, чтобы избежать ошибок при подготовке программ, целее образно подготовить два командных файла для трансляции и компоновки программных примеров - один для программ типа .ЕХЕ, и другой для программ типа .СОМ. Разумеется, файлам надо назначить различающие имена.

Рассмотрим пример законченной программы типа .СОМ, которая выводит на экран строку текста.

Пример 3-2. Простая .COM- программа

assume CS:code,DS:code

code segment

org 256      ; Место под PSP

main proc

mov AH, 09h    ; Функция вывода на экран

mov DX,offset msg

int 21h

mov AX,4C00h     ; Функция завершения

int 21h                   ; программы

main endp

msg db 16,16,16 ' Программа типа .COM'17,17,17,'$'

code ends

end main

В начале программы отведено 256 байт под PSP; в программе отсутствует инициализация регистра DS; поле данных размещено в программном сегменте непосредственно после последней команды. Для разнообразия в строку, выводимую на экран, включены коды 16 и 17, которые отображаются на экране в виде залитых треугольников (рис. 3.2). Как видно из этого рисунка, программа имела имя Р. СОМ и запускалась из каталога F:\CURRENT.

Рассмотрим важный в принципиальном плане вопрос о месте размещения данных в .СОМ-программе. В нашем примере данные описаны в конце программного сегмента вслед за процедурой main, которая, как и в предыдущих примерах, введена скорее для порядка, чем по необходимости.

Рис. 3.2.

Вывод программы 3.2.

С таким же успехом можно было предложение с именем msg поместить после вызова int21h, внутри процедуры main. Третий возможный вариант, с которым мы еще столкнемся в примерах резидентных программ, приведен ниже.

assume CS:code,DS:code

code segment

org 256         ; Место под PSP

main proc

jmp start      ; Первая выполнимая команда




Начало  Назад  Вперед



Книжный магазин