Создание файла с исходным текстом обычно выполняется с помощью редактора текстов. Все исходные файлы должны иметь определенное расширение спецификации. Например, prg.asm
Первым этапом обработки программы, написанной на языке ассемблера, является трансляция. Если трансляция прошла успешно, то система формирует и сохраняет для последующего использования объектный модуль, имя которого имеет определенное расширение. Prg.obj
Вторым этапом обработки программы является операция редактирования связей, формирующая исполняемый модуль, или программу в машинных кодах, готовую к выполнению. В процессе редактирования объектный модуль(представляющий собой исходный модуль в машинных кодах) объединяется с разными системными модулями или дополнительными программами. В результате создается файл, который имеет расширение.tcp
Таким образом, разработка программ на машинно-ориентированном языке состоит из следующих шагов:
1. Создание исходного текста программы с использованием текстового редактора.
2. Создание объектного модуля. Трансляция программы
3. Создание загрузочного модуля. Компоновка программы
4. Отладка программы с использованием программ-отладчиков
Основная учебная литература
1. П. Абель Язык ассемблера для IBM PC и программирования. М. «Высшая школа», 1992, 447с.
2. Гук Михаил Процессоры Intel: от 8086 до Pentium II: Архитектура. Интерфейс. Программирование / М. Гук. - СПб. и др.: Питер, 1998. - 220с.
3. Бек Л. Введение в системное программирование. - М.: Мир, 1988
4. Пирогов В. Ассемблер в примерах. – Спб: БХВ, 2005. – 416 с.
5. Пильщиков В.Н. Программирование на языке ассемблера IBM PC. – М.: «Диалог-МИФИ», 1999. – 288 с.
6. Юров В. Assembler: Спец. справ. / В. Юров. - СПб. и др.: Питер, 2000. - 489с.: ил.
Электронные образовательные ресурсы:
Ресурсы ИрГТУ, доступные в библиотеке университета и в локальной сети.
Ресурсы сети Интернет
https://lite-programming.ru/
Приложение №1. Макрокоманды из библиотеки MAC.lib
1. Адресация курсора
CLS
ДЕЙСТВИЕ Очищает экран.
CRLF
ДЕЙСТВИЕ Возврат каретки и переход к следующей строке; перемещает
курсор к началу следующей строки.
HOME
ДЕЙСТВИЕ Перемещает курсор в левый верхний угол экрана.
2. Вывод изображений на экран
MESSAGE ИМЯ-СТРОКИ
ДЕЙСТВИЕ Изображает на экране строку символов, находящуюся
в сегменте данных.
ВХОДНЫЕ ЗНАЧЕНИЯ ИМЯ-СТРОКИ.
ФОРМАТ СТРОКИ Строка должна заканчиваться символом $.
Например ILLEGAL DB Ошибочное значение.
ВЫХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют.
MESSAGE_DX
ДЕЙСТВИЕ Изображает на экране строку символов из сегмента данных,
смещение которой содержится в регистре DX.
ВХОДНЫЕ ЗНАЧЕНИЯ (DS:DX)=начальный адрес строки символов.
ФОРМАТ СТРОКИ Тот же, что и для MESSAGE.
PRINT_AL
ДЕЙСТВИЕ Изображает символ, код которого содержится в регистре AL,
затем перемещает курсор в следующую позицию.
ВХОДНЫЕ ЗНАЧЕНИЯ (AL)=код символа.
Содержимое регистра AL не изменяется.
PRINT_NUMBER
ДЕЙСТВИЕ Изображает число со знаком, содержащимся в регистре AX.
ВХОДНЫЕ ДАННЫЕ (AX)=изображаемое число.
ВЫХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют; содержимое регистра AX не изменяется.
SHOW_AL
ДЕЙСТВИЕ Изображает символ, код которого содержится в регистре AL,
но не перемещает курсор.
ВХОДНЫЕ ЗНАЧЕНИЯ (AL)=код символа.
ВЫХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют; содержимое регистра (AL) не изменяется.
Ввод данных с клавиатуры
INKEY
ДЕЙСТВИЕ Ожидает нажатия на клавишу, затем считывает ее ASCII-код
в регистр AL и изображает соответствующий ему символ
на экране.
ВХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют.
ВЫХОДНЫЕ ЗНАЧЕНИЯ (AL)=ASCII-код клавиши.
ПРИМЕЧАНИЯ 1.Для считывания кода клавиши без изображения символа
используйте макроопределение INKEY_I.
INKEY_I
ДЕЙСТВИЕ Ожидает нажатия на клавишу, затем считывает ее ASCII-код
в регистр AL, но символ на экране не изображает.
ВХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют.
ВЫХОДНЫЕ ЗНАЧЕНИЯ (AL)=ASCII-код клавиши.
ПРИМЕЧАНИЯ 1.Для изображения считанного вами символа используйте
макроопределение INKEY.
IN$ ИМЯ-СТРОКИ
ДЕЙСТВИЕ Считывает последовательность набираемых на клавиатуре
символов в буфер, находящийся в сегменте данных.
ВХОДНЫЕ ЗНАЧЕНИЯ ИМЯ-СТРОКИ=имя буфера.
ФОРМАТ БУФЕРА Буфер должен быть на три байта длиннее, чем
помещаемая в него строка; первый байт определяет
максимально возможную длину строки плюс один.
Например, следующий буфер способен воспринять строки
длиной до 10 символов:
STRING_BUFF DB 11,12 DUP(?)
ВЫХОДНЫЕ ЗНАЧЕНИЯ Второй байт буфера содержит фактическую длину
считанной строки(в байтах).
ПРИМЕР IN$ STRING_BUFF; Считать символы в буфер
KEY_$2BIN
ДЕЙСТВИЕ Преобразует последовательность набранных на клавиатуре
символов в число со знаком, помещаемое в регистр AX.
ВХОДНЫЕ ЗНАЧЕНИЯ Отсутствуют.
ВЫХОДНЫЕ ЗНАЧЕНИЯ Если последовательность символов допустима, то CF=0
и (AX)=полученное число. Если недопустима, то СF=1.
ПРИМЕР KEY_$2BIN; Ввести число с клавиатуры
JC PRINT ERROR
Приложение №2
Министерство образования и науки РФ
ИРКУТСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
Кафедра вычислительной техники
Допускаю к защите
Руководитель Л.Л. Куликова
подпись, И.О. Фамилия