Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция ЭВМ 2013-2014.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
3.85 Mб
Скачать

Тема 4.2. Формат команд и их классификация

Основными элементами ассемблера являются директивы ассемблера и команды МП.

Команды описывают действия МП в процессе выполнения программы и всегда порождают машинный код в памяти системы.

Директивы служат для сообщения информации, необходимой в процессе трансляции программы. Они обеспечивают резервирование ячеек памяти, назначение имен, распределение сегментных регистров и т.д. Особенностью директив является то, что они, как правило, не порождают машинный код в памяти системы и поэтому часто называются псевдокомандами.

Программа на ассемблере представляет собой совокупность строк. Каждая строка содержит лишь одну команду МП или директиву ассемблера.

Предложения ассемблера бывают четырех типов:

[метка:]

мнемоника_команды

[операнд(ы)]

[;комментарий]

Метка

Код операции

Операнды

;Комментарий

MET:

MOVE

AX, BX

;Пересылка

Рис. 30 Формат директив и машинных команд

  • команды или инструкции (имя), представляющие собой символические аналоги машинных команд.

В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора;

  • макрокоманды (мнемокод)— оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;

  • директивы (операнды), являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении;

  • строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.

Когда мы пишим программу на ассемблере, вы просто пишете команды процессору. Команды процессору - это просто коды или коды операций или опкоды. Опкоды - фактически "читаемый текст"- версии шестнадцатеричных кодов. Из-за этого, ассемблер считается самым низкоуровневым языком программирования, все в ассемблере непосредственно преобразовывается в шестнадцатеричные коды.

Числа в ассемблере могут представляться в двоичной, десятеричной или шестнадцатеричной системе. Для того, чтобы показать в какой системе использовано число надо поставить после числа букву. Для бинарной системы пишется буква b (пример: 0000010b, 001011010b), для десятеричной системы можно ничего не указывать после числа или указать букву d (примеры: 4589, 2356d), для шестнадцатеричной системы надо указывать букву h, шестнадцатеричное число надо обязательно писать с нулём в начале (примеры: 00889h, 0AC45h, 056Fh, неправильно F145Ch, С123h).

По функциональному признаку команды можно разбить на пять больших групп:

1) команды пересылки данных,

2) арифметические команды,

3) логические команды,

4) команды переходов,

5) команды управления.

Существует пять основных способов адресации:

  • регистровая,

  • непосредственная,

  • прямая,

  • косвенная,

  • стековая.

В первом случае операнд(ы) располагаются в регистрах микропроцессора (МП), например по команде MOV AX,CX пересылается содержимое CX в AX.

При непосредственной адресации операнд располагается в памяти непосредственно за КОП, инструкция MOV AL,0f5h записывает число 245(f5) в регистр AL.

В случае прямой адресации за КОП следует не сам операнд, а адрес ячейки памяти или внешнего устройства, например команда IN AL,40h вводит байт данных из внешнего устройства с адресом 40h.

Косвенная адресация отличается от регистровой тем, что в регистре хранится адрес операнда, т.е. по команде MOV AL,[BX] в аккумулятор al будет записано число из ячейки памяти с адресом, хранящимся в регистре BX.

Стековая адресация производится к операндам расположенным в области памяти, называемой стек.