WWW.REFERATCENTRAL.ORG.UA - Я ТУТ НАВЧАЮСЬ

... відкритий, безкоштовний архів рефератів, курсових, дипломних робіт

ГоловнаІнформатика, Компютерні науки → Програмування на мові Асемблер - Реферат

Програмування на мові Асемблер - Реферат


Курсова робота
з мови прграмування "Асемблер"
на тему: "Програмування на мові Асемблер".
.
Зміст
Вступ
1. Сегментація пам'яті.
2. Команди пересилання muv.
3. Команди передачі даних.
4. Робота з стеком (команди pop і push).
5. Арифметичні команди.
Сегментація пам'яті.
Перед тим як вивчати регістри і команди процесора 8086 необхідно зрозуміти,як він адресує пам'ять,використовуючи системні сегменти і зміщення.
Регістр- невелика по розміру пам'ять спеціального призначення.Використовуючи для представлення значення адреси 20 біт,8086-й процесор може мати доступ до 1 Мбайта пам'яті.DOS ROMBIOS та інші програми,які знаходяться в пам'яті ПК вже займають певне місце в пам'яті,тому решта програм записуються, використовуючи менший простір пам'яті- до 640 кБ.
Незалежно від того,скільки пам'яті може адресувати процесор,найменшим блоком пам'яті є 8-бітовий байт.Кожен байт має своє унікальне місцеположення,яке називається фізичним адресом,по ньому програми можуть читати і записувати інформацію.[Для адресації великих об'ємів пам'яті,потрвбно більша кількість біт під фізичні адреси ].Процесор 8086 використовується тільки 16-бітові регістри.Щоб мати доступ до всього мегабайта пам'яті,використовується метод сегментації пам'яті.
Сегментація пам'яті- метод,який використовується процесором 8086 для розділення великого адресного прстору на логічні 64 кБ фрагменти.З допомогою цього методу адрес конкретного байта може бути виражений двома значеннями: за адресом фрагмента сегмента і 16-бітовим зміщенням від початку сегмента.Ця комбінація значень сегмента і зміщення,називається логічною адресою.
Якщо в комп'ютері 64 кБ пам'яті,тоді для задання адреса будь-якого байта досить 16 біт,з допомогою яких представляються значення від 0 до 65535 (216-1) або заокруглено- до 64 кБ.
СП. Тема 1.5:Команди МП 8088/86.
Команди передачі даних.
В залежності від виконуваних функцій всі команди CPU 8086 діляться шість категорій:
Команди передачі даних.
Алгоритмічні команди.
Логічні команди.
Команди управління потоком.
Команди управління процесором.
Команди для роботи з рядками.
1.Команди передачі даних.
Ці команди діляться на чотири частини:загальні, в/в, адресні і прапорів.Операнди справа від імені команди визначають необхідні їй елементи даних.Їх може бути 2,1 або жодного.
Розглянемо основні команди.
2.Команда mov.
Ця команда найчастіше зустрічається в програмах на Аs.Для mov потрібні два операнди:операнд- джерело іоперанд- призначення; джерело записується після призначення:mov призначенн джерело (дані з джерела передаються в направленні стрілки,справа на ліво).
Наприклад: 1) mov ax bx ; ax bx
значення регістра bx пересилається в регістр ах.Якщо значення ах= 0000,bx= 0123h, то після виконання mov значення ах стане дорівнювати 0123h, bx не зміниться.
2) mov cx, [num Pages]; ax [num Pages].
Пересилає значення, яке знаходиться в [num Pages] в регістер сх.Мітка num Pages визначає адресу в пам'яті,а [num Pages] відповідає даним записаним по цьому адресу.Тобто мітки визначають адреси,по яких дані зберігаються в пам'яті:
3) mov [level],dl ; [level] dl
значення з 8- бітового регістра dl пересилаються по адресу,на який вказує мітка.Така пересилка даних копіювання значення одного регістра в другий і переміщення даних з регістра в пам'ять одна з найбільших загальних операцій в програмуванні на Аs.Проте mov не може пересилати дані безпосередньо між двома адресами пам'яті.Тому,запис mov [count], [maxCount] є некоректним,щоб пересилати значення,записане в maxCount по адресу count потрібно виконати два кроки і використати проміжковий регістер:
mov ax,[maxCount]; ax [maxCount]
mov [count],ax ;[Count] ax
Ознайомимся з використанням команди mov на прикладі програми MOV.ASM (практичне заняття).
Робота з стеком (команди pop і push).
Cтекова пам'ять.
Стек це спеціальний сегмент пам'яті,який використовується деякими командами процесора 8086.Положення і розмір стека (до 64 кБт) визначаються програмою і програмістом.Cамий простий засіб створення стека заключається в використанні директиви STACK.Стек виконує три основні функції:
1) Тимчасове збереження значень регістрів;
2) Збереження адресів повернення з підпрограми;
3) Збереження динамічних змінних.
Останній більш характерний при роботі з високорівневими мовами програмування.
Як працює стек.(Принцип роботи стека).
Стек нагадує гору тарілок.Верхню тарілку легко взяти,але щоб добратися до тарілки,яка знаходиться знизу,потрібно зняти всі тарілки над нею.
Розміщення нової порції з вершини на вершину стека називається проштовхуванням в стек (push).
Видалення,порції з вершини стека, яке приводить до підняття на один рівень останніх порцій , на 3 виштовхуванням стека (pop) байта в стеку.
При проштовхуванні в стек останьої порції вона перша і виштовхується,тому такий тип стека називається LIFO-стек (LAST- IN- First- Out останній- прийшов- перший- пішов).
На відміну від тарілок,значення в пам'яті ПК фізично не можуть пересуватися вниз або вверх.Тому для моделювання пересування значень в стеку необхідно використовувати регістри,які визначають базовий розмір стека і зміщення вершини стека,тобто місцеположення верхнього значення в стеку.
Сегментний регістр ss містить адресу початку стекового сегмента.В регістрі sp знаходиться зміщення вершини стека відносно цього сегмента.
Стековий сегмент.
0F00: 0000
0002
0004
0006
ss:sp 3 0008
ss:sp 2 000A
ss:sp 1 000C
на рис.4.4 зображено,як розміщується в пам'яті невеликий сегмент із 12 байт.В регістрі ss знаходиться адрес початку стекового сегмента 0F00.Регістр sp вказує на зміщення відносно йієї початкової адреси в інтервалі від 0000 до 000А.Останній байт стека має зміщення 000В.Під елементи стека виділяють 2-байтові слова..
Щоб використовувати цей стек , в програмі досить декларувати STACK 12 , після чого асемблер компановщик DOS самі точно визначать , де розмістити стек в пам яті. Регістри ss i sp не потрібно ініціалізувати , це робить DOS при загрузці ас програми на рисунку 44 .SP1 вказує , куди при запуску програма вказує sp.Потрібно замітити , що логічний адрес ss:sp вка-
зуэ на байт , розміщений нижче останнього ,байта в стеку.
Потрібно пам 'ятати , що основа стека розміщується в більш високих адресах пам 'яті.В пам яті стек росте в напрямі зменшення адрес пам яті і зменшується в протилежному напрямку .
До бажаного результату приведем на рис.4.4 виконання слідуючих команд :
mov ax , 100
push ax ; sp 2
mov bx , 200
push bx ; sp3
Команда push виконує дві дії :
1) Зменшує на 2
Loading...

 
 

Цікаве