русс | укр

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

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

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

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


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

E.2.3.4 Кодирование режима адресации


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


 

 

За исключением специальных команд, таких как PUSH и POP, для которых режим

адресации определен заранее, режим адресации для текущей команды

описывается в байтах адресации. Этот байт следует за основным кодом

операции. Возможно использование двух байтов адресации: "mod r/m" (первый

байт) и "s-i-b" (второй байт, "масшта-индекс-база")

 

Байт "s-i-b" присутствует в команде, если используется режим 32- разрядной

адресации и байт "mod r/m" содержит поля r/m = 100 и mod = 00, 01 или 10.

Если байт "масштабирование-индекс-база" присутствует в команде,

32-разрядный режим адресации есть функция от полей mod, ss, index и base.

Первый байт адресации ( байт "mod r/m" ) содержит также три бита ( на

Рисунке 10.1 они обозначены TTT ), которые иногда используются как

расширение основного кода операции. В других случаях, эти три бита могут

использоваться в качестве поля reg.

 

При вычислении эффективного адреса используется 16-разрядный или

32-разрядный формат. Для вычисления 16-разрядного эффективного адреса

используются 16-разрядные компоненты, а для 32-разрядного - 32-разрядные

компоненты. При использовании 16-разрядной адресации байт "mod r/m"

интерпретируется как описатель 16-разрядного режима адресации, а при

использовании 32-разрядной адресации байт "mod r/m" интерпретируется как

описатель 32-разрядного режима адресации.

 

Следующие далее таблицы содержат определения всех возможных способов

кодирования для всех 16- и 32-разнядных режимов адресации.

Кодирование 16-разрядного режима адресации в байте "mod r/m"

 

+---------------------------------------------------+

| mod r/m | Эффективный адрес |



+------------------+--------------------------------|

| 00 000 | DS:[BX + SI] |

| 00 001 | DS:[BX + DI] |

| 00 010 | SS:[BP + SI] |

| 00 011 | SS:[BP + DI] |

| 00 100 | DS:[SI] |

| 00 101 | DS:[DI] |

| 00 110 | DS:d16 |

| 00 111 | DS:[BX] |

| | |

| 01 000 | DS:[BX + SI + d8] |

| 01 001 | DS:[BX + DI + d8] |

| 01 010 | SS:[BP + SI + d8] |

| 01 011 | SS:[BP + DI + d8] |

| 01 100 | DS:[SI + d8] |

| 01 101 | DS:[DI + d8] |

| 01 110 | SS:[BP + d8] |

| 01 111 | DS:[BX + d8] |

+---------------------------------------------------+

 

+---------------------------------------------------+

| mod r/m | Эффективный адрес |



+------------------+--------------------------------|

| 10 000 | DS:[BX + SI + d16] |

| 10 001 | DS:[BX + DI + d16] |

| 10 010 | SS:[BP + SI + d16] |

| 10 011 | SS:[BP + DI + d16] |

| 10 100 | DS:[SI + d16] |

| 10 101 | DS:[DI + d16] |

| 10 110 | SS:[BP + d16] |

| 10 111 | DS:[BX + d16] |

| | |

| 11 000 | регистр: см. ниже |

| 11 001 | регистр: см. ниже |

| 11 010 | регистр: см. ниже |

| 11 011 | регистр: см. ниже |

| 11 100 | регистр: см. ниже |

| 11 101 | регистр: см. ниже |

| 11 110 | регистр: см. ниже |

| 11 111 | регистр: см. ниже |

+---------------------------------------------------+

 

+---------------------------------------------------+

| Выбор регистра при помощи поля r/m |

| для 16-разрядных операций |

+---------------------------------------------------|

| | Функции поля w |

| mod r/m +-----------------------------------------|

| | ( когда w = 0 ) | ( когда w = 1 ) |

+---------+-------------------+---------------------|

| 11 000 | AL | AX |

| 11 001 | CL | CX |

| 11 010 | DL | DX |

| 11 011 | BL | BX |

| 11 100 | AH | SP |

| 11 101 | CH | BP |

| 11 110 | DH | SI |

| 11 111 | BH | DI |

+---------------------------------------------------+

 

+---------------------------------------------------+

| Выбор регистра при помощи поля r/m |

| для 32-разрядных операций |

+---------------------------------------------------|

| | Функции поля w |

| mod r/m +-----------------------------------------|

| | ( когда w = 0 ) | ( когда w = 1 ) |

+---------+-------------------+---------------------|

| 11 000 | AL | EAX |

| 11 001 | CL | ECX |

| 11 010 | DL | EDX |

| 11 011 | BL | EBX |

| 11 100 | AH | ESP |

| 11 101 | CH | EBP |

| 11 110 | DH | ESI |

| 11 111 | BH | EDI |

+---------------------------------------------------+

 

 

Кодирование 32-разрядного режима адресации в байте "mod r/m"

 

+---------------------------------------------------+

| mod r/m | Эффективный адрес |



+------------------+--------------------------------|

| 00 000 | DS:[EAX] |

| 00 001 | DS:[ECX] |

| 00 010 | SS:[EDX] |

| 00 011 | SS:[EBX] |

| 00 100 | присутствует s-i-b |

| 00 101 | DS:d32 |

| 00 110 | DS:[ESI] |

| 00 111 | DS:[EDI] |

| | |

| 01 000 | DS:[EAX + d8] |

| 01 001 | DS:[ECX + d8] |

| 01 010 | SS:[EDX + d8] |

| 01 011 | SS:[EBX + d8] |

| 01 100 | присутствует s-i-b |

| 01 101 | SS:[EBP + d8] |

| 01 110 | DS:[ESI + d8] |

| 01 111 | DS:[EDI + d8] |

+---------------------------------------------------+

+---------------------------------------------------+

| mod r/m | Эффективный адрес |



+------------------+--------------------------------|

| 10 000 | DS:[EAX + d32] |

| 10 001 | DS:[ECX + d32] |

| 10 010 | SS:[EDX + d32] |

| 10 011 | SS:[EBX + d32] |

| 10 100 | присутствует s-i-b |

| 10 101 | SS:[EBP + d32] |

| 10 110 | DS:[ESI + d32] |

| 10 111 | DS:[EDI + d32] |

| | |

| 11 000 | регистр: см. ниже |

| 11 001 | регистр: см. ниже |

| 11 010 | регистр: см. ниже |

| 11 011 | регистр: см. ниже |

| 11 100 | регистр: см. ниже |

| 11 101 | регистр: см. ниже |

| 11 110 | регистр: см. ниже |

| 11 111 | регистр: см. ниже |

+---------------------------------------------------+

 

+---------------------------------------------------+

| Выбор регистра при помощи поля r/m |

| для 16-разрядных операций |

+---------------------------------------------------|

| | Функции поля w |

| mod r/m +-----------------------------------------|

| | ( когда w = 0 ) | ( когда w = 1 ) |

+---------+-------------------+---------------------|

| 11 000 | AL | AX |

| 11 001 | CL | CX |

| 11 010 | DL | DX |

| 11 011 | BL | BX |

| 11 100 | AH | SP |

| 11 101 | CH | BP |

| 11 110 | DH | SI |

| 11 111 | BH | DI |

+---------------------------------------------------+

 

+---------------------------------------------------+

| Выбор регистра при помощи поля r/m |

| для 32-разрядных операций |

+---------------------------------------------------|

| | Функции поля w |

| mod r/m +-----------------------------------------|

| | ( когда w = 0 ) | ( когда w = 1 ) |

+---------+-------------------+---------------------|

| 11 000 | AL | EAX |

| 11 001 | CL | ECX |

| 11 010 | DL | EDX |

| 11 011 | BL | EBX |

| 11 100 | AH | ESP |

| 11 101 | CH | EBP |

| 11 110 | DH | ESI |

| 11 111 | BH | EDI |

+---------------------------------------------------+

 

 

Кодирование 32-разрядного режима адресации ( при наличии байта "mod r/m" и

байта "s-i-b" )

 

+---------------------------------------------------+

| mod r/m | Эффективный адрес |



+---------+-----------------------------------------|

| 00 000 | DS:[EAX + (масштабированный индекс)] |

| 00 001 | DS:[ECX + (масштабированный индекс)] |

| 00 010 | DS:[EDX + (масштабированный индекс)] |

| 00 011 | DS:[EBX + (масштабированный индекс)] |

| 00 100 | SS:[ESP + (масштабированный индекс)] |

| 00 101 | DS:[d32 + (масштабированный индекс)] |

| 00 110 | DS:[ESI + (масштабированный индекс)] |

| 00 111 | DS:[EDI + (масштабированный индекс)] |

| | |

| 01 000 | DS:[EAX+(масштабированный индекс)+d8] |

| 01 001 | DS:[ECX+(масштабированный индекс)+d8] |

| 01 010 | DS:[EDX+(масштабированный индекс)+d8] |

| 01 011 | DS:[EBX+(масштабированный индекс)+d8] |

| 01 100 | SS:[ESP+(масштабированный индекс)+d8] |

| 01 101 | SS:[EBP+(масштабированный индекс)+d8] |

| 01 110 | DS:[ESI+(масштабированный индекс)+d8] |

| 01 111 | DS:[EDI+(масштабированный индекс)+d8] |

| | |

| 10 000 | DS:[EAX+(масштабированный индекс)+d32] |

| 10 001 | DS:[ECX+(масштабированный индекс)+d32] |

| 10 010 | DS:[EDX+(масштабированный индекс)+d32] |

| 10 011 | DS:[EBX+(масштабированный индекс)+d32] |

| 10 100 | SS:[ESP+(масштабированный индекс)+d32] |

| 10 101 | SS:[EBP+(масштабированный индекс)+d32] |

| 10 110 | DS:[ESI+(масштабированный индекс)+d32] |

| 10 111 | DS:[EDI+(масштабированный индекс)+d32] |

+---------------------------------------------------+

 

Примечание: Поле mod расположено в байте "mod r/m", поля ss, index, base в

байте "s-i-b".

 

+---------------------------------------------------+

| ss | Коэффициент масштабирования |

+------------------+--------------------------------|

| 00 | *1 |

| 01 | *2 |

| 10 | *4 |

| 11 | *8 |

+---------------------------------------------------+

+---------------------------------------------------+

| index | Индексный регистр |

+------------------+--------------------------------|

| 000 | EAX |

| 001 | ECX |

| 010 | EDX |

| 011 | EBX |

| 100 | индексный регистр |

| | не используется ** |

| 101 | EBP |

| 110 | ESI |

| 111 | EDI |

+---------------------------------------------------+

 

** ВАЖНОЕ ЗАМЕЧАНИЕ: Когда поле index содержит 100, указывающее, что

мндексный регистр не используется, поле ss ДОЛЖНО содержать 00. В

противном случае эффективный адрес не определен.

 

 

 



<== предыдущая лекция | следующая лекция ==>
E.2.3.2 Кодирование поля регистра общего назначения (reg) | E.2.3.7 Кодирование поля условия проверки (tttn)


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


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

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

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


 


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

 
 

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

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