Керiвництво программиста

вартість комп'ютерів С1=24000 грн;

2) вартість оргтехніки С2=1500 грн;

3) норма амортизації На=11%;

- видатки електроенергії в рік Е=16000 кВт 77 0ч;

- ціна 1 кВт 77 0ч Це=0.063 (грн);

- видатки на запасні частини на ремонт Рр=600 (грн);

- видатки на матеріали при експлуатації основного обладнання Рео=200 (грн);

- видатки на матеріали при експлуатації допоміжного обладнання Ред=400 (грн);

- інші витрати Рп=800 (грн);

- кількість годин корисного часу за рік Чп=45000 ч;

- рентабельність Р=25%.


Виробничі витрати ОЦ:

І=ЗПУ+ЗПО+ЗПР+ (С1+С2) *На+Е*Це+Рр+Рео+Ред+Рп, (7.5)

І=11788 (грн).

Вартість 1 години машинного часу

Сг=І/Чп, (7.6)

Сг=11788/45000=0.26 (грн).

Ціна 1 години машинного часу

Цг=Сг (Р+1), (7.7)

Цг=0.26 (0.25+1)=0.33 (грн).

Таким чином, витрати на оренду машинного часу

Вмч=64 7 0.33=145.6 (грн).


Витрати на розробку комплексу:

В=Ззп (1+0.045+0.25+0.06+0.01)+Вд+Вмч, (7.8)

В=Ззп 1.365+Вд+Вмч, (7.9)

В=1165.11 1.365+36+145.6=1771.98 (грн).

Таким чином, програмний продукт "Емулятор основних функціональних блоків мікропроцесору i486" призначений для вивчення і перевірки знань в області програмуванні сучасних мікропроцесорів типу i486 в машинних кодах по дисципліні "Мікропроцесорні засоби і системи" дозволяє вдосконалити навчальний процес. Розроблену програму доцільно використати для лабораторних і практичних робіт.


5 МЕТОДИЧНІ ВКАЗІВКИ ДО ЛАБОРАТОРНИХ РОБІТ


  1. Загальні положення

Регістри процесора.

Процесор має регістри, що поділяються на наступні категорії:

  • Регістри загального призначення;

  • Покажчик інструкцій і регістр прапорів;

  • Сегментні регістри;

  • Системні регістри;

  • Регістри отладки;

  • Регістри тестування.

Останні дві категорії регістрів в емуляторі не реалізовані і не мають відношення до даної лабораторної роботи.

Набір регістрів загального призначення включає відповідні регістри попередніх процесорів (8086 і 80286). Всі регістри мають розрядність 32 біти, і до колишньої позначки їхніх імен додашлася приставка Е. Відсутність приставки в імені означає заслання на молодші 16 біт розширених регістрів. Як і в 8086, можливо незалежне звертання до молодшого і старшого байтів регістрів.

Покажчик інструкцій EIP містить зміщення наступної виконуваної інструкції відносно бази сегменту кодів.

Регістр прапорів EFLAGS також поширений до 32 біт. Біти, певні для 8086 і 80286, мають колишнє призначення, але у порівнянні з 80286 з'явилися нові біти.

Призначення нових прапорів регістру EFLAGS:

  • AC (Alignment Check, біт 18) - прапор контролю вирівнювання. При виконанні програм на рівні привілей 3 в випадку звертання до операнду, не вирівненому по відповідній межі, і при встановленому прапорі AC відбудеться виключення-відмова 17 з нульовим кодом помилки.

  • VM (Virtual Mashine, біт 17) - в захищеному режимі включає режим віртуального 8086. Спроба використання привілейованих інструкцій в цьому режимі викличе виключення 13. Біт може встановлюватися тільки в захищеному режимі: інструкцією IRET на нульовому рівні привілей або переключенням задач на будь-якому рівні привілей. На біт не діють інструкції POPF, а PUSHF в образ цього регістру завжди заносить 0. Його одиничне значення може зберегтися тільки в образі, що зберігається при перериванні або переключенні задач.

  • RF (Resume Flag, біт 16) - прапор поновлення, використовується спільно з регістрами крапок останова.

Сегментні регістри містять 16-разрядные селекторы і 64-розрядні дескрипторні частини. В реальному режимі вміст селекторної частини співпадає адресою сегменту, а розмір сегменту завжди рівний 64 Кб. В захищеному режимі адреса сегменту і його розмір можуть бути довільними і завантажуються з дескриптора сегменту, що розміщений в спеціальній таблиці. В відзнаку від процесора 80286 адреса сегменту має 32 розряду, а розмір 20 розрядів, крім того в залежності від біта дрібності в поле атрибутів сегменту розмір може бути уявлений в байтах або сторінках по 4 Кб. В поле атрибутів дескриптора додані два нових прапора: біт дрібності G і біт розрядність D. Останній має сенс тільки для сегментів кодів і стека. Формат селектора і дескриптора уявлений на рисунку 5.1.



Поле TI (біт 2) служить індикатором таблиці. Його значення вказує таблицю, що вибирається: GDT при TI=0, LDT при TI=1.

Поле ІНДЕКС (біти 15-3) служить індексом для вибору одного з 8192 дескрипторів.



Поле типу системного дескриптора визначає його тип. Типи системних дескрипторов наведені в таблиці 5.1.


Таблиця 5.1 Типи системних дескрипторів


Тип Визначення Тип Визначення

0

1

2

3

Не використовується

Доступний TSS 286

Таблиця LDT

Зайнятий TSS 286

8

9

A

B

Не використовується

Доступний TSS 386+

Зарезервирован

Зайнятий TSS 386+

4

5

6

7

Шлюз виклика 286

Шлюз задачі

Шлюз перериваннь 286

Шлюз ловушки 286

C

D

E

F

Шлюз виклика 386+

Зарезервирован

Шлюз перериваннь 386+

Шлюз ловушки 386+


Регістри локальної таблиці дескрипторів і сегменту стану задачі мають таку же структуру як і сегментні регістри. Регістри глобальної дескрипторної таблиці і таблиці переривань мають тільки 32-розрядне поле бази і 16-розрядне поле розміру.

Системні регістри CR0, CR2, CR3 мають 32-розрядну структуру і використовуються для настанови режимів і контролю. Регістр CR0 в якості молодшої частини включає в себе біти регістру MSW процесора 80286.

Призначення бітів регістру CR0 наступне:

  • PE (Protection Enable, біт 0) - дозвіл захисту, настанова біта переводить процесор в захищений режим;

  • MP (Monitor Processor Extention, біт 1) - моніторінг сопроцесора, дозволяє викликати виключення 7 по команді WAIT при TS=1;

  • EM (Processor Extention Emulated, біт 2) - емуляція сопроцесора, дозволяє викликати виключення 7 по кожній команді сопроцесора;

  • TS (Task Switch, біт 3) - задача переключена. Встановлюється після кожного переключення задачі;

  • ET (Extention Type, біт 4) - індикатор підтримки інструкцій математичного сопроцесора;

  • NE (Numeric Error, біт 5) - дозвіл стандартного механізму повідомлення про помилку сопроцесора;

  • WP (Write Protect, біт 16) - дозвіл захисту від запису на рівні привілей супервизора в сторінки тільки для читання;

  • AM (Alignment Mask, біт 18) - дозвіл контролю вирівнювання;

  • NW (Not Writethrough, біт 29) - заборона наскрізна запису кеша і циклів анулювання;

  • CD (Cashe Disable, біт 30) - заборона заповнення кеша;

  • PG (Paging Enable, біт 31) - включення механізму трансляції сторінок.

Регістр CR2 зберігає 32-розрядну лінійну адресу, по якій була отримана остання відмова сторінки пам'яті.

Регістр CR3 в старших 20 розрядах зберігає фізичну базову адресу каталогу сторінок.

Формування лінійної адреси.

Механізм формування лінійної адреси однаков в будь-якому режимі роботи процесора. Від режиму залежить тільки засіб завантаження сегментного регістру. В реальному і віртуальному режимах значення сегментної адреси завантажується в селекторну частину і в поле бази дескрипторної частини попередно зсунуте на 4 розряду ліворуч. Розмір встановлюється рівним 64 Кб. До сегменту дозволяється доступ як по запису, так і по читанню. В захищеному режимі дескрипторна частина завантажується з глобальної або локальної таблиці, а в селекторну частину завантажується селектор, з допомогою якого був вибраний дескриптор. Кодовий сегмент служить тільки для вибірки інструкцій і може бути доступний тільки для читання. Сегменти даних завжди доступні для читання і можуть бути доступні для запису. Права доступу до сегменту визначає слово атрибутів дескриптора.

Лінійна адреса формується шляхом підсумовування вмісту поля бази в дескрипторної частині сегментного регістру і ефективного зміщення, що сформувалось з допомогою одного з засобів адресації.

В 16-розрядном режимі адресації формування ефективного зміщення повністю співпадає з процесорами 8086 і 80286. В 32-разрядном режимі без sib-байта адреса формується з вмісту будь-якого регістру загального призначення і зміщення (зміщення або регістр можуть бути відстуній). Для формування адреси з декількох компонент в 32-розрядном режимі після mod-байта в інструкції ставиться sib-байт (Scale-Index-Base, масштаб-індекс-база). В цьому байті міститься інформація про те, що регістр є базовим, що індексним і що фактор зрушення застосовується до індексу. Вміст індексного регістру перед формуванням адреси може бути зсунутий на 1, 2 або 4 розряду ліворуч. В якості базового і індексного регістру може виступати будь-який регістр загального призначення.


Механізм трансляції сторінок.

Трансляція сторінок здійснюється тільки в захищеному і віртуальному режимах. При цьому лінійна виконавча адреса транслюється в фізичний з допомогою дворівневого сторінкового механізму.


  1. Лабораторна робота N 1


Метою лабораторної роботи є вивчення основ програмування в захищеному режимі для мікропроцесору 80486, а також одержання необхідних навиків роботи з емулятором цього процесора.


5.2.1 Завдання до лабораторної роботи


В даній роботі студент повинен скласти програму, що формує в пам'яті необхідні таблиці, переводить процесор в захищений режим, виводить на екран ФІБ студента і вертається в реальний режим. При цьому розрядність сегментів коду і стека, направлення розширення сегменту стека і засіб адресації при пересилці рядки на екран задані з допомогою таблиці варіантів. Програма повинна бути відлагоджена і продемонстрована на емуляторі.

Перед виконанням лабораторної роботи рекомендується ознайомитися з конспектом лекцій і літературою по програмуванню процесора в захищеному режимі.


  1. Приклад виконання

Складемо програму для пересилки текстового рядка з використанням індексної адресації з масштабуванням. Кодовий сегмент і сегмент стека є 32-розрядными, стек поширюється вниз.

Для роботи програми в захищеному режимі достатньо мати тільки таблицю глобальних дескрипторів, що містить наступні елементи:

  • Нульовий дескриптор;

  • Дескриптор сегменту коду (32-розрядний);

  • Дескриптор сегменту даних;

  • Дескриптор сегменту стека (32-розрядний, поширюється вниз);

  • Дескриптор даних відеобуфера.

Для трансляції вихідного тексту програми в виконавчий файл проведемо з використанням транслятора Tasm і линкера Tlink.


; файл “lab1. asm”

IDEAL ; режим Ideal

P486 ; 80486 з інструкціями Protect mode

model large ; модель пам'яті

stack 256 ; стек реального режиму 256 байт

segment stak use32 ; сегмент стека захищеного режиму

dd 256 dup (0)

stk_len=$ ; довжина сегменту стека

ends


struc descr ; структура дескриптора

limit1 dw 0 ; розмір, біти 15-0

base1 dw 0 ; база, біти 15-0

base2 db 0 ; база, біти 23-16

acs dw 0 ; слово атрибутів і розмір (біти 19-16)

base3 db 0 ; база, біти 31-24

ends


SEGMENT DATA USE32 ; сегмент даних

label gdt dword ; таблиця GDT

d1 descr <> ; нульовий дескриптор

sel_code= $-gdt ; селектор сегменту коду

cod descr <> ; дескриптор сегменту коду

sel_data= $-gdt ; селектор сегменту даних

dat descr <> ; дескриптор сегменту даних

sel_stk= $-gdt ; селектор сегменту стека

stk descr <> ; дескриптор сегменту стека

sel_video= $-gdt ; селектор сегменту відеопам'яті

video descr <80 *25*2, 8000h, 0bh, 4092h, 0> ;дескриптор сегменту відеопамяті


label dat_gdt pword ; покажчик на GDT

gdt_len dw $-gdt ; довжина

gdt_base dd 0 ; лінійна адреса


dlen dd data_len ; довжина сегменту даних

clen dd pcode_len ; довжина сегменту коду

slen dd stk_len ; довжина сегменту стека


message db 'Рабинович Абрам Исаакович', 0 ; текстовий рядок


data_len=$

ENDS


; 16-розрядний сегмент коду реального режиму

SEGMENT CODE USE16

assume cs: code, ds: data

; головна процедура

proc main

mov ax, data ; настройка DS на сегмент даних

mov ds, ax

; настройка дескриптора сегменту коду

mov eax, pcode

shl eax, 4 ; обчислення лінійної адреси

push sel_code ; селектор сегменту

push 409ah ; 32-розрядний сегмент коду,

; доступний по читанню

push [clen] ; довжина сегменту

push eax ; лінійна адреса сегменту

call make_desc ; заповнення дескриптора

add sp, 14 ; анулювання параметрів в стеке

; настройка дескриптора сегменту даних

mov eax, ds

shl eax, 4 ; обчислення лінійної адреси

push sel_data ; селектор сегменту

push 4092h ; 32-разрядный сегмент даних,

; доступний по запису, поширюється вверх

push [dlen] ; довжина сегменту

push eax ; лінійна адреса сегменту

call make_desc ; заповнення дескриптора

add sp, 14 ; анулювання параметрів в стеке

; настройка дескриптора сегменту стека

mov eax, stak

shl eax, 4 ; обчислення лінійної адреси

add eax, [slen] ; вершини стека

push sel_stk ; селектор сегменту

push 4096h ; 32-розрядний сегмент даних

; доступний по запису, поширюється вниз

push [slen] ; розмір сегменту

push eax ; лінійна адреса сегменту

call make_desc ; заповнення дескриптора

add sp, 14 ; анулювання параметрів в стеке

; настройка покажчика на GDT

mov eax, ds

shl eax, 4

add eax, offset gdt ; лінійна адреса таблиці

mov [gdt_base], eax

lgdt [dat_gdt] ; завантаження регістру GDTR

cli ; заборона апаратних переривань

mov eax, cr0 ; настанова біта режиму в регістрі CR0

inc al

mov cr0, eax

; jmp far sel_code: offset pmode ; перехід на сегмент

; захищеного режиму

dw 0ea66h

dd offset pmode

dw sel_code

endp

; процедура заповнення дескриптора

proc make_desc near

; список параметрів

ARG base: dword, ; базова адреса сегменту

len: dword, ; розмір сегмента

acs: word, ; атрибути сегменту

sel: word ; селектор сегменту (на рівні

; привілей 0 селектор дескриптора

; в таблиці GDT, є також

; зміщенням в цій таблиці)

enter 0.0 ; створення кадру стека

mov si, [sel]

add si, offset gdt ; обчислення адреси дескриптора

mov eax, [base]

mov [dword si+descr. base2], eax ; завантаження бази сегменту (біти 31-24)

mov [dword si+descr. base1], eax ; завантаження бази сегменту (біти 23-0)

mov eax, [len]

mov [si], ax ; завантаження розміру сегменту (біти 15-0)

shr eax, 8

xor al, al

or ax, [acs]

mov [si+descr. acs], ax ; завантаження атрибутів і

; розміру (біти 19-16)

leave ; анулювання кадру стека

ret ; повернення

endp

; завершення роботи програми

proc rmode

sti

mov ax, 4c00h ; функція завершення з кодом 0

int 21h ; виклик ДОС

endp


ENDS

; 32-розрядний сегмент коду захищеного режиму

SEGMENT PCODE USE32

assume cs: pcode, ds: data, ss: stak

; головна процедура

proc pmode

mov eax, sel_stk ; настройка стека

mov ss, ax

xor esp, esp ; покажчик на вершину

mov eax, sel_data ; настройка на сегмент даних

mov ds, ax

mov fs, ax

mov gs, ax

mov eax, sel_video ; настройка на відеопам'ять

mov es, ax

call print ; виклик процедури печатки

mov eax, cr0

xor eax, 1

mov cr0, eax ; скид біта режиму в регістрі CR0

jmp far code: rmode ; повернення в сегмент реального режиму

endp

; процедура печатки

proc print near

xor edi, edi ; зміщення 0 в відеопам'яті

lea esi, [message] ; адреса рядка

mov ah, 17h ; атрибути символів

; цикл виводу

@@1: mov al, [esi] ; завантаження в al чергового символу

or al, al ; перевірка на 0

jz @@2 ; якщо 0, те вихід з циклу

mov [es: edi*2], ax ; символ з атрибутом в відеопам'ять

inc esi ; наступний символ

inc edi ; наступне знакомісце

jmp @@1 ; повторення циклу

@@2:

ret ; повернення

endp


pcode_len=$

ENDS


end main ; крапка входу в програму


Створення виконавчого файлу здійснювалося слідуючим чином:

tasm. exe lab2. asm/m2

tlink. exe lab2. obj/


  1. 3міст звіту з лабораторної роботи


  2. Повна схема формування адреси при записі в відеопам'ять в відповідності з заданим варіантом.

  3. Формат що використаються селекторів і дескрипторів з реальними значеннями.

  4. Текст програми.

  5. Вміст регістрів ,що використаються і кадру стека під час пересилки рядка.


  1. Контрольні питання


  2. Який мінімальний і максимальний розмір сегменту при встановленому і скинутому біті дрібності в дескрипторі?

  3. Як зміниться покажчик 32-розрядного стека при вталківанії в нього операнда розміром:

А) слово;

Б) подвійне слово?

  1. Можна чи не використати перехід після переключення режиму і чому?


  1. Лабораторна робота N 2


Метою даної лабораторної роботи є закріплення знань про роботу механізму трансляції сторінок, а також одержання навиків в укладанні таблиць сторінок.

Лабораторна робота розрахована на 2 академічних години.


  1. Завдання до лабораторної роботи

В даній роботі студент повинен скласти програму що формує в пам'яті необхідні системні таблиці, переводить процесор в захищений режим з включеним механізмом трансляції сторінок, виводить в відеопам'ять рядок з ФІБ студента і переводить процесор в реальний режим. При цьому відеопам'ять повинна знаходитися по логічній адресі 100000h, що досягається застосуванням сторінкового механізму. Розмір сторінки пам'яті береться з таблиці варіантів.

Таблиці сторінок слідує складати тільки для першого мегабайта плюс область відеопам'яті.

Якщо розмір сторінки менш стандартного, поля лінійної адреси вирівнюються по правому краю, а в елементах каталогу або таблиці - фізична адреса завжди починається з 12-го розряду.

При укладанні програми можна скористуватися вихідним текстом з попередньої роботи.


  1. Приклад виконання

Складемо програму що використає сторінковий механізм з розміром сторінки 4Кб. Якщо використати вихідний текст з попередньої роботи, достатньо проголосити в сегменті даних область для каталогу і таблиць сторінок, додати в головну процедуру код для формування цих таблиць і змінити базову адресу відеобуфера.

Бо немає надоби складати таблиці для усього адресного простору, необхідно обчислити мінімальну кількість таблиць сторінок для покритті необхідного адресного простору.

<розмір сторінки>/4 < розмір сторінки >=<мінімальне покриття>

4 [Kb]/4*4 [Kb] =4096 [Kb] =4 [Mb]

Одна сторінка покриває 4 Мб адресного простору, а нам необхідно 1024Кб+4Кб=1028 Кб, що значно менш означеного обсягу. Значить достатньо заповнити тільки одну таблицю сторінок. Каталог і таблиця повинні бути вирівнені по межі 4 Кб, а сегмент ехе-файлу може бути вирівнен тільки по межі параграфу, тому усього необхідно 3 сторінки по 4 Кб.


; файл “lab2. asm”

...

SEGMENT DATA USE32

pages dd 3*1024 dup (0) ; буфер для таблиць сторінок

... ; таблиця GDT

video descr <80 *25*2, 0.10 h, 4092h, 0> ; адреса сегменту 100000h

...

ENDS


SEGMENT CODE USE16

assume cs: code, ds: data


proc main

; заповнення дескрипторов сегментів

mov ebx, data ; обчислення фізичного

shl ebx, 4 ; адреси каталогу сторінок

add ebx, 1000h

and bx, 0f000h

mov cr3, ebx ; завантаження адреси каталогу в CR3

mov eax, ebx ; обчислення зміщення

shr ebx, 4 ; каталогу сторінок в

sub bx, data ; сегменті даних

shl bx, 4

add eax, 1007h ; обчислення адреси 1-й таблиці

mov [bx], eax ; завантаження в каталог

add ebx, 1000h ; зміщення таблиці

mov eax, 7 ; 1-я сторінка, адреса 0

mov cx, 256 ; 256 сторінок= 1Мб

@@1:

mov [bx], eax ; заповнення таблиці

add eax, 1000h ; наступні 4 Кб

add bx, 4 ; адреса наступного елемента

loop @@1 ; повторення циклу

; в bx адресу елемента таблиці для відеобуфера

mov [dword bx], 0b8007h ; фізична адреса відеобуфера

; завантаження GDTR

mov eax, cr0

or eax, 80000001h

mov cr0, eax ; настанова бітів PE і PG в CR0

; jmp far sel_code: offset pmode

dw 0ea66h

dd offset pmode

dw sel_code

endp

proc make_desc near ; процедура заповнення дескриптора

...

endp

proc rmode ; процедура завершення програми

...

endp


ENDS


SEGMENT PCODE USE32

proc pmode

... ; головна процедура

endp


proc print near

... ; процедура печатки

endp


pcode_len=$

ENDS


end main ; крапка входу


Створення виконавчого файлу здійснювалося слідуючим чином:

tasm. exe lab2. asm/m2

tlink. exe lab2. obj/3


Перед отладкою програми необхідно встановити заданий розмір сторінки в емуляторі. Для цього треба викликати головне меню, вибрати пункт “Настанови”, клавішами “вверх” або “вниз” встановити розмір і натиснути клавішу введення.


  1. Зміст звіту з лабораторної роботи

1. Повна схема формування адреси згідно варіанту.

  1. Текст програми.

  2. Дільниці таблиць сторінок, що використовувались програмою (в тому числі і під самою програмою).


  1. Контрольні питання


  2. Який обсяг адресного простору покриває сторінковий механізм при розмірі сторінки:

А) 2 Кб;

Б) 1 Кб;

С) 0.5 Кб?

  1. Як організувати лінійний буфер пам'яті влаштування, якщо доступ до цієї пам'яті здійснюється поблочно через вікно в фізичному адресному просторі, а переміщення вікна здійснюється шляхом запису його номеру в порт влаштування.


5.4 Таблиця варіантів


В таблиці використані наступні позначки засобів адресації:

“бісм” - базово-індексна зі зміщенням і масштабурованням;

“бім” - базово-індексна з масштабурованням;

“ім” - індексна з масштабурованням;

“і” - індексна;

“біс” - базово-індексна зі зміщенням;

“бі” - базово-індексна;

“б” - базова.


  1. Література


  2. Гук М. “Процессоры Intel от 8086 до Pentium II”. - СПб: “ПИТЕР”,1997 - 224 с.

  3. Бродин В.Б. Шагурин И.И. “Микропроцессор i486. Архитектура, программирование, интерфейс”. - М.: “ДИАЛОГ-МИФИ”, 1993. - 240 с.

  4. Голенкова Ж.К. Заболоцкий А.В. Мархасин М.Л. “Руководство по архитектуре IBM PC AT”. - Мн.: ООО “Консул”, 1992. - 949 с.


Таблиця 5.1 Таблиця варіантів.

Варіант Засіб адресації Розрядність коду Розширення стека Розмір сторінки, Кб
1 Бісм 16 Вверх 4
2 Бім 32 Вниз 2
3 Ім 16 Вверх 1
4 І 32 Вниз 0.5
5 Біс 16 Вверх 4
6 Бі 32 Вниз 2
7 Б 16 Вверх 1
8 Бісм 32 Вниз 0.5
9 Бім 16 Вверх 4
10 Ім 32 Вниз 2
11 І 16 Вверх 1
12 Біс 32 Вниз 0.5
13 Бі 16 Вверх 4
14 Б 32 Вниз 2
15 Бісм 16 Вверх 1
16 Бім 32 Вниз 0.5
17 Ім 16 Вверх 4
18 І 32 Вниз 2
19 Біс 16 Вверх 1
20 Бі 32 Вниз 0.5
21 Б 16 Вверх 4
22 Бісм 32 Вниз 2
23 Бім 16 Вверх 1
24 Ім 32 Вниз 0.5
25 І 16 Вверх 4
26 Біс 32 Вниз 2
27 Бі 16 Вверх 1
28 Б 32 Вниз 0.5

ВИСНОВКИ


В даній роботі був вироблений огляд архітектури процесорів сімейства х86 фірми Intel і розроблений програмний емулятор процесора i486 і апаратна частина внутрисхемного емулятора.

Емулятор створювався з метою полегшити отладку програмного і апаратного забезпечення, що орієнтувалось на даний процесор, а також для навчання фахівців по дисципліні “Мікропроцесорні засоби і системи”. Його можна рекомендувати в якості навчальної допомоги для проведення лабораторних робіт.

Операційна частина може бути використана в якості базового модуля для створення емуляторів різноманітного типу (програмні, внутрисхемні тощо). При необхідності його функції можна поширити і приєднати будь-який користувачевий інтерфейс.


ВСТУП


Бурхливий розвиток обчислювальної техніки дозволив їй проникнути в усі закутки людського життя. Наряду з настольними персональними системами особлива увага зараз приділяється керуючим системам. Дешевизна і багаті можливості мікропроцесорів сімейства х86 поставили їх в один ряд зі спеціалізованими процесорами і контролерами в області створення керуючих систем. Використання цих мікропроцесорів привертає ще і тим, що дозволяє використати для створення системного програмного забезпечення практично весь величезний набір інструментальних засобів для персональних систем. Однак отладка такого програмного забезпечення сопряжена з певними труднощями, що обмежують використання стандартних отладчиків. В основному це зв'язане з різноманітністю архітектурних рішень в плані створення апаратного забезпечення. Тут на допомогу можуть прийти що емулюють отладчики, що дозволять виробляти конфігурування віртуальної архітектури. Дані отладчики можуть використовуватися в настольних персональних системах, виробляючи повну емуляцію системи.

Метою даної роботи є розробка ядра емулюючого отладчика. Одним з критеріїв створення емулятора стояє можливість функціонального розширення. Ця обставина дозволить конфігурувати отладчик під різноманітні архітектури керуючих систем, а значить виробляти повноцінну отладку. Крім того ядро можна буде використати в внутрисхемному емуляторі.


Додаток А


Емулятор


Керівництво користувача


ДП 7.091501-037-99.009ДА


Аркушів 9



Донецьк 1999

1 ПРИЗНАЧЕННЯ І ВИМОГА ДО КОНФІГУРАЦІЇ


Емулятор процесора i486 версії 2.0 передвизначений для отладки системного програмного забезпечення спеціалізованих ЕОМ. Він може також використовуватися в якості навчальної допомоги при підготовці фахівців в області обчислювальної техніки для виконання лабораторних робіт по дисципліні “Мікропроцесорні засоби і системи”.

Емулятор виконує програмну емуляцію роботи основних функціональних блоків процесора i486 з точки зору програмного забезпечення. При створенні програми головним критерієм виступала вірогідність роботи блоків процесора. Тому прив'язка дешифрації і виконання команд до сигналу синхронизації не вироблялася. Мінімальним кроком роботи блоків доступним користувачу є цикл виконання команди ПО, що отладжується.

Для роботи програми-емулятора достатньо мати персональний комп'ютер на базі процесора 80286+ оснащеного 4 Мб оперативної пам'яті і відеоадаптером не нижче EGA. З системного програмного забезпечення вимагається MS DOS версії 3.3+і драйвер розширеної пам'яті типу HIMEM.SYS. Будь-яких додаткових приладів або програм не вимагається.

При роботі під багатоозадачною операційною системою бажано запуск програми виробляти в режимі емуляції MS DOS, бо в програмі виробляється прямий доступ до відеопам'яті.


2 ЗАПУСК ЕМУЛЯТОРА


Для запуску необхідно перейти в каталог, в якому міститься ісполнімий файл “i486. exe” і виробити його запуск або з командного рядка, набравши в ній ім'я файлу і натиснувши введення, або можна скористуватися інтерактивною програмною оболонкою.

Після запуску екран очищається. Внизу з'являється рядок статусу з підказкою в вигляді комбінацій клавіш. В середині екрану відкривається вікно з даними про програму. Натиск будь-який клавіші переводить емулятор в робітничий режим.


3 ГОЛОВНЕ МЕНЮ


Головне меню викликається при натиску клавіші F10. В ньому зосереджені пункти, активізація яких наводить до видавання на екран одного з діалогових вікон.

Для активізації пункту ,що цікавить необхідно підвести до нього підсвічуючий курсор і натиснути клавішу введення. Многие пункти після назви мають назву комбінації клавіш. Такі пункти окрім засобу, описаного вище, можуть активізуватися шляхом натиску відповідної комбінації клавіш, причому навіть якщо головне меню неактивно.


Пункт “Файл”.

Даний пункт передвизначений для генерації запитання на відкриття ісполнімого файлу для отладки. Після активізації цього пункту на екрані відкривається вікно з вмістом поточного каталогу. Скористувавшись клавішами зі стрілками користувач може перемістити підсвічуючий курсор на що цікавить ісполнімий файл (типу“. com” або“. exe”) і натиснути клавішу введення. Дана операція призведе до завантаженню файлу в віртуальну пам'ять емулятора для отладки. При Цьому відкриється вікно, в якому буде відображений відрізок програмного коду з асемблерною мнемоникою. Підсвічуючий курсор встановиться на першу команду програми.


Пункт “Смотреть...”.

Даний пункт дозволяє активізувати підміню зі списком вікон, що містять інформацію про стан процесора ,що емулюється і віртуальної пам'яті емулятора.

В підміню назви вікон, що вже відкриті будуть відображені сірим кольорем в знак того, що активізація даного пункту недосяжна. Те є не можна відкрити два однакових вікна.

  • Вікно “РОНы” містить стан регістрів загального призначення;

  • Вікно “Сегментные регистры” містить стан сегментних регістрів і регістрів локальної дескрипторної таблиці і сегменту стану задачі, причому як їхн селекторних частин, так і дескрипторних;

  • Вікно “Системные регистры” містить стан системних регістрів, таких як CRx, EIP, GDTR, IDTR;

  • Вікно “Флаги” містить стан регістру EFLAGS;

  • Вікно “Память” містить стан певної дільниці віртуальної пам'яті емулятора;

  • Вікно “Стек” містить стан дільниці пам'яті, в якій розміщений поточний програмний стек.

Всі ці вікна можуть бути відкриті шляхом натиску комбінацій клавіш, означених в відповідних пунктах підміню після імені вікна.


Пункт “Установки”.

Активізація даного пункту призведе до відкриттям вікно, в якому відображається розмір сторінки пам'яті в килобайтах. Користувач може змінити розмір сторінки. Це призведе до тому, що при включеній сторінковій адресації механізм трансляції сторінок буде оперувати сторінками даного розміру. Ця можливість буде відстуня в реальному процесорі і введена в емулятор для збільшення ефективності навчання роботи зі сторінковим механізмом.


Пункт “Выход”.

Активізація даного пункту призведе до завершенню праці емулятора і поверненню в операційну систему. Пункт може бути активований в будь-якому стані емулятора шляхом натиску комбінації клавіш “Alt+X”.


4 ОПИС ВІКОН ЕМУЛЯТОРА

Емулятор має багатовіконний користувачевий інтерфейс, і вся необхідна користувачу інформація розподілена по різноманітним вікнам, що об'єднують однотипну інформацію.

Вся робота користувача при отладці програми відбувається шляхом використання функцій, що підтримуються тим або іншим вікном.

Переключення між вікнами, те є фокусировка потоку управління на потрібному вікні, виконується шляхом натиску клавіші F6. При Цьому управління одержує вікно, що було відкрите перед поточним. Якщо необхідно переключати вікна в зворотному порядку, можна скористуватися комбінацією клавіш Shift+F6.

Активне вікно має заголовок пофарбований в синій колір і підсвічуючий курсор.

При бажанні можна змінити розмір і положення деяких вікон. Для цього слідує скористуватися комбінацією клавіш Ctrl+F5. При включенні цього режиму вікно перетворюється в прямокутник з рамкою. Тепер клавішами зі стрілками можна переміщати вікно по екрану, а при натиснутой клавіші Shift - змінювати розмір. Вихід з режиму здійснюється шляхом натиску клавіші введення.


Вікно “РОНы”.

В даному вікні зосереджена інформація про вміст регістрів загального призначення. В процесі виконання програми користувача по крокам, імена регістрів, вміст яких змінився, відображаються білим кольорем.

При відкриттях вікна підсвічуючий курсор встановлюється на першому згори регістрі на старшу тетраду, відзначаючи регістр і тетраду, вміст якої в даний момент може бути модифікований.

Для зміни вмісту регістру необхідно клавішами “вверх” “вниз” встановити курсор на потрібний регістр, після цього клавішами “праворуч” “ліворуч” встановити курсор на потрібну тетраду. Модифікація тетради здійснюється шляхом введення шістнадцятеричного символу з клавiатури. Після введення символу його числовий еквівалент впроміщується в тетраду, а курсор переміщається на одну позицію праворуч.


Вікно “Сегментные регистры”.

В даному вікні зосереджена інформація про вміст сегментних регістрах процесора, що емулюється. В кожному рядку розташується вміст чергового регістру. Ліворуч праворуч розташується наступна інформація:

  • Ім'я регістру. При зміні вмісту регістру виводиться білим кольорем;

  • Селектор. В шістнадцятеричному вигляді подає вміст селекторної частини даного регістру;

  • База. В шістнадцятеричному вигляді подає базова лінійна адреса сегменту;

  • Межа. В шістнадцятеричному вигляді подає розмір сегменту в

    Если Вам нужна помощь с академической работой (курсовая, контрольная, диплом, реферат и т.д.), обратитесь к нашим специалистам. Более 90000 специалистов готовы Вам помочь.
    Бесплатные корректировки и доработки. Бесплатная оценка стоимости работы.

    Поможем написать работу на аналогичную тему

    Получить выполненную работу или консультацию специалиста по вашему учебному проекту

Похожие рефераты: