Дисципліни:
Курсова робота
На тему:

Розробка та реалiзацiя програми моделювання обчислювального процесу (однопроцесорний варiант з послiдовним процесом).

Дисципліна: Системне програмування та операційні системи
ВНЗ:НУ «ЛП»
Формат: Word Doc

Переглядів: 2013 Додано: 2013-03-08




Частина тексту

Зміст

Вступ
  1. Постановка задачі
  2. Опис переривань
  3. Опис обчислювальних процесів
  4. Алгоритм розв’зку задачі
  5. Програмні реалізації алгоритму
  6. Загальна характеристика програм
  7. Призначення програм
  8. Вхідна і вихідна інформація
  9. Середовище реалізації програм
  10. Технологія виконання та відлагодження програм
  11. Інструкція користувачеві програми
  12. Конрольні приклади та аналіз їх комп’ютерної реалізації
Висновки
Література

Вступ

Система команд мікропроцесора Intel 8086 має 135 інструкцій, кожна з яких поділяється на групи бітів, або поля. Поле коду операції визначає тип машинної команди, а решта поля, що називаються операндами, ідентифікують інформацію, що вимагає команда. Операнд може містити дані, частину адреси даного, непрямий вказівник на дані тощо. Спосіб визначення місцезнаходження операнда називається режимом адресації. Для мікропроцесора Intel 8086 режими адресації поділяються на два класи: для даних і для переходів. Перші включають такі способи:
1) Безпосередній, при котрому операнд довжиною 8 або 16 біт є частиною команди.
mov ax, 55
2) Прямий, при якому 16-бітова виконавча адреса операнда є частиною команди.
mov ax, VAR
3) Регістровий, при якому операнд може знаходитись в одному з регістрів: AX, AH, AL, BX, BH, BL, CX, CH, CL, DX, DH, DL, BP, SP, SI, DI.
mov ax, bx
4) Непрямий регістровий, при якому виконавча адреса операнда знаходиться в одному з вказаних регістрів: [BX], [SI], [DI].
mov ax, [bx]
5) Відносний регістровий, при якому виконавча адреса обчислюється як сума 8- або 16-бітового зміщення і вмісту базового ([BX], [BP]) або індексного ([SI], [DI]) регістра.
mov ax, [bx+10]
6) Базовий індексний, при якому виконавча адреса визначається як сума вмісту базового ([BX], [BP]) або індексного ([SI], [DI]) регістрів.
mov ax, [bp+di]
7) Відносний базовий індексний, при котрому виконавча адреса є сумою адреси, яка обчислюється в базовому індексному режимі, і 8- чи 16-бітового зміщення.
mov ax, [bp+si+4]

При виконанні програм мікропроцесор реалізує таку послідовність дій:
1) Вибирає команду за адресою, що є за зміщенням IP в сегменті CS.
2) Завантажує команду в програмно-недосяжний регістр і дешифрує її одночасно з інкрементом IP для адресації наступної команди.
3) Виконує команду, а у випадку команди переходу – завантажує в IP адресу переходу.
Перевіряє запит переривання і переходить до кроку 1 або на програму оброблення переривання.

1. Описати формат адреси у процесорі Intel 8086. Навести приклади адреси сегменту і 16-розрядного зміщення. При цьому використовуються такі правила адресації:
1) Вибірка команд проходить тільки за адресою, що задається регістрами IP і CS.
2) Регістр SP застосовується тільки як зміщення по відношенню до регістру SS.
3) Команди роботи зі строками, що використовують регістр ES, не можуть вибирати замість нього інші регістри сегментів.
4) Якщо регістр BX є базовим, то, по замовчуванню, операнд знаходиться в сегменті даних і для обчислення його фізичної адреси використовується регістр DS.
5) Якщо базовим є регістр BP, то операнд знаходиться в стеку і для обчислення адреси використовується регістр SS.
6) Якщо використовуються обидва регістри – базовий та індексний, то операнд знаходиться в сегменті, на який вказує базовий регістр.
7) Якщо використовується тільки індексний регістр, то операнд знаходиться в сегменті даних DS.
Так як кожна команда, що працює з пам’яттю, використовує регістр сегмента, асемблер повинен визначити, який саме регістр повинен вибиратись в кожному конкретному випадку. Це задається адресним виразом, що записаний в вихідному операторі. Використання регістрів сегментів, що прийняте в правилах 4 – 7, можна змінити за допомогою префікса заміни сегмента, що включається в кожну команду або програмістом, або за допомогою директиви ASSUME.

2. Класифікація режимів адресації для даних і для переходів. Навести приклади.
При необхідності зміни послідовності виконання команд програміст використовує команди передачі керування. Для таких команд (умовні та безумовні переходи, виклики процедур) існує чотири режими адресації переходів:
1) Прямий перехід в межах сегменту, при якому адреса команди в сегменті коду визначається як сума вмісту регістру IP і 8- чи 16-бітового зміщення. В командах умовного переходу дозволяється використовувати тільки 8-бітове зміщення (для процесора Intel 8086).
jmp lab
2) Непрямий перехід в межах сегменту використовується лише в командах безумовного переходу, при цьому вміст регістра IP заміняється на 16-бітове значення вибраного регістру або комірки, котрі вказуються в будь-якому режимі адресації даних, крім безпосереднього.
jmp [bx]
3) Міжсегментний прямий перехід, при якому вміст регістрів IP і CS заміняється двома словами, що розташовуються безпосередньо в самій команді.
jmp far ptr lab
4) Міжсегментний непрямий перехід, при якому вміст регістрів IP і CS заміняється двома послідовно розміщеними в пам’яті словами. Ці слова можуть бути вказані в будь-якому режимі адресації операндів, крім безпосереднього і регістрового.
jmp dword ptr [bx]

1.1 Опис переривань

Переривання - це операція, яка призупиняє виконання програм для спеціальних системних дій.
В залежності від джерела переривання класифікують так:
- апаратні, що виникають як реакція мікропроцесора на фізичний сигнал від деякого пристрою комп’ютера.
- програмні, що викликаються програмою за допомогою відповідної команди (команда int).
- виключення – різновид програмних переривань, що є реакцією мікропроцесора на помилку при виконанні деякої команди.
Приклад:
mov ah, 2h
int 10h
Переривання BІОS та їх використання.
Переривання BIOS:
05 h– роздрук екрану;
10 h– керування дисплеєм;
12 h– запит про фізичний розмір оперативної пам’яті;
13 h– дискові операції вводу-виводу;
14 h– керування комунікаційним адаптером;
16 h– ввід з клавіатури;
17 h– робота з принтером;
18 h– звертання до мови BASIC яка є вбудована в мікросхему ROM;
19 h– перевантаження операційної системи;
1А h– запит на встановлення поточного часу і дати;
1F h – адреса таблиці графічних символів.
33h – робота з мишею
Приклад:
mov ah, 2h
int 10h
Переривання DOS та їх використання.
Переривання DOS:
20 h– завершення програми;
21 h– запит функцій DOS;
22 h– адреса програми обробки завершення задачі;
23 h– адреса програми реакції на Ctrl + Break;
24 h– адреса програми реакції на фатальну помилку;
25 h– абсолютне читання з диску;
26 h– абсолютний запис на диск;
27 h– завершення програми, що залишається резидентною.
Приклад:
mov ah, 01h
int 21h

1.2 Опис обчислювальни процесів

Додавання та віднімання однобайтових чисел на мові програмування Assembler..
Додавання:
MOV AL,DATA1
MOV BL,DATA2
ADD AL,BL
Результат в регістрі AL
Віднімання:
MOV AL,DATA1
MOV BL,DATA2
SUB AL,BL
Результат:в AL-різниця AL-BL

Додавання та віднімання двобайтових чисел на мові програмування Assembler.
Команди ADD і SUB виконують додавання і віднімання байтів або слів, що містять двійкові дані. Віднімання виконується в комп'ютері за методом додавання з двійковим доповненням: для другого операнда встановлюються обернені значення біт і додається 1, а потім відбувається додавання з першим операндом. В усім, крім першого кроку, операції додавання і віднімання ідентичні. Для беззнакових величин усі біти є бітами даних і замість обмеження +32767 регістр може містити числа до +65535. Для знакових величин лівий біт є знаковим бітом. Команди ADD і SUB не роблять різниці між знаковими і беззнаковыми величинами, вони просто додають і віднімають біти. В прикладі 1 до слова DATA1 додається слова DATA2 і результат заноситься в регістр АХ. В прикладі 2 від слова DATA1 віднімається слово DATA2 і результат заноситься в регістр АХ.
Приклад 1:
mov ax, DATA1
mov bx, DATA2
add ax, bx
Приклад 2:
mov ax, DATA1
mov bx, DATA2
sub ax, bx

Множення однобайтових чисел на мові програмування Assembler. Навести приклад.
Команда MUL i IMUL виконують беззнакове і знакове множення відповідно. Множеме знаходиться в регістрі AL, а множник у байті пам'яті або в однобайтовому регістрі. Після множення добуток знаходиться в регістрі AX. Операція ігнорує і витирає будь-які дані, що знаходилися в регістрі AH.
У єдиному операнді команд MUL і IMUL вказується множник. Якщо множене і множник має однаковий знаковий біт, то команди MUL і IMUL генерують однаковий результат. Але, якщо співмножники мають різні знакові біти, то команда MUL виробляє додатній результат множення, а команда IMUL - від'емний.
Приклад:
mov al, DATA1 ; множене
mov bl, DATA2 ; множник
mul bl ; рез. в AX

Множення двобайтових чисел на мові програмування Assembler. Навести приклад.
Команда MUL i IMUL виконують беззнакове і знакове множення відповідно. Множене знаходиться в регістрі AX, а множник - у слові пам'яті або в регістрі. Після множення добуток знаходиться в подвійному слові, для якого потрібно два регістри: старша (ліва) частина добутку знаходиться в регістрі DX, а молодша (права) частина в регістрі AX. Операція ігнорує і витирає будь-які дані, що знаходилися в регістрі DX.
У єдиному операнді команд MUL і IMUL вказується множник.
Якщо множене і множник має однаковий знаковий біт, то команди MUL і IMUL генерують однаковий результат. Але, якщо співмножники мають різні знакові біти,то команда MUL виробляє додатній результат множення, а команда IMUL - від'емний.
Приклад :
mov ax, DATA1 ; множене
mov bx, DATA2 ; множник
mul bx ;рез. в DX : AX

Ділення однобайтових чисел на мові програмування Assembler. Навести приклад.
mov AX,data1
mov BX,data2
DIV BX
Ділення двобайтових чисел на мові програмування Assembler. Навести приклад.
mov AX,data1
mov BX,data2
mov DX,0
DIV BX ; результат в DX залишок, в AX ціла частина

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

Також підпрограма може приймати один або декілька параметрів і повертати результат. В цьому випадку необхідно організувати взаємодію основної програми з підпрограмою. Для передачі параметрів в підпрограму і з неї можна використовувати регістри загального призначення, комірки пам’яті або стек.
Синтаксис
PROC <ім'я процедури ><довжина переходу>
.
.
.;тіло процедури
RET

довжина переходу - прехід від нашої програми до самої процедури, які вони займають в RAM:
NEAR - процедури і програма повинні знаходитися в межах сегмменту
FAR - процедури і програма повинні знаходитися в різних сегментах
PUBLIC - процедури і програма повинні знаходитисяу різних файлах

Виклик процедури CALL<ім'я процедури>
Приклад:
;Підпрограма затримки з одним параметром
;який передається в регістрі SI
PROC DELAY PUBLIC ; Процедура-підпрограма
push CX ; Збережемо СХ основної програми
mov CX,SI ; Лічильник зовнішнього циклу
del1: push CX ; Збережемо його
mov CX,0 ; Лічильник внутрішнього циклу
del2: loop del2 ; Внутрішній цикл (64К кроків)
pop CX ; Відновим зовнішній лічильник
loop del1 ; Зовнішній цикл (2000 кроків)
pop CX ; Відновимо СХ програми
RET ; Повернення в програму

Дані на мові програмування асемблер описуються наступним чином :

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

Спосіб визначення місцезнаходження операнда називається режимом адресації. Для мікропроцесора Intel 8086 режими адресації поділяються на два класи: для даних і для переходів. Перші включають такі способи:
1) Безпосередній, при котрому операнд довжиною 8 або 16 біт є частиною команди.
mov ax, 55
2) Прямий, при якому 16-бітова виконавча адреса операнда є частиною команди.
mov ax, VAR
3) Регістровий, при якому операнд може знаходитись в одному з регістрів: AX, AH, AL, BX, BH, BL, CX, CH, CL, DX, DH, DL, BP, SP, SI, DI.
mov ax, bx
4) Непрямий регістровий, при якому виконавча адреса операнда знаходиться в одному з вказаних регістрів: [BX], [SI], [DI].
mov ax, [bx]
5) Відносний регістровий, при якому виконавча адреса обчислюється як сума 8- або 16-бітового зміщення і вмісту базового ([BX], [BP]) або індексного ([SI], [DI]) регістра.
mov ax, [bx+10]
6) Базовий індексний, при якому виконавча адреса визначається як сума вмісту базового ([BX], [BP]) або індексного ([SI], [DI]) регістрів.
mov ax, [bp+di]
7) Відносний базовий індексний, при котрому виконавча адреса є сумою адреси, яка обчислюється в базовому індексному режимі, і 8- чи 16-бітового зміщення.
mov ax, [bp+si+4]

3 Прогpамні реалізації алгоритму

3.1 Загальна характеристика програм
Ім‘я : calc (мова програмування Assembler);
Текст пограми calc.asm ;
Виконавчий модуль calc.exe ;

3.2 Призначення програм
Моделювання обчислювального процесу (однопроцесорний варіант з послідовним процесом).

3.3 Вхідна і вихідна інформація
Вхідною інформацією є символи(*,/,-,+,q), введені з клавіатури. Вихідною інформацією є результат обчислень.

3.4 Середовище реалізації програм
Для функціонування програми потрібен комп’ютер типу IBM PC чи 100% сумісний , мінімум 640кб оперативної пам’яті, близько 100кб дискового простору. Відеоадаптер типу CGA, EGA, VGA. Операційна система MS-DOS v.6.22 чи WINDOWS v.9x.

3.5 Технологія виконання та відлагодження програм
Скомпілювати, зредагувати зв’язки та сформувати виконавчий код можна за допомогою стандартних засобів мови Assembler. Компіляція – Tasm.exe, Tlink.exe. Відлагодження - TurboDebagger

4.Інструкція користувачеві
Для зручності роботи програма цієї курсової роботи має “дружній” інтерфейс, працюють в діалоговому режимі. Потрібно запустити com- файл програми. Після виведення повідомлення потрібно ввести один із символів(*,/,-,+,q).

Висновки

Результатом курсової роботи стала розробка програма моделювання обчислювального процесу (однопроцесорний варіант з послідовним процесом).
Мова програмування Assembler відзначається швидкістю роботи. Це є мова середнього рівня, яка дозволяє напряму доступатися до системних ресурсів компютера.
Середній рівень програмування – це програмування з використанням переривань операційної системи. Переривання – це компактні процедури, які виконують “нудну” роботу будь-якого комп’ютера (наприклад переміщення курсора або роботу з файлами).
Низький рівень програмування – це, наприклад, програмування мікросхем (таймер, контролер переривань, контролер монітора…). На цьому рівні, незважаючи на швидкість роботи програми, не рекомендується програмувати через можливу несумісність з іншими апаратними засобами.
Це програмування на таких мовах, як ASSEMBLER.
Високий рівень програмування – це програмування на таких мовах, як BASIC або Pascal. На такому рівні найпростіше прграмувати, але програма сильно програє по швидкодії таким самим програмам, але написаним на середньому або низькому рівнях програмування і, що найважливіше, на високому рівні відсутні багато з можливостей управління апаратними засобами комп’ютера.