Головна |
Значення цього байта визначає використовувану форму адреси операндів. Операнди можуть перебувати в пам'яті в одному або двох регістрах. Якщо операнд знаходиться в пам'яті, то байт modr / m визначає компоненти (зміщення, базовий і індексний регістри), що використовуються для обчислення його ефективного адреси. Байт modr / m складається з трьох полів:
1) поле mod визначає кількість байт, займаних в команді адресою операнда;
2) поле reg / коп визначає або регістр, що знаходиться в команді на місці першого операнда, або можливе розширення коду операції;
3) поле r / m використовується спільно з полем mod і визначає або регістр, що знаходиться в команді на місці першого операнда (якщо mod = 00, це означає, що поле зміщення в команді відсутня і адреса операнда визначається вмістом базового і (або) індексного регістра . Якщо mod = 01, це означає, що поле зміщення в команді присутня, займає один байт і модифікується вмістом базового і (або) індексного регістра. Якщо mod = 10, це означає, що поле зміщення в команді присутня, займає два або чотири байти (в залежності від діючого за замовчуванням або визначається префіксом розміру адреси) і модифікується вмістом базового і (або) індексного регістра. Якщо mod = 11, це означає, що операндів в пам'яті немає, вони знаходяться в регістрах.), або використовуються для обчислення ефективного адреси (спільно з полем зміщення в команді) базові та індексні регістри.
4. Байт масштаб - індекс - база(Байт sib). Використовується для розширення можливостей адресації операндів. Байт sib складається з трьох полів:
1) поля масштабу ss. У цьому полі розміщується масштабний множник для індексного компонента index, що займає наступні 3 біта байта sib;
2) поля index. Використовується для зберігання номера індексного регістра, який застосовується для обчислення ефективної адреси операнда;
3) поля base. Використовується для зберігання номера базового регістра, який також застосовується для обчислення ефективної адреси операнда.
організація пам'яті | Основне застосування організації віртуальної пам'яті | Регістри загального призначення | сегментні регістри | Регістри стану і управління | формат команд | Обробка переривань | До теми про регістрах 2.3 Регістри стану і управління | Життєвий цикл програми | Процес розробки програми |