- •1. Требования языка ассемблера
- •1.1. Комментарии в программах на Ассемблере
- •1.2. Формат кодирования
- •1.3. Директивы ассемблера
- •Title текст
- •Директива segment
- •Директива assume
- •1.4. Память и регистры
- •1.5. Инициализация программы
- •1.6. Пример исходной программы
- •2. Определение данных
- •2.1. Директивы определения данных
- •2.2. Непосредственные операнды
- •Длина непосредственных операндов
- •3. Ассемблирование и выполнение программы
- •3.1. Ввод программы
- •3.2. Подготовка программы для выполнения
- •3.3. Ассемблирование программы
- •3.4. Выполнение программы
- •3.5. Пример исходной программы
- •4. Отладчик turbo debugger
- •4.1. Навигация по диалоговым блокам
- •4.2. Активные клавиши
- •Изучение языка ассемблера для персональных компьютеров
- •Изучение стандартных функций прерывания dos
- •Функции для работы с клавиатурой
- •Функции для работы с экраном
- •Функции для работы с файлами
МИНИСТЕРСТВО ОБРАЗОВАНИЯ РОССИЙСКОЙ ФЕДЕРАЦИИ
КРАСНОЯРСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
МЕТОДИЧЕСКИЕ УКАЗАНИЯ К ЛАБОРАТОРНЫМ
РАБОТАМ ПО ДИСЦИПЛИНЕ ЦУ И МП
Красноярск 2001
УДК 621.382.049.77(07)
Методические указания к лабораторным работам по дисциплине ЦУ и МП: методические указания для студентов всех форм обучения специальностей 200700 – «Радиотехника», 201300 – «Техническая эксплуатация транспортного оборудования» / Сост. М.М. Мичурина, И.Н. Сушкин. Красноярск: КГТУ, 2001. 51 с.
1. Требования языка ассемблера
При вводе и выполнении программы на машинном языке ощутима трудность расшифровки машинного кода даже для очень небольшой программы. Более высоким уровнем кодирования является уровень ассемблера, в котором программист пользуется символическими мнемокодами вместо машинных команд.
Программа, написанная символическими мнемокодами, которые используются в языке Ассемблер, представляет собой исходный модуль. Для формирования исходного модуля применяют стандартные редакторы, работающие в ASCII кодах, например программу DOS EDIT. Затем с помощью программы ассемблерного транслятора исходный текст транслируется в машинный код, известный как объектная программа. И наконец программа DOS LINK определяет все адресные ссылки для объектной программы, генерируя загрузочный модуль.
1.1. Комментарии в программах на Ассемблере
Использование комментариев к программе улучшает ее ясность, особенно там, где назначение набора команд непонятно. Комментарий всегда начинается на любой строке исходного модуля с символа «точка с запятой» (;), и ассемблер полагает в этом случае, что все символы, находящиеся справа от (;), являются комментарием. Комментарий может содержать любые печатные символы, включая пробел, занимать всю строку или следовать за командой на той же строке, как показано в двух следующих примерах:
; Эта строка полностью является комментарием.
ADD AX,BX ; Комментарий вместе с командой.
Комментарии появляются только в листингах ассемблирования исходного модуля и не приводят к генерации машинных кодов, поэтому можно включать любое количество комментариев, не влияя на эффективность выполнения программы.
1.2. Формат кодирования
Основной формат кодирования команд на языке ассемблера имеет следующий вид:
[метка] команда [операнд(ы)]
Метка (если имеется), команда и операнд (если имеется) разделяются по крайней мере одним пробелом или символом табуляции. Максимальная длина строки – 132 символа. Примеры кодирования:
Метка |
Команда |
Операнд |
|
COUNT |
DB |
1 |
;Имя, команда, один операнд |
|
MOV |
AX,0 |
;Команда, два операнда |
Метки
Метка в языке Ассемблер может содержать следующие символы:
Буквы от A до Z и от a до z;
Цифры от 0 до 9;
Специальные символы знак вопроса (?);
точка (.) (только первый символ);
знак «коммерческое эт» (@);
подчеркивание ( _ );
доллар ($).
Первым символом в метке должна быть буква или специальный символ. Ассемблер не делает различия между заглавными и строчными буквами. Максимальная длина метки – 31 символ. Примеры меток: COUNT, PAGE25, $E10. Рекомендуется использовать описательные и смысловые метки. Все имена регистров, например, AX, DI или AL, являются зарезервированными и используются только для указания соответствующих регистров. Например, в команде
ADD AX,BX
ассемблер автоматически знает, что AX и BX относятся к регистрам. Однако в команде
MOV REGSAVE,AX
ассемблер воспримет имя REGSAVE только в том случае, если оно будет определено в сегменте данных.
Команда
Мнемоническая команда указывает ассемблеру, какое действие должен выполнить данный оператор. В сегменте данных команда определяет поле, рабочую область или константу. В сегменте кода команда определяет действие, например пересылка MOV или сложение ADD.
Операнд
Если команда специфицирует выполняемое действие, то операнд определяет начальное значение данных или элементы, над которыми выполняется действие по команде. Байт CNTR определен в сегменте данных и имеет нулевое значение в следующем примере:
CNTR DB 0 ; Определить байт с нулевым значением.
Команда может иметь один или два операнда или вообще быть без операндов. Рассмотрим следующие три примера:
Команда Операнд Комментарий
RET ; Нет операндов.
INC CX ; Увеличить CX (один операнд).
ADD AX,12 ; Прибавить 12 к AX (два операнда).
Метка, команда и операнд не обязательно должны начинаться с какой-либо определенной позиции в строке. Однако рекомендуется записывать их в колонку для большего удобства при чтении программы.
