- •Организация памяти.
- •Прграммная модель мп.
- •Ввод - вывод.
- •Внутренние операции мп.
- •Организация обмена с ву.
- •Прерывания.
- •Система команд и режимы адресации мп.
- •Программирование мп.
- •Команды передачи данных.
- •Команды арифметических операций.
- •Команды логических операций и сдвигов.
- •Команды передачи управления.
- •Команды управления мп.
- •Примеры программ.
- •Директивы.
- •Структура ассемблерной программы.
- •Пример оформления программы.
- •2. Порядок выполнения работы.
- •3.Варианты заданий:
- •Контрольные вопросы.
- •5 Содержание отчета.
- •6 Список литературы.
Пример оформления программы.
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