<<
>>

Команды Ассемблера

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

Точно так же, как и в машинных командах, операнды команд Ассемблера могут быть непосредственными, регистровыми (ах, bх и т. д.) или адресами полей па- мяти в прямой или различных вариантах косвенной адресации. Способы записи непосредственных операндов, обозначения регистров и способы задания прямых и косвенных адресов памяти рассматривались ранее, при обсуждении форматов машинных команд. Поэтому без подробного объяснения приведем некоторые примеры команд с различными способами адресации:

mоv ах,[25] /прямая адресация, смещение в команде

iпс [bх][si] /базирование и индексирование

iпс v[bр][di] /базирование, индексирование и смещение

Отметим, что использованные в некоторых примерах метки рl и v обязательно должны быть описаны где-нибудь в программе с помощью директив определе- ния данных, иначе программа не будет оттранслирована.

Для определения внутрисегментного смещения могут использоваться выраже- ния, в которые входят арифметические операции сложения, вычитания и умно- жения. Например, операнд в команде iпс pl+2 является таким выражением. Важно понимать, что операнды в Ассемблере, в отличие от операндов, скажем, в Паскале, соответствуют не значениям, над которыми выполняется действие, а адресам памяти.

Следовательно, действие выполняется не над значением, а над адресом. Пусть рl определено в сегменте, приведенном в листинге 4.1. Вспо- миная о том, что метки в Ассемблере — это символические обозначения адресов памяти, приходим к выводу: pl+2 — это адрес поля, которое имеет внутрисег- ментное смещение на 2 большее, чем смещение для поля рl. Учитывая, что в оп- ределении поля рl в листинге 4.1 его длина равна 2, получаем, что pl+2 адресует поле с меткой сопl и, следовательно, результатом выполнения команды инкре- мента iпс pl+2 является значение 16 в поле сопl, — в то время как значение такого же выражения pl+2 в языке Паскаль равно -6, поскольку значение рl по определению равно -8. Именно в этом состоит самое существенное отличие вы- ражений в Ассемблере от выражений в языках высокого уровня.

Анализируя приведенные примеры, можно отметить, что при записи команд на Ассемблере не приходится заботиться о параметрах команд, таких как w, d, mod, r/m, которые с достаточным трудом подбирались при разработке программы на уровне машинных команд. Ассемблер формирует их автоматически по осталь- ным элементам, имеющимся в команде или в других частях программы.

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

4.3.5.

<< | >>
Источник: Степанов А. Н.. Архитектура вычислительных систем и компьютерных сетей. 2007

Еще по теме Команды Ассемблера:

  1. Определение команды.
  2. § 4.5. Деятельность команд в организации
  3. Признаки команды.
  4. Пример настройки и реабилитации в футбольной команде
  5. Работа с другими командами
  6. Четыре шага по созданию эффективной команды
  7. ШЕСТЬ СТУПЕНЕЙ НА ПУТИ СОЗДАНИЯ КОМАНДЫ.
  8. Кто становится лидером команды
  9. Создание деловой команды «Вероятно, я не лучший советчик в этом вопросе».
  10. Эд САЛЛИВАН. ВРЕМЯ — ДЕНЬГИ Создание команды разработчиков, программного обеспечения, 2001
  11. Таненбаум Э.. Архитектура компьютера. 5-е изд, 2007
  12. В. И. Юров. Assembler. Учебник для вузов. 2-е изд, 2003
  13. Проведение интервью