![](/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.5. Синаксис языка Ассемблера
Прежде чем двигаться дальше, обсудим синтаксис команд языка ассемблера.Мы должны выделить основные компоненты языка ассемблера, чтобы можно было затем обозначать эти компоненты с помощью сиандартных терминов.
Команда языка ассемблера состоит из четырех частей. Фиг. 2.8 показывает типичную команду ассемблера и названия этих частей.
--------------------------------------------------------
PART1: ADD AX,BX ;Добавить к длине буфера
Метка ОпКод Операнды Комментарий
--------------------------------------------------------
Фиг. 2.8 Синтаксис языка ассемблера
Единственная обязательная часть команды языка ассемблера - ОпКод (сокращение от ОПерационный КОД). Программисты иногда называют машинные команды кодами операций. Операционный код в утверждении языка асемблера определяет, какую операцию должен будет выполнить процессор, в нашем примере - операцию сложения (по английски - add - прим. перев.).
Поле операндов содержит дополнительную информацию о команде, например, какие значения участвуют в операции. Поле операндов определяется операционным кодом. Каждому коду операции должно соответствовать определенное число операндов. Для команды ADD требуется два операнда; операция перемены знака (NEG) обходится лишь одним, а для некоторых команд, например, команды десятичной коррекции DAA, операнды не нужны. В главе 4 описаны эти команды и их операнды.
Метка и комментарий необязательны в команде. Поле метки позволяет обозначить какое-либо конкретное место в памяти компьютера. Собственный адрес имеется у любого участка памяти, но выделить адрес какой либо команды трудно, если вообще возможно. Метка позволяет идентифицировать определенное место в памяти заданным программистом именем. Говоря технически, поле метки содержит символический указатель расположения команды. Если мы хотим обратиться к этой команде позднее, то мы делаем это через символьное имя и нам не требуетсся указывать абсолютное расположение данной инструкции. Использование меток - одна из причин предпочтительности языка ассемблера перед машинным языком. Превращением же символических имен в реальные адреса ведает ассемблер.
Поле комментариев служит для удобства программиста. Программист может использовать это поле для сообщения дополнительной информации о команде. Комментарий не обязательно жестко связан с командой. Вы можете отвести под комментарий целую строку, поставив в ее начале символ ";". Это позвляет программисту в ключить в листинг ассемблера блок собственной информации, к примеру, описание используемого алгоритма.
У каждого есть собственное представление о том, как следует комментировать программы, и вы наверняка тоже скоро выработаете свое. Как правило, вы будете пытаться включать в них информацию, которая относится непосредственно к решаемой проблеме. В приведенном примере было бы бессмысленно комментировать команду чем-нибудь вроде "сложить AX и BX". Это не более, чем повторение операционного кода и операндов (разве что в переводе с английского - прим.перев.). Если уж вы намерены связаться с комментариями, то делайте их достойными труда их написания и чтения.