![](/user_photo/2706_HbeT2.jpg)
- •2.4. Машинный язык и язык Ассемблера
- •2.5. Синаксис языка Ассемблера
- •2.6. Принципы работы Ассемблера
- •2.7. Биты, байты и слова
- •2.8. Нумерация бит
- •2.9. Набор символов
- •2.10. Принципы работы компьютера
- •2.11. Процедуры
- •2.12. Стек
- •2.13. Прерывания
- •3.1. Модель программирования 8088
- •3.2. Регистры общего назначения
- •3.3. Регистры адресации
- •3.4. Прямая адресация
- •3.5. Вычисление адресов
- •3.6. Адресация через базу и смещение
- •3.8. Байт mod r-m
- •3.9 Физическая адресация
- •3.10. Сегментные регистры
- •3.11. Предназначение сегментов
- •3.12. Оператор Segment
- •3.13. Оператор Assume
- •3.14. Управляющие рагистры
- •3.14.1. Указатель инструкций (ip)
- •3.14.2. Указатель стека
- •3.14.3. Регистр флагов
- •3.14.4. Флаг знака
- •3.14.5. Флаг нуля
- •3.14.6. Флаг четности
- •3.14.7. Флаг переноса
- •3.14.8. Дополнительный флаг переноса
- •3.14.9. Флаг переполнения
- •3.14.10. Флаг захвата
- •3.15. Векторы прерываний
- •Глава 4 - Набор команд микропроцессора 8088
- •4.1. Пересылка данных
- •4.1.1. Команда пересылки
- •4.1.2. Команда замены
- •4.1.3. Команды ввода и вывода
- •4.1.4. Загрузка исполнительного адреса
- •4.1.5. Загрузка указателя
- •4.1.6. Пересылка флагов
- •4.1.7. Перекодировка
- •4.2. Операции со стеком
- •4.3. Передача параметров
2.6. Принципы работы Ассемблера
Рассмотрим теперь работу ассемблера в целом. Детали будут обсуждены позднее, но сейчас нам нужно ввести новые термины и ознакомиться с реальным результатом работы ассемблера.
Ассемблер берет программу, написанную на языке ассемблера, и превращает ее в машинный язык. Файл, который содержит программу на языке ассемблера, называют исходным файлом. Выход и ассемблера в действительности является не собственно машинным языком, а некоторым промежуточным представлением программы. Этот выходной файл называют объектным файлом. Данные в нем называются объектным кодом. Для получения из него настоящего машинного кода объектный код должен быть несколько изменен. Для IBM PC это делает программа редактор связей LINK. Шаг преобразования объектных кодов в машинные принято называть построением связей или редактированием связей. Как пользоваться редактором связей мы увидим в одной из следующих глав.
Помимо преобразования исходного кода в объектный ассемблер создает несколько других выходных файлов. Один из них - ассемблерный листинг. Он содержит сообщение о действиях ассемблера. Зтот файл содержит исходный код вместе с комментариями, а также объектный код, сформированный ассемблером. Фиг. 2.9 дает пример листинга ассемблера, иногда называемого распечаткой.
Microsoft (R) Macro Assembler Version 5.00 10/28/88 16:35:34
Фиг. 2.9 Пример ассемблирования Page 1-1
1 PAGE ,132
2 TITLE Фиг. 2.9 Пример ассемблирования
3 0000 CODE SEGMENT
4 ASSUME CS:CODE
5
6 0000 03 C3 PART1: ADD AX,BX ; Сложить с длиной буфера
7
8 0002 CODE ENDS
9 END
Фиг. 2.9 Пример ассемблирования
Взяв пример команды ассемблера, рассмотрим результаты работы ассемблера. В правой части распечатки находятся исходные команды. В левой части - информация, сгенерированная ассемблером. Первая колонка содержит номер каждой строки распечатки. Ассемблер устанавливает эти номера для исходного файла. Они строк не обязательно соотносятся с номерами строк в исходном файле сформированном текстовым редактором.
Во второй колонке содержатся адреса инструкций. Программа LINK может их изменить, но они являются лучшим предположением, которое может сделать ассемблер на шаге ассемблирования. Следующая колонка - код команды на машинном языке. Поскольу команды 8088 имеют длину от 8 до 56 бит, это поле будет изменяться в размере. Кроме того, программа LINK может изменить некоторую информацию в поле объектных кодов. Редактор связей может изменить любую группу команд, оперирующих с адресами. Однако, за исключением адресов, листинг ассемблера дает верные машинные коды, которые и будут в дальнейшем исполняться.
В большинстве примеров программ мы будем использовать листинг ассемблера. Это позволит нам сразу видеть вырабатываемый ассемблером код.
Другой создаваемый ассемблером файл - файл перекрестных сыылок. Этот файл описывает все связи между метками и командами, которые их используют. Такая информация незаменима, когда вы пытаетесь изменить программу. Вы можете воспользовваться перекрестными ссылками для того, чтобы выявить все команды, которые обращаются к определенному участку памяти. Это позволяет программисту определить все команды, на которые может повлиять изменение в другой части программы. Использование информации о перекрестных ссылках будет обсуждаться в главе 5.