![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Это необязательный элемент команды. Задает один (для одноадресной команды) или два адреса операндов, один из которых используется и как адрес результата.
md | reg | r/m | |||||
Рис. 3.6. Структура постбайта |
Постбайт (рис. 3.6) содержит 3 поля:
· md – поле режима адресации,
· reg – поле адреса регистра,
· r/m – поле адреса второго регистра или кода, определяющего способ вычисления адреса ячейки памяти.
Поле md. Это поле режима адресации.
Задает тип команды:
· регистр/регистр(r/r);
· регистр/память(r/m).
Для команд типа регистр-память задает процедуру вычисления адреса операнда в памяти:
· md =00 – режим адресации r/m без использования смещения,
· md=01 – режим адресации r/m с использованием смещения 1 байт),
· md =10 – режим адресации r/m с использованием смещения 2 байт),
· md =11 – режим адресации r/r.
Задании md ¹ 11 определяет команду типа регистр-память. В этом случае поле r/r содержит номер РОНа, в котором находится один из операндов, а поле r/m, – номер алгоритма вычисления адреса памяти, по которому хранится адрес второго операнда.
Исключение:
Можно задавать адрес операнда в памяти прямым 16-ти разрядным адресом. Признаком прямой адресации является комбинация значений md = 00 и r/m = 110 (в табл.1 выделены жирным шрифтом).
Количество байтов смещения disp, расположенных после постбайта, определяется по полю md постбайта.
На рис. 3.7 представлена структура команд МП Intel в реальном режиме и схемы вычисления адресов операндов.
Структура команд МП Intel в реальном режиме. | ||||||||||||
0,1 байт | 1 байт | 0,1 байт | 0,1,2 байта | 0,1,2 байта | ||||||||
Префикс | Код операции. | Постбайт | Disp | # d | ||||||||
md | r | r/M | ||||||||||
2 бита | 3 бита | 3 бита | ||||||||||
если | r/M≤11, | то – команда типа r/M; базовая индексная адресация; 1-й операнд находится в регистре, указанном полем r, адрес M вычисляется как(B)+(X)+#d16,где В и Х задаются кодом поля r/M. | ||||||||||
при: | 00 ü | Disp– отсутствует | ||||||||||
01 ý | Disp = 1 байт | |||||||||||
10 þ | Disp = 2 байта | |||||||||||
При | Команда типа r/r, операнды находятся в регистрах, указанными полями r и r/M. | |||||||||||
Вариант относительно-индексной адресации памяти: | ||||||||||||
если | r/M≥100, | то команда типа r/M, первый операнд находится в регистре, указанном полем r, адрес M вычисляется как(B)+ Disp,где B– задается кодом поля r/Mпостбайта. | ||||||||||
при | 00 ü | Disp – отсутствует | ||||||||||
01 ý | Disp= 1 байт | |||||||||||
10 þ | Disp= 2 байта | |||||||||||
Исключение: при md=00 и r/M = 110, адрес задается прямым 16-ти битным смещением (#d16). | ||||||||||||
Выбор сегмента: при указании в качестве компоненты адреса – (bp), используется сегмент стека (SS), иначе – сегмент данных (DS) | ||||||||||||
Рис.3.7. Структура команд МП Intel в реальном режиме и схемы вычисления адресов операндов. | ||||||||||||
В табл.1. представлены все формулы для вычисления адресов РОНов и ячеек памяти в зависимости от значений полей постбайта: md, reg, r/m.
Таблица 1.Постбайтовые режимы адресации МП IA-16 | |||||
Поле r/m | Поле md | ||||
w=0 | w=1 | ||||
DS:[bx + si] | DS:[bx + si + disp(1 байт)] | DS:[bx + si + disp(2 байта)] | al | ax | |
DS:[bx + di] | DS:[bx + di + disp(1 байт)] | DS:[bx + di + disp(2 байта)] | cl | cx | |
SS:[bp + si] | SS:[bp + si + disp(1 байт)] | SS:[bp + si + disp(2 байта)] | dl | dx | |
SS:[bp + di] | SS:[bp + di + disp(1 байт)] | SS:[bp + di + disp(2 байта)] | bl | bx | |
DS:[si] | DS:[si + disp(1 байт)] | DS:[si + disp(2 байта)] | ah | si | |
DS:[di] | DS [di + disp(1 байт)] | DS [di + disp(2 байта)] | ch | di | |
DS:[disp-2 байта] | SS:[bp + disp(1 байт)] | SS:[bp + disp(2 байта)] | dh | bp | |
DS:[bx] | DS [bx + disp(1 байт)] | DS [bx + disp(2 байта)] | bh | bx |
Вопросы для самопроверки:
1. Структура команд в МП IA-16.
2. Назначение префикса в командах МП IA-16.
3. Назначение постбайта в командах МП IA-16.
4. Поля постбайта в командах МП IA-16.
5. Поля постбайта в командах МП IA-16.
6. Тип сегмента используемого по умолчанию при выборке команд в МП IA-16.
7. Тип сегмента используемого по умолчанию при выборке операнда в МП IA-16.
8. Тип сегмента используемого по умолчанию при работе со стеком в МП IA-16.
9. Тип сегмента используемого по умолчанию при работе с командами обработки строк в МП IA-1.
10. Способы замены сегментов, используемых по умолчанию.
11. Назначение постбайта в МП IA-16.
12. Основные поля постбайта в МП IA-16.
13. Назначение поля md постбайта в МП IA-16.
14. Назначение поля reg постбайта в МП IA-16.
Дата публикования: 2014-11-03; Прочитано: 2068 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!