ВУЗ:
Составители:
7
2. Особенности использования некоторых команд
Команды пересылки и загрузки (Таблица 1).
Команда MOV (to move - передвигать, перемещать) осуществляет пересылку байта
или слова из источника (это второй операнд, “op2”) в место назначения (первый операнд,
он же операнд-получатель, “op1”). В качестве источника и получателя могут служить
РОН, индексный или сегментный регистр, ячейка памяти. Источником могут также
являться данные (константа), непосредственно указанные в команде. MOV - одна из
наиболее часто используемых команд; в любой более или менее длинной программе чаще
всего встречается именно она.
Команда XCHG (to exchange - переставлять) осуществляет обмен байтами или
словами между своими операндами (РОН, индексные регистры, память). Сегментные
регистры не могут использоваться при обмене.
В этих командах, как и многих других двухоперандных командах рассматриваемых
МП, недопустимы
сочетания операндов типа «память-память», что представляет
определённые неудобства при программировании.
Команда PUSH (to push - толкать) служит для занесения содержимого 16-
разрядного источника (машинного слова) в стек. Источником могут быть РОН, индексный
регистр, сегментный регистр, ячейка памяти. Выполнению команды предшествует
автоматически выполняемое действие (SP)
←
(SP)-2.
Команда POP (to pop - выталкивать) извлекает 16-разрядный операнд из стека и
пересылает его в место назначения, указанное в команде - РОН, индексный регистр,
сегментный регистр, ячейку памяти. После извлечения операнда из стека МП
автоматически формирует новый адрес вершины стека, выполняя действие (SP)
←
(SP)+2.
Повторим ещё раз, что команды PUSH и POP работают только со словами, но не с
байтами.
Команда LEA (Load Executable Address) носит название «загрузить
исполнительный адрес». По этой команде извлекается не сам операнд, а его
исполнительный адрес ЕА. Действие команды состоит в передаче вычисленного 16-
разрядного адреса (внутрисегментного смещения) операнда в 16-разрядный регистр.
Команда LEA часто используется совместно с директивами Ассемблера DW, DB (Define
Word, Define Byte) определения данных. Другие примеры использования (в том числе
нестандартного) команды LEA приведены в справочной системе программы AsmEd.
Арифметические команды (Таблица 2). В классической системе команд 8086-
совместимых МП существуют все четыре арифметические действия - сложение,
вычитание, умножение, деление над 8- и 16-разрядными данными со знаком и без знака,
представляющими целые числа. (Вопросы, связанные с обработкой дробных чисел, в
настоящем Пособии не рассматриваются.) Числа со знаком (16-разрядные) представлены
в МП в дополнительном коде, их диапазон простирается от -32768 до +32767, диапазон
16-разрядных чисел без знака - от 0 до 65535. Все арифметические команды влияют на
флаги в регистре FLAGS, причём команды сложения и вычитания устанавливают флаги
SF, ZF, PF, AF, CF и OF по результатам своих действий; команды умножения затрагивают
только два флага CF и OF, которые устанавливаются в 1, если старшая половина
результата отлична от нуля; при выполнении команд деления флаги принимают
произвольные (не связанные с результатом) значения, и их обычно не используют.
Команда ADD (addition) выполняет сложение операнда-источника (“op2”) с
операндом места назначения (“op1”). Операндами могут быть регистры и ячейки памяти,
причём в качестве источника может быть указано число (константа). Команда SUB
(subtraction) выполняет вычитание операнда-источника из операнда-получателя (op1-op2),
записывая результат, разумеется, на место первого операнда. Опять же могут быть
использованы регистры, память; вычитаемое может быть константой. Напомним, что
7 2. Особенности использования некоторых команд Команды пересылки и загрузки (Таблица 1). Команда MOV (to move - передвигать, перемещать) осуществляет пересылку байта или слова из источника (это второй операнд, “op2”) в место назначения (первый операнд, он же операнд-получатель, “op1”). В качестве источника и получателя могут служить РОН, индексный или сегментный регистр, ячейка памяти. Источником могут также являться данные (константа), непосредственно указанные в команде. MOV - одна из наиболее часто используемых команд; в любой более или менее длинной программе чаще всего встречается именно она. Команда XCHG (to exchange - переставлять) осуществляет обмен байтами или словами между своими операндами (РОН, индексные регистры, память). Сегментные регистры не могут использоваться при обмене. В этих командах, как и многих других двухоперандных командах рассматриваемых МП, недопустимы сочетания операндов типа «память-память», что представляет определённые неудобства при программировании. Команда PUSH (to push - толкать) служит для занесения содержимого 16- разрядного источника (машинного слова) в стек. Источником могут быть РОН, индексный регистр, сегментный регистр, ячейка памяти. Выполнению команды предшествует автоматически выполняемое действие (SP) ← (SP)-2. Команда POP (to pop - выталкивать) извлекает 16-разрядный операнд из стека и пересылает его в место назначения, указанное в команде - РОН, индексный регистр, сегментный регистр, ячейку памяти. После извлечения операнда из стека МП автоматически формирует новый адрес вершины стека, выполняя действие (SP) ← (SP)+2. Повторим ещё раз, что команды PUSH и POP работают только со словами, но не с байтами. Команда LEA (Load Executable Address) носит название «загрузить исполнительный адрес». По этой команде извлекается не сам операнд, а его исполнительный адрес ЕА. Действие команды состоит в передаче вычисленного 16- разрядного адреса (внутрисегментного смещения) операнда в 16-разрядный регистр. Команда LEA часто используется совместно с директивами Ассемблера DW, DB (Define Word, Define Byte) определения данных. Другие примеры использования (в том числе нестандартного) команды LEA приведены в справочной системе программы AsmEd. Арифметические команды (Таблица 2). В классической системе команд 8086- совместимых МП существуют все четыре арифметические действия - сложение, вычитание, умножение, деление над 8- и 16-разрядными данными со знаком и без знака, представляющими целые числа. (Вопросы, связанные с обработкой дробных чисел, в настоящем Пособии не рассматриваются.) Числа со знаком (16-разрядные) представлены в МП в дополнительном коде, их диапазон простирается от -32768 до +32767, диапазон 16-разрядных чисел без знака - от 0 до 65535. Все арифметические команды влияют на флаги в регистре FLAGS, причём команды сложения и вычитания устанавливают флаги SF, ZF, PF, AF, CF и OF по результатам своих действий; команды умножения затрагивают только два флага CF и OF, которые устанавливаются в 1, если старшая половина результата отлична от нуля; при выполнении команд деления флаги принимают произвольные (не связанные с результатом) значения, и их обычно не используют. Команда ADD (addition) выполняет сложение операнда-источника (“op2”) с операндом места назначения (“op1”). Операндами могут быть регистры и ячейки памяти, причём в качестве источника может быть указано число (константа). Команда SUB (subtraction) выполняет вычитание операнда-источника из операнда-получателя (op1-op2), записывая результат, разумеется, на место первого операнда. Опять же могут быть использованы регистры, память; вычитаемое может быть константой. Напомним, что
Страницы
- « первая
- ‹ предыдущая
- …
- 5
- 6
- 7
- 8
- 9
- …
- следующая ›
- последняя »