ВУЗ:
Составители:
Рубрика:
специально выделено место, которое является исключением из правил. Данный
вид адресации называется прямым. Вообще, по отношению к способам
адресации установилась некая терминология.
Непосредственная адресация: адрес «запрятан» в коде операции.
Очевидный пример: mod=11, значит dst — регистр, номер которого указывается
в КОПе (в разрядах D2..D0).
Прямая адресация. Следом за КОПом должен следовать адрес ячейки
памяти (сначала младший байт, затем —старший). Таким образом, в машинном
коде сразу виден адрес dst. В таблице 3: mod=00, seg/mem=110.
Косвенная адресация. В коде операции указывается источник
(хранилище) адреса ячейки памяти. Пример тому —место в таблице 3: mod=00,
reg/mem=100, 101, 111. Во всех этих случаях адрес dst автоматически будет
извлекаться из регистра SI, или DI, или BX. Значит, прежде чем обратиться к
ячейке памяти, адрес этой ячейки надо загрузить в соответствующий регистр.
Иначе получится на «деревню к дедушке».
Таблица 3 —Формирование эффективного адреса dst (mod 7- 011)
Reg/mem mod (D7,D6)
D2 D1 D0 00 01 10
0 0 0 EA=<BX>+<SI> EA=<BX>+<SI>+см.1б EA=<BX>+<SI>+см.2б
0 0 1 EA=<BX>+<DI> EA=<BX>+<DI>+см.1б EA=<BX>+<DI>+см.2б
0 1 0 EA=<BP>+<SI> EA=<BP>+<SI>+см.1б EA=<BP>+<SI>+см.2б
0 1 1 EA=<BP>+<DI> EA=<BP>+<DI>+см.1б EA=<BP>+<DI>+см.2б
1 0 0 EA=<SI> EA=<SI>+см.1б EA=<SI>+см.2б
1 0 1 EA=<DI> EA=<DI>+см.1б EA=<DI>+см.2б
1 1 0
Прямая адресация
EA=адрес(2 байт)
EA=<BP>+см.1б EA=<BP>+см.2б
1 1 1 EA=<BX> EA=<BX>+см.1б EA=<BX>+см.2б
Относительная адресация. В этом случае вместо прямого адреса
следом за кодом операции располагают смещение (disp). Это смещение (в
таблице 3 обозначено: см.) складывается с текущим адресом, который
может храниться в IP, BP, BX, SI, DI. Причем, это смещение со знаком
(старший разряд выступает в качестве знакового бита), поскольку
смещение может быть как вперед, так и назад, и в дополнительном коде.
Еще раз следует отметить, что положительные числа со знаком в прямом и
дополнительном кодах совпадают, а отрицательное число в прямом коде
преобразуют в дополнительный инверсией его (знак не меняют) и
добавлением к результату единицы.
Все эти четыре способа — классика. А далее возможны комбинации из
этих способов со смещениями, что и следует из таблицы 3 для МП 8086. Здесь
смещение может быть коротким (см. 1б. – смещение размером в один байт) со
знаком в D7 и в дополнительном коде, или нормальным (см. 2б – смещение
размером в два байта) со знаком в D15 и тоже в дополнительном коде.
И конечный адрес в самом сложном случае может формироваться как сумма
двух регистров и смещения (смотрите mod=01, mod=10, и reg/mem=000...011).
24
специально выделено место, которое является исключением из правил. Данный вид адресации называется прямым. Вообще, по отношению к способам адресации установилась некая терминология. Непосредственная адресация: адрес «запрятан» в коде операции. Очевидный пример: mod=11, значит dst — регистр, номер которого указывается в КОПе (в разрядах D2..D0). Прямая адресация. Следом за КОПом должен следовать адрес ячейки памяти (сначала младший байт, затем —старший). Таким образом, в машинном коде сразу виден адрес dst. В таблице 3: mod=00, seg/mem=110. Косвенная адресация. В коде операции указывается источник (хранилище) адреса ячейки памяти. Пример тому —место в таблице 3: mod=00, reg/mem=100, 101, 111. Во всех этих случаях адрес dst автоматически будет извлекаться из регистра SI, или DI, или BX. Значит, прежде чем обратиться к ячейке памяти, адрес этой ячейки надо загрузить в соответствующий регистр. Иначе получится на «деревню к дедушке». Таблица 3 —Формирование эффективного адреса dst (mod 7- 011) Reg/mem mod (D7,D6) D2 D1 D0 00 01 10 0 0 0 EA=+ EA= + +см.1б EA= + +см.2б 0 0 1 EA= + EA= + +см.1б EA= + +см.2б 0 1 0 EA= + EA= + +см.1б EA= + +см.2б 0 1 1 EA= + EA= + +см.1б EA= + +см.2б 1 0 0 EA= EA= +см.1б EA= +см.2б 1 0 1 EA= EA= +см.1б EA= +см.2б Прямая адресация 1 1 0 EA= +см.1б EA= +см.2б EA=адрес(2 байт) 1 1 1 EA= EA= +см.1б EA= +см.2б Относительная адресация. В этом случае вместо прямого адреса следом за кодом операции располагают смещение (disp). Это смещение (в таблице 3 обозначено: см.) складывается с текущим адресом, который может храниться в IP, BP, BX, SI, DI. Причем, это смещение со знаком (старший разряд выступает в качестве знакового бита), поскольку смещение может быть как вперед, так и назад, и в дополнительном коде. Еще раз следует отметить, что положительные числа со знаком в прямом и дополнительном кодах совпадают, а отрицательное число в прямом коде преобразуют в дополнительный инверсией его (знак не меняют) и добавлением к результату единицы. Все эти четыре способа — классика. А далее возможны комбинации из этих способов со смещениями, что и следует из таблицы 3 для МП 8086. Здесь смещение может быть коротким (см. 1б. – смещение размером в один байт) со знаком в D7 и в дополнительном коде, или нормальным (см. 2б – смещение размером в два байта) со знаком в D15 и тоже в дополнительном коде. И конечный адрес в самом сложном случае может формироваться как сумма двух регистров и смещения (смотрите mod=01, mod=10, и reg/mem=000...011). 24
Страницы
- « первая
- ‹ предыдущая
- …
- 22
- 23
- 24
- 25
- 26
- …
- следующая ›
- последняя »