Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЕМСТ_Шпора(ALL).docx
Скачиваний:
1
Добавлен:
13.09.2019
Размер:
1.46 Mб
Скачать

Відповідь:

Мікропроцесор іх86 має векторну (адресну) систему переривань із зовнішніми і внутрішніми джерелами запитів. Кожне джерело має свій “тип” – номер “входу” у таблицю векторів (адрес) оброблювачів переривань, за яким МП знаходить відповідну підпрограму обслуговування переривання. Таблиця векторів має 256 входів з номерами від 0D до 255 D і займає перші 1024 байти пам'яті – по чотири байти на кожен тип запиту (256х4 = 1024). Оскільки таблиця переривань знаходиться починаючи з нульових адрес в сегменті коду то старші 10 розрядів фізичної адреси представляють собою нулі. Молодші 10 розрядів фізичної адреси входу в таблицю переривань визначаються зсувом на 2 розряди вліво(множення на 4) номеру переривання. Так для 30-ого переривання молодші 10 розрядів фізичної адреси знаходимо як 89*4 = 356D = 0101100100В. Таким чином повна 20-и розрядна фізична адреса обробника 30-ого переривання має вигляд: 00000000000101100100В.

  1. Виконати функцію МП-ра ix86 та отримати результат виконання команди SBB AL,data8, якщо перед виконанням команди операнди, які являють собою числа зі знаком мають наступні значення: AL = -52, data8 = 52, CF = 1. Відповідь пояснити.

Відповідь:

Команда SBB виконує віднімання значення правого операнда від лівого з урахуванням позики(прапорця СF) і результат поміщає в лівий операнд. В даному випадку від -52 буде віднято 52, а потім віднято 1. Результат буде записаний в регістр AL. Операцію -52-52 можна замінити операцією -52+(-52). Для цього треба представити число -52 в додатковому коді: записуємо модуль цього числа в двійковій формі: 52D= 00110100B; інвертуємо отриманий результат: 11001011В; додаємо до отриманої комбінації одиницю:

11001011

1

11001100

Зробимо перевірку: в додатковому коді значущими розрядами є нульові тобто 11001100В = 1+2+16+32=51, До отриманого результату додаємо одиницю і отримуємо 52, а оскільки знаковий розряд = 1, то маємо -52. Виконуємо операцію додавання над числами в додатковому коді:

11001100

11001100

110011000

Переведемо отриманий результат з додаткового коду в десяткову форму: 110011000В = 1+2+4+32+64+1=104D. Оскільки знаковий біт встановлений в 1, то отриманий результат від’ємний, тобто -104.

26

  1. Зробити ручне ассемблерування (компіляцію) команди: sub [di + 0c6f3h], 0a2bdh та отримати її машинний код. Привести коментар до вказаної команди; назвати способи адресації операндів, що в ній використовуються; розрахувати час виконання команди при fT=10 МГц та обсяг пам’яті, яка використовується зберігання машинного коду команди; навести розташування команди у пам’яті (сегмент, зміщення).

Відповідь:

Комментарий к команде: M(di+0c6f3h) ←0a2bdh

1-й байт(код операции):

из табл. комманд, № 7 находим КОП 100000sw

т. к. data(0a2bdh) = 2 байта, то w=1, s=1 => КОП=10000011b=83h

2-й байт(постбайт):

md101r/m

10 – mod: поле mod=10, т.к. при вычислении эффективного адреса в команде используется 16-ти разрядное смещение(disp16=0c6f3h);

101 – reg:

101 – reg/mem: поле reg/mem =101, т.к. способ вычисления адреса левого(первого) операнда в сегменте данных: ЕА=DI+disp= DI+0c6f3h.

Получаем второй байт: 10101101=ADh.

3-й байт(dataLow):bdh.

4-й байт(dataHigh):a2h

5-й байт(dispLow):f3h

6-й байт(dispHigh):c6h

Машинный код команды: 83 AD BD A2 F3 C6

Длина команды: 6 байта.

Способы адресации операндов:

Левый операнд – Индексная со смещением 0с6f3h

Правый операнд – непосредственная, 0a2bdh – непосредственный 16-и битный операнд.

Время выполнения команды

Время выполнения в тактах:

nТ=(n+Tиа)= 4/17+TИА, где Tиа – время вычисления эффективного адреса: EA=DI+0c6f3h.

По таблице 11 находим, что для индексной адресации Tиа=9, тогда nТ=4/17+9=10 тактов.

Время выполнения команды в секундах:

Tk=(n+Tиа)*tТ=nТ*tТ=10*10-8=0,10 мкс, где tТ=1/fТ=1/100000000=10-8.

  1. Виконати ручне дизасемблерування наведеного шістнадцяткового машинного коду команди: F7 87 6F C2 FF FF та отримати мнемокод команди; Привести коментар до вказаної команди; назвати способи адресації операндів, що в ній використовуються; розрахувати час виконання команди при fT=10 МГц та обсяг пам’яті, яка використовується для зберігання машинного коду команди; навести розташування команди у пам’яті (сегмент, зміщення).

Відповідь:

Длина команды: 6 байт.

1-й байт(код операции):

1111 0111b=F7h –AND (r/m & data), поле w=1, т.е. операнд 16-ми разрядный.

2-й байт(постбайт):

10 000 111=87h, где

10 – mod: при вычислении эффективного адреса в команде используется 16-ти разрядное смещение(disp16=ffffh);

000 – reg

111 – reg/mem, mod=10: левый операнд – BX+disp

3-й байт(dataLow):6F

4-й байт(dataHigh):С2

5-й байт(dispLow):FF

6-й байт(dispHigh):FF

Мнемоника команды: TEST [BX+0ffffh], 0c26fh

Адрессация операндов:

левый – базовая, где BX – база, 0ffffh – смещение относительно базы

правый – непосредственная, 0с26аh – непосредственное значение

Комментарий к команде: M(BX+0ffffh)& 0c26fh

Время выполнения

Время выполнения в тактах:

nТ=(n+Tиа)= 4/10+ТИА, где Tиа – время вычисления эффективного адреса: EA=BI+disp16.

По таблице 11 находим, что Tиа=9, тогда nТ=4/10+9=10 тактов.

Время выполнения команды в секундах:

Tk=(n+Tиа)*tТ=nТ*tТ=10*10-8=0,1 мкс, где

tТ=1/fТ=1/100000000=10-8.

  1. Навести команду мікропроцесора ix86 та сформувати 8-розрядне число (data = 8 біт), за допомогою якого біти №3, 4, 6, 7 акумулятора AL можна скинути в “0”. Інші біти AL залишити без змін. Відповідь пояснити.

Відповідь:

Для скидання бітів двійкового числа в «0» використовується операція AND. Першим операндом команди буде 8-и бітний регістр AL, другим – безпосереднє число, маска для скидання. Оскільки необхідно інвертувати біти 3, 4, 6, 7 то маска буде мати вигляд 00100111. Нехай в регістрі AL записана наступна комбінація: ХХХХХХХХ. Виконаємо команду AND AL,00100111:

  1. Сформувати 20-розрядну фізичну адресу входу в таблицю адрес переривань, якщо номер (тип) переривання дорівнює 91. Відповідь пояснити.

Відповідь:

Мікропроцесор іх86 має векторну (адресну) систему переривань із зовнішніми і внутрішніми джерелами запитів. Кожне джерело має свій “тип” – номер “входу” у таблицю векторів (адрес) оброблювачів переривань, за яким МП знаходить відповідну підпрограму обслуговування переривання. Таблиця векторів має 256 входів з номерами від 0D до 255 D і займає перші 1024 байти пам'яті – по чотири байти на кожен тип запиту (256х4 = 1024). Оскільки таблиця переривань знаходиться починаючи з нульових адрес в сегменті коду то старші 10 розрядів фізичної адреси представляють собою нулі. Молодші 10 розрядів фізичної адреси входу в таблицю переривань визначаються зсувом на 2 розряди вліво(множення на 4) номеру переривання. Так для 91-ого переривання молодші 10 розрядів фізичної адреси знаходимо як 91*4 = 364d =101101100b. Таким чином повна 20-и розрядна фізична адреса обробника 91-ого переривання має вигляд: 00000000000101101100b.

  1. Виконати функцію МП-ра ix86 та отримати результат виконання команди SBB AL,data8, якщо перед виконанням команди операнди, які являють собою числа зі знаком мають наступні значення: AL = -57, data8 = 54, CF = 1. Відповідь пояснити.

(Неуверен, что правильно)