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

Відповідь:

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

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

Відповідь:

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

11111000

1

11111001

Зробимо перевірку: в додатковому коді значущими розрядами є нульові тобто 11111001В = 2+4=6. До отриманого результату додаємо одиницю і отримуємо 7, а оскільки знаковий розряд = 1, то маємо -7. Переведення в додатковий код виконано вірно. Таким же чином переведемо -63 в додатковий код: 63D = 00111111B; інвертуємо: 11000000В; додаємо одиницю: 11000001B. Робимо перевірку: 11000001B = 2+4+8+16+32=62. До отриманого результату додаємо одиницю і отримуємо 63, а оскільки знаковий розряд = 1, то маємо -63. Виконуємо операцію додавання над числами в додатковому коді:

11111001

11000001

110111010

Врахуємо СF: виконаємо віднімання СF від отриманого результату:

10111010

11111111

110111001

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

№30

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

Коментар: M(DSx16+si+0d2c5h)<- M(DSx16+si+0d2c5h)  0dd15h

XOR

r/m r/mdata

1000000w

md110 r/m

data L

data H, w=1

3...6

4/17+Тва

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

10000001 = 81h (w=1 // операнд 2 байта);

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

10 – mod (disp – 16 розрядов);

110 – уже указано в таблице;

100 – reg/mem: (SI)+disp

Получаем второй байт: 10110100 = B4h

3-й байт(смещение disp16):

C5D2h.

4-й байт(непосредственный 16-и разрядный операнд):

15DD.

Машинный код команды: 81B4C5D215DD

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

Левый операнд – индексная, SI+data16.

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

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

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

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

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

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

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

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

81 BD 8C 7F 1F DD – 6 байт

1-ый:

81h = 10000001 – AND/XOR (REG – 111 значит AND)

AND

r/m r/m&data

1000000w

md100 r/m

data L

data H, w=1

3...6

4/17+Тва

2-ой:

BDh = 10(disp 16)111(DI-приемник)101 – DI+(disp)

3,4-ый:

7F8Сh - disp

5,6 –ой:

DD1Fh – правый операнд.

Мнемоника команды: AND [DI+07F8Ch], 0DD1Fh

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

левый – индексная

правый – непосредственная

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

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

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

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

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

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

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

AND AL,0Fh

//XXXXXXXX*00001111=0000XXXX

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

Відповідь:

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

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

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

доп. -91 = 10100101

доп. -9 = 11110111

доп. -1 = 11111111 (для CF)

10100101 - (-91-9=-100 в доп.)

1 1110111

10011100

11111111

1 0011011 = 01100101 = 101D по модулю, оскільки перший -1, то -101 

[Введите текст]