русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Выбор операнда


Дата добавления: 2015-06-12; просмотров: 779; Нарушение авторских прав


Любая команда либо не использует операндов вообще, либо использует некоторое число операндов. Примером команды без операндов может служить команда NOP (нет операции). Если же команда использует операнды, они могут находится в одном из ниже указаных мест:

  • В самой команде (непосредственный операнд, константа).
  • В регистре ( 32-разрядный операнд в регистре EAX, EBX, ECX, EDX, ESI, EDI, ESP или EBP, 16-разрядный операнд в регистре AX, BX, CX, DX, SI, DI, SP или BP, 8-разрядный операнд в регистре AH, AL, BH, BL, CH, CL, DH или DL, в одном из сегментных регистров, в регистре EFLAGS для операций с флагами). Использование 16-разрядных операндов требует использования префикса размера 16-разрядного операнда (байта, предшествующего команде и содержащего значение 67H).
  • В памяти.
  • В порте ввода/вывода

Доступ ко всем операндам осуществляеися очень быстро. Регистровые и непосредственные операнды находятся непосредственно в процессоре (последние занесены в процессор в результате упреждающей выборки как часть интерпретируемой команды). Доступ к операндам, находящимся в памяти осуществляется тоже довольно быстро, если они помещены в кэш-память на микросхеме. Часть команд, в которых предусмотрено использование операндов, требует явного указания операндов, другие - используют неявно заданные операнды. Некоторые команды имеют как явные, так и неявные операнды. Примеру: Команда с неявным операндом: AAM

По определению, операнд команды AAM (ASCII-коррекция после умножения) содержится в регистре AX.

Команда с явными операндами: XCHG EAX, EBX

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

Команда с явным и неявным операндом: PUSH COUNTER

Переменная расположенная в памяти COUNTER (явный параметр) копируется в вершину стека (неявный параметр).



Особенно важно, что большинство команд имеют неявные операнды. Например, все арифметические операции обновляют регистр EFLAGS. Команды могут явно ссылаться на один или два операнда. Команды с двумя операндами, такие как MOV, ADD и XOR всегда перезаписывают один из двух операндов, помещая туда результат операции. Это позволяет выделить два вида операндов: операнд-источник (не изменяется при выполнении операции) и операнд назначения (приемник) (в который записывается результат операции). Для большинства команд, один из двух операндов - либо операнд-источник, либо операнд назначения, может располагатся в регистре или памяти. Второй операнд должен располагаться в регистре или непосредственно в команде (последнее только для операнда-источника). Это позволяет разбить команды, работающие с двумя операндами на следующие группы:

  • Регистр - регистр
  • Регистр - память
  • Память - регистр
  • Непосредственный операнд - регистр
  • Непосредственный операнд - память

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



<== предыдущая лекция | следующая лекция ==>
Формат команд | Операнды в памяти


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.128 сек.