Основи програмування мовою асемблер та ознайомлення із засобом для відпрацювання асемблерних програм Emu 8086
Загальна структура комп'ютера, архітектура процесора типу Intel 8086. Принцип роботи пам'яті, її види (постійна та оперативна). Основи програмування на мові асемблер та її синтаксис. Особливості використання позначок, кодів команд, операндів і директив.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | украинский |
Дата добавления | 27.02.2013 |
Размер файла | 36,0 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
ЛАБОРАТОРНА РОБОТА
Основи програмування мовою асемблер та ознайомлення із засобом для відпрацювання асемблерних програм Emu 8086
Вступ
ТЕМА РОБОТИ: Основи програмування мовою асемблер та ознайомлення із засобом для відпрацювання асемблерних програм Emu 8086.
МЕТА РОБОТИ: Знайомство зі структурою персонального комп'ютера та основами програмування на мові асемблера для мікропроцесора Intel 8086.
1. Теоретичні відомості
1.1 Організація обчислень та узагальнена архітектура комп'ютера IBM PC
Загальна структура комп'ютера
Як вам відомо, головні компоненти апаратних засобів комп'ютера - це системний блок, клавіатура, пристрій відображення інформації (електронно-променевий або рідинно-кришталевий монітор), дисководи, друкуючий пристрій (принтер), а також різноманітні засоби для асинхронного зв'язку з зовнішніми пристроями та керування програмами для іграшок. Сучасні комп'ютерні системи можуть містити також інші різноманітні периферійні пристрої.
У свою чергу, системний блок складається з системної плати, блока живлення комп'ютера та комірок (слотів) для розміщення додаткових інтерфейс них плат. На системній платі розташовані:
мікропроцесор;
мікросхеми постійної пам'ять (постійні запам'ятовуючі пристрої, або ПЗП), яка містить ядро для початкового завантаження операційної системи та інтерпретатор мови програмування BASIC;
мікросхеми оперативної пам'ять (оперативні запам'ятовуючі пристрої, або ОЗП).
Комірки для розміщення додаткових інтерфейсних плат забезпечують підключення пристроїв відображення інформації (моніторів), дисководів всіх типів, каналів телекомунікацій (мережних плат або модемів), додаткової пам'яті та інших різноманітних пристроїв. Така конструкція комп'ютера була запропонована фірмою IBM та отримала назву “принципу відкритої архітектури”. Головною перевагою цього принципу є простота модернізації комп'ютера через підключення до нього нових пристроїв або через заміну застарілих пристроїв на сучасні.
Головною частиною комп'ютера є мікропроцесор, який безпосередньо виконує обробку команд та даних. Як видно з рис. 1, процесор типу Intel 8086 розділений на дві головні частини: операційний пристрій (ОП) та шинний інтерфейс (ШІ). Операційний пристрій безпосередньо виконує команди програми, у той час як шинний інтерфейс підготовлює дані та команди для виконання. Операційний пристрій складається з арифметико-логічного пристрою (АЛП), системи керування (СК) та десяти розглянутих вище регістрів (чотири регістри загального призначення, п'ять регістрів-вказівників та регістр стану). АЛП разом із СК називають виконуючим блоком (ВБ) процесора. Схеми АЛП безпосередньо забезпечують виконання арифметичних та логічних команд на апаратному рівні, в той час як СК, яка зв'язана з регістром стану та з лічильником команд, забезпечує слідкування за логікою виконання програми при наявності у ній підпрограм або команд вітвлення та циклу. Більш досконало логіка та організація програми будуть розглянуті у лабораторній роботі №3.
Блок керування шиною (БКШ), черга команд та розглянуті нами раніше сегментні регістри складають шинний інтерфейс процесора та виконують три головних функції. По-перше, це передавання даних до ОП процесора, до зовнішніх пристроїв, або до комірок пам'яті ЕОМ. По-друге, як вже відмічалось раніше, через сегментні регістри здійснюється керування адресацією оперативної пам'яті комп'ютера.
Третя функція ШІ - це вибирання команд з оперативної пам'яті комп'ютера.
Як відомо, всі команди, які повинні бути виконані програмою, розташовані в оперативній пам'яті комп'ютера. Тому для прискорення роботи процесора вона організована таким чином: ОП та ШІ працюють одночасно, але ШІ попереджує роботу ОП на один крок. ОП “дає знати” ШІ, яка команда буде наступною та з якої комірки оперативної пам'яті треба її вибирати. Таким чином, доки ОП виконує арифметичні та логічні дії над числами, ШІ вибирає з оперативної пам'яті наступну команду або блок команд та завантажує його до верхньої частини черги команд, що значно прискорює роботу комп'ютера. Тому збільшення розміру черги команд - дуже ефективний шлях для підвищення швидкодії процесорної системи. Якщо процесор Intel 8086 мав чергу команд лише на чотири байти, то сучасні процесори мають окремі внутрішні області пам'яті як для збереження кодів команд, так і для збереження даних користувача. Такі осередки пам'яті називаються “кешами” і розмір їх може складати від 64 кБ до 512 кБ. Важливу роль також відіграє швидкість обміну даними між ОП та чергою команд або кешем процесора.
Размещено на http://www.allbest.ru/
Організація пам'яті комп'ютера
Загалом пам'ять персонального комп'ютера складається з двох частин: постійної пам'яті (ROM - Read Only Memory) та оперативної пам'яті (RAM - Random Accesses Memory). Пам'ять ROM - це спеціальна мікросхема, до якої занесена програма початкового завантаження операційної системи. Але на теперішній час для цього використовуються не мікросхеми постійних запам'ятовуючих пристроїв (ПЗП), а мікросхеми з електричним записуванням та стиранням інформації (запам'ятовуючі пристрої, що перепрограмуються). Найбільш цікавою частиною постійної пам'яті з точки зору програмування є базова система введення та виведення даних, або BIOS (Base Input Output System). Ця система налагоджується при збиранні комп'ютера та при підключенні до нього зовнішніх пристроїв, але при необхідності користувач може переналагодити її. Загалом оперативну пам'ять персонального комп'ютера можна умовно поділити на верхні адреси пам'яті, які використовуються системою BIOS та операційною системою MS-DOS, адреси відеопам'яті та нижні адреси пам'яті, де розташовуються драйвера зовнішніх пристроїв та програми користувача. На рис. 2 наведений розподіл адрес пам'яті для мегабайтного адресного простору комп'ютера IBM PC XT. Всі адреси на рисунку вказані у десятковій та у шістнадцятирічній формі (шістнадцятирічні числа помічені літерою Н). Для комп'ютера типа IBM PC AT на базі процесора Intel 80286 з 32-разрядною шиною є можливою адресація 16 Мб оперативної пам'яті, а у комп'ютерах на базі процесора Intel 80386 для режиму реальних адрес пам'яті можлива адресація простору до 4 Гб, а при використанні захищеного режиму роботи процесора - до 64 Гб. Якщо розмір оперативної пам'яті комп'ютера є меншим, то процесор може використовувати для тимчасового збереження даних простір вінчестера як віртуальну пам'ять.
1.2 Основи програмування на мові асемблер та її синтаксис. Позначки, коди команд, операнди та директиви
Формат запису команди асемблеру має такий вигляд:
{позначка:} [асемблерний код команди] {операнди}; {коментарії}
Усі позначки у програмі повинні бути унікальними, і при цьому треба пам'ятати, що асемблер не відрізняє прописні та маленькі літери. При максимальній довжині рядка програми 132 символи (більшість програмістів використовують з них лише 80 відповідно до довжини екрану) максимальна довжина позначки - 31 символ. Позначка (якщо існує), асемблерний код команди та операнд відокремлюються один від одного принаймні одним проміжком або символом табуляції. Коментарі можуть стояти в любому місці асемблерної програми та повинні починатися з символу ; (крапка з комою). Всі символи в рядку асемблерної програми, що стоять праворуч від крапки з комою, вважаються за коментарі. Коментарі можуть містити будь-які друковані символи української або латинської абетки, цифрові та спеціальні символи, включаючи проміжок. Коментар може займати весь рядок або стояти праворуч від асемблерної команди, наприклад:
; Програма виводу даних на друк
ADD AX, BX; Додати два числа, що містяться в регістрах АX та BX
Зрозуміло, що кількість коментарів ніяк не впливає на складність програми, оскільки вони не відносяться до машинних кодів.
Позначки в асемблері можуть містити такі символи:
1. Англійські літери |
A...Z, a...z; |
|
2. Цифри |
0...9 (не можуть бути першим символом позначки); |
|
3.Спеціальні символи |
Знак питання (?); амперсанд (@); підкреслення (_); долар ($); крапка (.) (тільки як перший символ позначки). |
Також заборонено використовувати як позначки зарезервовані асемблером слова, до яких відносяться коди команд, директиви, імена регістрів тощо. У таблиці 1 наведені приклади вірних та невірних позначок.
Таблиця 1 - Приклади позначок
Приклади вірних позначок |
Приклади невірних позначок |
|
CoU |
AX |
|
$10 |
1A |
|
This label is very long but correct It_is_a_label _y_z @2 .2 M2 |
This label is very long and not correct Це є позначка It is a label ADD Proc 2 2M !2 2. |
Размещено на http://www.allbest.ru/
Асемблерний код команди вказує транслятору, яку дію треба виконати у даній операції. Це може бути пересилання даних між регістрами процесора, з регістру до пам'яті або навпаки (команда MOV), команди обробки даних, наприклад збільшення чи зменшення на 1 (INC, DEC), додавання (АDD), віднімання (SUB), множення (MUL) або ділення (DIV), команди організації логіки програми, команди переходу на підпрограму та багато інших.
Якщо передбачена робота з даними і кодом команди вони не визначаються, то асемблерна команда завжди містить операнд, який може містити:
Чисельне значення даних;
Регістри та комірки пам'яті, над якими буде виконуватись дія, що обумовлюється кодом команди.
Приклади асемблерних команд:
CNT DB 10; Визначити байт пам'яті з назвою CNT та занести до нього число 10.
MOV AL,CNT; Занести до регістру АL число з комірки CNT.
ADD AL,12; Збільшити число, що міститься у регістрі AL на 12.
INC AL; Збільшити число у регістрі, що міститься у регістрі AL на 1.
MOV BL,AL; Переслати дані з регістру AL до регістру BL.
. RET; Команда повернення з підпрограми. Операндів не має.
Крім того, асемблер має велику кількість операторів, які дозволяють керувати процесом асемблювання та виведенням початкового тексту програми на друк. Ці оператори називаються псевдокомандами або директивами. Вони використовуються тільки при асемблюванні програми та не генерують асемблерного коду. Головні з них наведені нижче.
Директива PAGE. Ця директива розміщується на початку програми та вказує на кількість рядків, що друкуються на сторінці, та кількість символів в одному рядку. Формат директиви:
PAGE [кількість рядків], [кількість символів]
Наприклад, директива PAGE 50,100 встановлює режим виведення даних на друк 50 рядків на лист при сотні символів в одному рядку. Кількість рядків може бути встановлена у межах 10-255, кількість символів від 60 до 132.
Директиви SEGMENT та ENDS. Як вам уже відомо, будь-яка асемблерна програма має принаймні один сегмент - сегмент коду програми. В більшості програм окремими сегментами виділяються чисельні дані користувача та стек. Сегмент описується за допомогою директиви SEGMENT таким чином:
NSEG SEGMENT {параметри}
... ; Інструкції асемблера.
NSEG ENDS
Ім'я сегмента є обов'язковим, мусить бути унікальним та відповідати узгодженням про імена позначок, які наводилися вище. Директива ENDS з тією ж позначкою відповідає кінцю сегмента.
Директива ORG. Ця директива використовується для зміни вмісту лічильника адреси без допомоги асемблерних команд умовного чи безумовного переходу. Найчастіше вживається для встановлення адреси завантаження програми на її початку. Наприклад, директива ORG 100H встановлює лічильник адреси на зміщення 100H (шістнадцятирічне число 100) відносно початку сегмента коду, а директива ORG $+10H збільшує адресу, яка завантажена у лічильник команд, на 10H (шістнадцятирічне число 10).
Директиви PROC та ENDP, команди CALL та RET. Сегмент коду може крім кодів основної програми містити одну чи декілька процедур, які визначаються директивою PROC. В кінці процедури повинні стояти команда RET та директива ENDP. Директива ENDP ставиться для того, щоб транслятор асемблера розпізнав початок та кінець процедури та її обсяг. Виклик процедури здійснюється за допомогою команди CALL. Формат команди: CALL [ім'я процедури]
При виклику процедури числа, що знаходяться у всіх регістрах процесора, завантажуються до стека, а до лічильника команд завантажується адреса початку процедури. На кінці процедури перед директивою ENDP ставиться команда RET. Результатом її виконання є завантаження вмісту верхніх комірок стеку до регістрів процесора та перехід на точку переривання головної програми. Команда RET може ставитися і в середині процедури, якщо це передбачено логікою програми. Крім того, цією командою здійснюється вихід з асемблерної програми до командного режиму MS-DOS. Таким чином, асемблерна програма, яка містить процедуру, буде мати такий вигляд:
NSEG SEGMENT; Опис сегменту.
NPROC PROC; Опис процедури.
RET; Повернення до основної програми.
ENDP; Кінець процедури.
CALL NPROC;
RET; Повернення до MS-DOS.
ENDS;
Директива END. Ставиться останньою у програмі та завершує її. Якщо програма писалася як процедура, директива END містить ім'я процедури як параметр (END {[ім'я процедури]}). Якщо це com-програма і виконується в одному сегменті, параметр не використовується.
2. Виконання роботи
Текст програми приведений в таблиці 2.
комп'ютер процесор програмування асемблер
Таблиця 2 - Текст програми з коментарями
Початковий код асемблерної програми |
Машинні коди |
Коментарі |
|
org 100h |
- |
Директива, яка вказує асемблеру адресу початку програми в сегменті коду |
|
mov ax,20 |
B8 14 00 |
Занести в регістр ax 20 (14h). У пам'яті байти числа 20 розташовуються у зворотному порядку. Після виконання команди ax = 0014h. Інші регістри загального призначення залишаться без змін. |
|
mov bx,30 |
BB 1E 00 |
Занести в регістр bx 30 (1Eh). У пам'яті байти числа 30 розташовуються у зворотному порядку. Після виконання команди bx = 0014h. Інші регістри загального призначення залишаться без змін. |
|
add ax,bx |
03 C3 |
Підсумовування регістрів ax і bx. Сума записується в регістр ax. Після виконання команди ax=0032h. Після складання в регістрі прапорів буде встановлений в 1 прапор AF. Інші регістри загального призначення залишаться без змін. |
|
mov cx,ax |
8B C8 |
Перенесення значення регістра ax в регістр cx. Після виконання команди cx=0032h. Інші регістри загального призначення залишаться без змін. |
|
add ch,16 |
80 C5 10 |
Додавання до старшого байту регістру cx числа 16 (10h). Після виконання команди cx=1032h. Після складання в регістрі прапорів буде скинутий прапор AF. Інші регістри загального призначення залишаться без змін. |
|
ret |
C3 |
Закінчення програми. |
Висновок
В ході виконання лабораторної роботи познайомилися із структурою персонального комп'ютера і основами програмування мовою асемблера для мікропроцесора intel 8086.
Також встановили, що команди пересилання даних не змінюють регістр стану процесора. Арифметичні команди змінюють прапори, але в даній роботі використовуються значення змінювали тільки прапор додаткового перенесення AF.
Додаток
org 100h
mov ax,20
mov bx,30
add ax,bx
mov cx,ax
add ch,16
ret
Размещено на Allbest.ru
Подобные документы
Реалізація програми на мові асемблера для процесора i8086. Регістрова структура процесора. Використання сегментних регістрів для апаратної підтримки найпростішої моделі сегментованої пам'яті. Формування арифметичних прапорців. Система команд процесора.
контрольная работа [240,5 K], добавлен 27.02.2013Мова асемблер для кожного типу комп'ютера своя. Асемблер орієнтований саме на специфіку комп'ютера або на специфіку процесора. Мікропроцесори, що належать до різних сімейств, мають свої системи команд. Система команд МП ІA 32 - режими адресації.
лекция [36,2 K], добавлен 13.04.2008Аналіз роботи обчислювальних пристроїв, побудованих за RISC-архітектурою. Центральний процесор і внутрішня пам'ять мікроконтролерів AVR компанії Atmel. Принцип побудови AVR-контролера ATtiny2313: складові частини; програмування пам'ятi мовою Асемблер.
курсовая работа [1,1 M], добавлен 27.07.2015Розробка програми на мові програмування Асемблер для обчислення виразу. Розрахунок значень А, В, С у процедурах. Аналіз отриманих результатів за допомогою відлагоджувальника Turbo Debugger при різних заданих значеннях та перевірка їх правильності.
лабораторная работа [203,4 K], добавлен 09.01.2013Огляд низькорівневих команд. Застосування мнемонічних позначень та макровизначень (макросів). Різниця між мовою асемблера та мовою машинних кодів. Асемблери для DOS, Microsoft Windows та GNU/Linux. Принцип роботи контролера клавіатури і його інтерфейс.
курсовая работа [30,0 K], добавлен 19.11.2010Функциональная схема микропроцессора Intel 8086 (i8086). Формирование физического адреса памяти, выборка команд из памяти и запись их в очередь команд. Система команд процессора. Суть защищенного режима, переход из защищенного режима в реальный режим.
практическая работа [93,3 K], добавлен 24.03.2013Створення програми з нетривіальною логікою на мові Асемблер, реалізуючи запропонований алгоритм за допомогою команд розгалуження та циклу. Механізми передачі керування та зміна послідовності виконання команд. Типи адресації. Команди умовного переходу.
лабораторная работа [390,3 K], добавлен 27.02.2013Програмування під DOS мовою низького рівня Асемблер (ASM-86). Функції програми: виведення в довільне місце екрану тексту заданого стилю та кольору, змінення шрифту, розміру літер та напрямку їх виводу. Алгоритм програми, системні вимоги до комп'ютера.
курсовая работа [47,4 K], добавлен 03.06.2009Ведення протоколу роботи комп’ютера. Розробка програми для створення списку розширень файлів і занесення часу і дати доступу до них на мові програмування Асемблер. Виклик переривання 21h код-функції та занесення до регістрів. Алгоритм та лістинг програми.
курсовая работа [14,1 K], добавлен 08.08.2009Функціонування мікрокомп’ютерів з шинною організацією. Системні локальні шини. Організація та структура пам’яті. Базова система введення-виведення. Режими роботи процесора I80286. Програмна модель процесора. Регістри процесора та умови програмування.
курсовая работа [326,1 K], добавлен 06.06.2013