Відповідь:
Комментарий к команде: M(DS:di +0b6aeh) ←0c2cbh
1-й байт(код операции):
из табл. комманд, № 7 находим КОП 11000111b=C7h, w=1, т. к. длина операнда 16 бит.
2-й байт(постбайт):
10 – mod: поле mod=10, т.к. при вычислении эффективного адреса в команде используется 16-ти разрядное смещение(disp16=0b6aeh);
000 – reg: поле reg содержит расширение КОП (1-й байт);
101 – reg/mem: поле reg/mem =101, т.к. способ вычисления адреса левого(первого) операнда в сегменте данных: ЕА= di +disp= di+2.
Получаем второй байт: 10000101=85h.
3-й байт(dispLow):aeh.
4-й байт(dispHigh):b6h
5-й байт(dataLow):cbh
6-й байт(dataHigh):c2h
Машинный код команды: C7 85 AE B6 CB C2
Длина команды: 6 байта.
Способы адресации операндов:
Левый операнд – базовая, где DI – база, 0b6aeh – смещение относительно базы.
Правый операнд – непосредственная, 0c2cbh – непосредственный 16-и битный операнд.
Время выполнения команды
Время выполнения в тактах:
nТ=(n+Tиа)=10+Tиа, где Tиа – время вычисления эффективного адреса: EA=di+2.
По таблице 11 находим, что для базовой адресации Tиа=9, тогда nТ=10+9=19 тактов.
Время выполнения команды в секундах:
Tk=(n+Tиа)*tТ=nТ*tТ=19*10-8=0,19 мкс, где
tТ=1/fТ=1/100000000=10-8.
Виконати ручне дизасемблерування наведеного шістнадцяткового машинного коду команди: C7 82 5D B3 F5 D7 та отримати мнемокод команди; Привести коментар до вказаної команди; назвати способи адресації операндів, що в ній використовуються; розрахувати час виконання команди при fT=10 МГц та обсяг пам’яті, яка використовується для зберігання машинного коду команди; навести розташування команди у пам’яті (сегмент, зміщення).
Відповідь:
Задание: C7 82 5D B3 F5 D7
Длина команды: 6 байт.
1-й байт(код операции):
1100 0111b=C7-MOV r/m data поле w=1, т.е. операнд 16-ми разрядный
2-й байт(постбайт):
10 000 010b=82h, где
10 – mod: при вычислении эффективного адреса в команде используется 16-ти разрядное смещение(disp16=0b35dh);
000 – reg
010 – reg/mem, mod=10: левый операнд – SP +disp
3-й байт(dispLow):5D
4-й байт(dispHigh):B3
5-й байт(dataLow):F5
6-й байт(dataHigh):D7
Мнемоника команды: MOV [sp+0b35dh], 0d7f5h
Адрессация операндов:
левый – базовая, где SP – база, 0b35dh – смещение
правый – непосредственная, 0d7f5h – непосредственное значение
Комментарий к команде: M(ES:SP+0b35dh) <- 0d7f5h
Размещение команды в памяти:
Время выполнения
Время выполнения в тактах:
nТ=(n+Tиа)=10+Tиа, где Tиа – время вычисления эффективного адреса: SP+disp16.
По таблице 11 находим, что Tиа=9, тогда nТ=10+9=19 тактов.
Время выполнения команды в секундах:
Tk=(n+Tиа)*tТ=nТ*tТ=19*10-8=0,19 мкс, где
tТ=1/fТ=1/100000000=10-8.
Навести команду мікропроцесора ix86 та сформувати 8-розрядне число (data = 8 біт), за допомогою якого біти молодшої тетради акумулятора AL можна встановити в “1”. Інші біти AL залишити без змін. Відповідь пояснити.
Відповідь:
ORL (диз’юнкція, АБО)
7p 6 5 4 3 2 1 0р
А X X X X X X X X ; x=0/1; x+1=1; x+0=xD8 0 0 0 0 1 1 1 1 ; D8 = Fh
A X X X X 1 1 1 1 |
Сформувати 20-розрядну фізичну адресу входу в таблицю адрес переривань, якщо номер (тип) переривання дорівнює 77. Відповідь пояснити.
Відповідь:
Мікропроцесор іх86 має векторну (адресну) систему переривань із зовнішніми і внутрішніми джерелами запитів. Кожне джерело має свій “тип” – номер “входу” у таблицю векторів (адрес) оброблювачів переривань, за яким МП знаходить відповідну підпрограму обслуговування переривання. Таблиця векторів має 256 входів з номерами від 0D до 255 D і займає перші 1024 байти пам'яті – по чотири байти на кожен тип запиту (256х4 = 1024). Оскільки таблиця переривань знаходиться починаючи з нульових адрес в сегменті коду то старші 10 розрядів фізичної адреси представляють собою нулі. Молодші 10 розрядів фізичної адреси входу в таблицю переривань визначаються зсувом на 2 розряди вліво(множення на 4) номеру переривання. Так для 77-ого переривання молодші 10 розрядів фізичної адреси знаходимо як 77*4 = 120D = 0100 1101 00В. Таким чином повна 20-и розрядна фізична адреса обробника 77-ого переривання має вигляд: 00000000000100110100В
Виконати функцію МП-ра ix86 та отримати результат виконання команди SBB AL,data8, якщо перед виконанням команди операнди, які являють собою числа зі знаком мають наступні значення: AL = -105, data8 = 10, CF = 1. Відповідь пояснити.