Автор: Пользователь скрыл имя, 23 Февраля 2012 в 20:12, курсовая работа
Мікропроцесори мають, як правило, обмежені можливості введення-висновку програм і оброблюваних даних, що утрудняє виконання робіт з налагодження програм. Такі роботи також утруднені або ж узагалі неможливі при розробці нових мікропроцесорних систем. Усе це стимулює використання універсальних ЕОМ G1 для налагодження програм мікроEOM і мікропроцесорів, тобто використання методики эмуляции програми.
Вступ
1. Навчальна обчислювальна машина G1.
1.1 Архітектура ЕОМ G1.
1.2 Система команд.
1.3 Принцип роботи ЕОМ G1.
2. Програмування в кодах навчальної ЕОМ G1.
2.1 Програмування формул.
2.2 Циклічна програма з розвилками.
2.3 Виконання логічних команд із використанням підпрограм.
2.4 Додаткові режими емулятора.
3. Програмна модель навчальної ЕОМ G1.
3.1 Призначення й область застосування.
3.2 Технічні характеристики програми.
3.3 Опис програми.
Висновок.
Результат арифметичної операції використовується для формування в регістрі RP ознаки S (S = 1, якщо результат менше нуля), Z (Z = 1, якщо результат дорівнює нулю) або C (C = 1, якщо відзначена некоректність виконання операції - переповнення акумулятора або спроба ділення на нуль). Необхідні зміни регістра RP відображені в табл.11.
Для логічних операцій проводиться лише аналіз результату на рівність нулю: S = 1, якщо результат операції не дорівнює нулю; Z = 1, якщо цей результат дорівнює нулю.
Символ "-" в графі ознак табл.11 визначає ситуацію, яка не може виникнути в даній операції (наприклад, некоректність при виконанні операції віднімання модулів), або те, що дана операція не змінює регістр RP (наприклад, команда безумовного переходу).
Сутність зміни регістра RP розглянемо на конкретному прикладі. Припустимо, що в програмі виконана команда додавання і при цьому отримано негативний результат. Тоді в стан «1» повинен бути встановлений лише перший біт регістра RP, інші біти повинні бути скинуті на нуль.
Примітка. Якщо в команді, наведеною в табл.11, всі графи ознак відзначені символом "-", то це означає лише те, що при цьому зберігаються попередні значення ознак (але не виконується скидання їх на нуль).
У командах «Умовний перехід по S» і «Умовний перехід по Z» формування адреси і передача його в лічильник SAK провадиться, якщо значення відповідного ознаки дорівнює одиниці.
У регістрі RP немає біта, що встановлюється в 1, якщо результат арифметичної операції позитивний. Тут мається на увазі, що якщо результат такої операції не негативний і не нульовий, то він позитивний. Отже, в цьому випадку перші три біти регістра RP повинні бути встановлені в нульове положення.
За командою безумовного переходу адреса пересилається в лічильник SAK, після чого відбувається вибірка нової команди і її виконання.
В системі команд ЕОМ G 1 немає спеціальної команди, яка реагує на виникнення ознаки С = 1. Тому при емуляції машинної програми повинні перевірятися ті команди, при виконанні яких може виникати некоректність рішення, і при виявленні значення С = 1 на екран потрібно видавати інформацію про аварійний завершенні програми, вказавши при цьому код операції та адресу команди, що викликала переривання, після чого зробити останов ЕОМ.
При зверненні до підпрограми повинні бути виконані дві дії: передача управління на початковий ділянку підпрограми і повернення в зухвалу програму після відпрацювання підпрограми. Ця робота в ЕОМ G1 виконується фактично однією командою «Виклик підпрограми». Звернення до підпрограми має певні особливості. Тут передбачається, що команда повернення з підпрограми повинна знаходитися в першій команді підпрограми, а в останній її команді повинен бути безумовний перехід на першу команду. Адреса , що вказується в команді «Виклик підпрограми» - це адреса першої команди підпрограми. У своїй роботі команда «Виклик підпрограми» здійснює такі дії:
- Записує в першу клітинку підпрограми команду 1110 00 SAK, де в якості коду операції вказаний безумовний перехід, а в адресній частині знаходиться поточний зміст лічильника SAK, тобто адресу команди, записаної в зухвалій програмі після команди звернення до підпрограми;
- Пересилає в SAK адресу
Тобто адреса другої команди підпрограми, з якої фактично починається її виконання. Команда «Інкремент осередку» використовується для реалізації циклічних алгоритмів. Як виконавчий адреси в цій команді вказують адресу лічильника циклів, в який спочатку заносять від'ємне значення кількості повторень циклу. При кожному виконанні команди «Інкремент осередку» проводиться збільшення лічильника на одиницю і, коли це значення стане нульовим, виконується пропуск наступної команди, в якості якої записують безумовну передачу управління на початок циклу.
При виконанні команди «Інкремент комірки» сформований адресу з поля А регістра команд RK надходить в регістр RA, потім з ОЗУ вибирається осередок з адресою , І її вміст через регістр RS надходить на другий вхід АЛП. В АЛП до надійшов чисельному значенню додається одиниця, і результат через регістр RS повертається в ОЗУ за колишньою адресою. За значенням результату формується ознака Е регістра RP. Якщо результат дорівнює нулю, то встановлюється значення Е = 1, в іншому випадку записується Е = 0. Якщо Е = 1, то вміст лічильника SAK збільшується на одиницю, що призводить до пропуску наступної команди.
2. ПРОГРАМУВАННЯ В КОДАХ НАВЧАЛЬНОЇ ЕОМ G1
Таблиця 2. Мнемомокод тесту 1
адрес | метки | мнемокод | операнды | Hex |
1 |
| Load | 0,0,a | 0416 |
2 |
| Mul | 0,0,a | 1416 |
3 |
| Add | 0,0,c1 | 0C1E |
4 |
| Mul | 0,0,c18 | 1419 |
5 |
| Load | 1,0,b | 0617 |
6 |
| Mul | 1,0, c288 | 161A |
7 |
| Save | 1,0,y | 0A18 |
8 |
| Sub | 0,0,y | 1018 |
9 |
| Save | 0,0,y | 0818 |
10 |
| Load | 0,0,a | 0416 |
11 |
| Mul | 0,0,c22 | 141B |
12 |
| Load | 1,0,b | 0617 |
13 |
| Mul | 1,0,c8 | 161C |
14 |
| Save | 1,0,b | 0A17 |
15 |
| Add | 0,0,b | 0C17 |
16 |
| Load | 1,0,y | 0618 |
17 |
| Save | 0,0,y | 0818 |
18 |
| Div | 1,0,y | 1A18 |
19 |
| Sub | 1,0,c60 | 121D |
20 |
| Save | 1,0,y | 0A18 |
21 |
| halt | - | 0000 |
22 | A | Dw | 9 | 0009 |
23 | B | Dw | -10 | FFF6 |
24 | Y | Dw | 0 | 0000 |
25 | C18 | Dw | 18 | 0012 |
26 | C288 | Dw | 288 | 0120 |
27 | C22 | Dw | 22 | 0016 |
28 | C8 | Dw | 8 | 0008 |
29 | C60 | Dw | 60 | 003C |
30 | C1 | dw | 1 | 0001 |
Тест 1
а=9 в=-10 у=-24
Мал.2 Дамп пам’яті до виконання теста 1 після виконання теста 1
2.2. Циклічна програма з розвилками.
Тест 2 Таблиця 3. Мнемомокод тесту 2
адрес | метки | мнемокод | операнды | HEX |
1 | M0 | Load | 0,1, adr x | 052A |
2 |
| Sub | 0,0,a | 1026 |
3 |
| Js | M1 | 300D |
4 |
| Jz | M2 | 3415 |
5 |
| Load | 0,1,adr x | 052A |
6 |
| Add | 0,0,a | 0C26 |
7 |
| Load | 1,1, adr x | 072A |
8 |
| Sub | 1,0,a | 1226 |
9 |
| Save | 1,0,tmp | 0A27 |
10 |
| Div | 0,0,tmp | 1827 |
11 |
| Save | 0,1, adr y | 092B |
12 |
| Jmp | M3 | 3817 |
13 | M1 | Load | 0,1,adr x | 052A |
14 |
| Add | 0,0,a | 0C26 |
15 |
| Load | 1,1,adr x | 072A |
16 |
| Sub | 1,0,a | 1226 |
17 |
| Save | 1,0,tmp | 0A27 |
18 |
| Mul | 0,0,tmp | 1427 |
19 |
| Save | 0,1, adr y | 092B |
20 |
| Jmp | M3 | 3817 |
21 | M2 | Load | 0,0,a | 0426 |
22 |
| Save | 0,1, adr y | 092B |
23 | M3 | Load | 0,0, adr x | 042A |
24 |
| Add | 0,0,c1 | 0C28 |
25 |
| save | 0,0,adr x | 082A |
26 |
| Load | 0,0, adr y | 042B |
27 |
| Add | 0,0,c1 | 0C28 |
28 |
| Save | 0,0,adr y | 082B |
29 |
| Inc | 0,0,c3 | 2C29 |
30 |
| Jmp | Mo | 3801 |
31 |
| Halt | - | 0000 |
32 | X1 | Dw | -30 | FFE2 |
33 | X2 | Dw | 60 | 003C |
34 | X3 | Dw | 100 | 0064 |
35 | Y1 | Dw | 0 | 0000 |
36 | Y2 | Dw | 0 | 0000 |
37 | Y3 | Dw | 0 | 0000 |
38 | A | Dw | 60 | 003C |
39 | Tmp | Dw | 0 | 0000 |
30 | C1 | Dw | 1 | 0001 |
30 | C3 | Dw | -3 | FFFD |
30 | Adrx | Dw | 32 | 0020 |
30 | adry | Dw | 35 | 0023 |
Мал.3 Дамп пам’яті до виконання теста 2 після виконання теста
2.3 Виконання логічних команд із використанням підпрограм.
Тест 3 Таблиця 4. Мнемомокод тесту 3
адрес | метки | мнемокод | операнды | HEX |
1 | mo | Call | M1 | 3C0E |
2 |
| Load | 0,0,adr a | 041E |
3 |
| Add | 0,0,c1 | 0C1C |
4 |
| Save | 0,0,adr a | 081E |
5 |
| Load | 0,0,adr b | 041F |
6 |
| Add | 0,0, c1 | 0C1C |
7 |
| Save | 0,0, adr b | 081F |
8 |
| Load | 0,0, adr y | 0420 |
9 |
| Add | 0,0, c1 | 0C1C |
10 |
| Save | 0,0, adr y | 0820 |
11 |
| Inc | C2 | 2C1D |
12 |
| Jmp | M0 | 3801 |
13 |
| Halt | - | 0000 |
14 | M1 | Адрес возврата | 0 | 0000 |
15 |
| Load | 0,1,adr a | 051E |
16 |
| Subm | 0,1,adr b | 1D1F |
17 |
| And | 0,1,adr a | 211E |
18 |
| Or | 0,1, adr b | 251F |
19 |
| Xor | 0,1,adr a | 291E |
20 |
| Save | 0,1, adr y | 0920 |
21 |
| Jmp | M1 | 380E |
22 | A1 | dw | -10 | FFF6 |
23 | A2 | dw | -5 | FFFB |
24 | B1 | dw | -4 | FFFC |
25 | B2 | dw | -1 | FFFF |
26 | Y1 | dw | 0 | 0000 |
27 | Y2 | dw | 0 | 0000 |
28 | C1 | dw | 1 | 0001 |
29 | C2 | dw | -2 | FFFE |
30 | Adr a | dw | 22 | 0016 |
31 | Adr b | dw | 24 | 0018 |
32 | Adr y | dw | 26 | 001A |
a1=-10 a2=-5 b1=-4 b2=-1 у1=8 y2=4
Мал.4Дамп пам’яті до виконання теста 3 після виконання теста
2.4 Додатковий режим емулятора.
Використовуючи процедури GetDate і GetTime, вивести на екран інформацію про поточну дату і поточний час в наведеному нижче вигляді.
Перший рядок: "15 січня 2011 року".
Другий рядок: "10 годині 15 хвилин 32 секунди".
При цьому залежно від значень числівників треба формувати відповідний відмінок іменника. Наприклад, 10 хвилин, але 21 хвилина, 22 хвилини.
Мал.5 Додатковий режим емулятора
3. ПРОГРАМНА МОДЕЛЬ НАВЧАЛЬНОЇ ЕОМ G1
3.1 Призначення й область застосування.
У цей час емулятори набули широкого поширення. Вони застосовуються з метою контролю за правильністю роботи мікропроцесору або обчислювальної машини в загалом на етапах конструювання.
Програма-емулятор повинна володіти наступними характеристиками:
повністю відповідати архітектурі пристрою, що моделюється ;
програма-емулятор повинна моделювати гранично жорсткі умови роботи фізичного пристрою;
програма повинна обробляти як можна більшу кількість станів фізичного пристрою;
програма повинна забезпечувати перевірку правильності роботи всіх блоків пристрою, що досліджуються;
3.2 Технічні характеристики програми
Програма містить головну частину та 5 допоміжних модулів.
Взагалі робочий файл програми Project1.exe має об’єм 553 КБ (566 272 байт)
Детальна інформація приведена у таблиці 5
Таблиця 5
№ | Модуль | Розмір | Примітка |
1 | Unit1 | 9,20 КБ (9 421 байт) | містить головне вікно емулятора та організує взаємодію усіх інших модулів програми, а також містить процедури для візуального відображення дампа пам’яті та регістрів
|
2 | COMMAND | 9,39 КБ (9 617 байт) | містить реалізацію усіх команд емулюємої машини G1 |
3 | ad | 3,17 КБ (3 254 байт) | містить допоміжні процедури |
4 | Rab | 2,36 КБ (2 423 байт) | містить глобальний опис констант, типів та змінних |
5 | Unit2 | 1,93 КБ (1 983 байт) | Додатковий режим емулятора |