Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Организация ЭВМ и сетей - Лаба 01.rtf
Скачиваний:
2
Добавлен:
10.07.2019
Размер:
764.62 Кб
Скачать

Пример оформления программы.

TITLE primer

PAGE 25,80 ;25 строк по 80 символов.

stack_segment SEGMENT PARA STACK ;Такое определение помогает локализовать

DB 3 DUP ('This is stack...') ;стек при использовании отладчика.

stack_segment ENDS ;Конец сегмента.

data_segment SEGMENT PARA ;Определение сегмнта данных

name1 DB 'Hello,Dos!',13,10,'$' ;после текста стоят кды ПС, ВК т. к.

;функция 9h прерывания 21h вывода строки символов на экран автоматически не ;выполняет эти команды. Признак конца строки для этой функции - $.

data_segment ENDS ;Конец сегмента

code_seg SEGMENT PARA ;Сегмент кода

main PROC FAR ;Главная программа.

ASSUME cs:code_seg, ds:data_segment ;Определяем сегментные регистры.

PUSH ds ;Для возврата в DOS в стеке нужно сохранить

SUB ax,ax ;регистр DS и следующее значение в стеке

PUSH ax ;должно быть нулевым.

MOV dx,data_segment ;Записываем в DS адрес сегмента данных. Нет

MOV ds,dx ; команд записи непосредственных данных в ;сегментные регистры - по этому использовано две команды MOV.

CALL pr_str ;Вызов подпрограммы.

RET ;Выход из главной процедуры .

main ENDP ;Конец процедуры.

pr_str PROC ;Подпрограмма использует функцию 9

;прерывания 21 DOS выводящая строку символов не экран.

LEA dx,name2 ;Начальный адрес строки в регистр DX.

MOV ah,9h ;Номер функции.

INT 21h ;Вызов прерывания.

RET ;Возврат в главную программу.

pr_str ENDP ;Конец процедуры.

code_seg ENDS ;Конец сегмента кода.

END main

Программа сначала вводится в машину при помощи любого редактора, затем выполняется ее ассемблирование программой TASM, компоновка программой TLINK, и запуск на решение. Ассемблирование - это трансляция исходного текста в машинный код и создание OBJ-модуля. Он еще не готов к выполнению. Компоновщик преобразует объектный код в исполняемый (EXE) модуль. При этом окончательно определяются все адреса, объединяет, при необходимости, несколько отдельно ассемблированных модулей в одну загрузочную программу, создает префикс программного сегмента.

Форматы команд:

TASM [опции] [имя исходного файла] [имя файла листинга]

Практически достаточно TASM /l имя.asm - транслировать и создать листинг.

TLINK [имя объектного файла] [имя исполняемого файла] [имя файла с картой памяти] [имя файла библиотеки]

Аналогично TLINK имя.obj