Основи програмування на мові асемблер та знайомство з програмним забезпеченням для виконання лабораторних робіт 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Основи програмування на мові асемблер та знайомство з програмним забезпеченням для виконання лабораторних робіт



 

Мета роботи: Знайомство з структурою персонального комп’ютера та основами програмування на мові асемблера. Студенту треба навчитися працювати з програмою-транслятором Turbo-Assembler (TASM) та з засобами для відлагодження асемблерних програм AFD та TD.

Необхідні знання та практичні навички: Знання структури мікропроцесорів сімейства Intel 80х86 [2,4,5,12] та основ програмування на мові асемблер [1,4]. Вміння працювати з інтерфейсом типу Turbo-Vision [7-9]. Студентам обов’язково треба відновити свої знання з таких розділів:

· “Поняття про системи числення.”

· “Арифметичні дії над числами при їх представлені у двійковій, вісімковій та шістнадцятирічній системах.”

· “Переведення чисел з однієї системи числення до іншої.”

 

Теоретичні відомості

Особливості архітектури мікропроцесора типу Intel 80х86

Найважливішою особливістю комп'ютерних систем на основі мікропроцесорів (МП) типу Intel 8086 є сегментна організація пам'яті. Сегментом називається область пам'яті, що починається з адреси, кратної 16, і містить дані однієї структури. Загалом це можуть бути:

· інструкція для МП, або коди команд;

· дані користувача;

· адреси повернення з підпрограм.

Таким чином, відрізняють три головних сегмента програми, яким відповідають сегментні регістри процесора типу INTEL 8086:

· CS (code segment, тобто сегмент інструкцій програми);

· DS (data segment, тобто сегмент даних, які визначені користувачем);

· SS (stack segment, тобто сегмент стеку).

Як вам відомо [1], стеком називається область пам'яті ЕОМ, яка відрізняється організацією доступу до даних, які поступають до стека за принципом «останній ввійшов – перший вийшов». Більш досконало про стекову організацію пам'яті та про програмування стека на апаратному рівні ви дізнаєтесь з теоретичних відомостей до лабораторної роботи №2.

У мікропроцесорі Intel 8086 існує також розширений сегмент ES (extend segment), який ефективно використовується при роботі з рядковими даними. Більш досконало про можливості використання цього сегменту при програмуванні ви дізнаєтесь з відповідного розділу теоретичних відомостей до лабораторної роботи №4.

В програмі, яку обробляє ЕОМ, всі адреси прив'язанні до початку сегмента. Таким чином, адреса осередку пам'яті, до якого звертається процесор, немов би складається з двох частин: старші розряди – адреса сегменту, молодші – адреса зміщення.

Головні регістри МП Intel 8086 та їх призначення

Сегментні регістри CS, DS, SS, ES.

Регістри-вказівники (РВ)

IP (interrupt point) – адреса, за якою на даний час припинено виконання програми, або лічильник команд. Таким чином, повна адреса, за якою розташований код команди, що виконується, може бути записана таким чином: CS:IP.

DI (data interrupt) – відносна адреса, за якою розташована змінна користувача, що використовується програмою на даний час. Таким чином, повна адреса, за якою розташовані дані користувача, може бути записана таким чином: DS:DI. Слід відзначити, що регістр DI використовується також в парі з сегментним регістром ES.

SP (stack pointer)– вказівник стека. Вказує на відносну адресу останньої змінної, що була завантажена до стека. При виконанні команди «вивантажити змінну зі стека» буде вивантажена саме ця змінна.

SI та DI – індексні регістри. Обидва цих регістра можуть бути використані для розширеної адресації та для реалізації арифметичних операцій складання та віднімання. Але головне їх призначення – робота з рядковими даними. При цьому індексний регістр DI пов'язаний з сегментним регістром DS, а індексний регістр SI - з сегментним регістром ES. Більш досконало про операції обробки рядкових даних у мові асемблера можна прочитати в описі лабораторної роботи №4.

Регістри загального призначення (РЗП) та їхні функції

Акумулятор (АХ)

Акумулятор є головним з регістрів загального призначення. Навіть ті команди процесора, які можуть бути виконані за допомогою інших регістрів, при використанні акумулятора виконуються значно швидше. Цей регістр безпосередньо зв'язаний з арифметико-логічним пристроєм (АЛП) мікропроцесора, який реалізує виконання команд програми на апаратному рівні. Як і всі регістри процесора Intel 8086, акумулятор має 16 розрядів і звертатись до нього на програмному рівні можна через абревіатуру АХ. Можна також заносити числа лише до восьми молодших розрядів акумулятора, звертаючись до них через абревіатуру AL, або до восьми старших, звертаючись до них через абревіатуру АН. Таке ж саме правило діє при звертанні до інших регістрів загального призначення, які будуть розглядатися далі.

Головні функції, які виконуються за допомогою акумулятора у мікропроцесорній системі:

· всі арифметичні операції;

· всі логічні операції;

· всі операції введення/виведення даних;

· операції над рядками.

Базовий регістр (BX)

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

Регістр-лічильник (СХ)

Регістр загального призначення СХ – це регістр-лічильник, який є необхідним для керування числом повторень у циклах та при операціях зсування двійкових чисел. Також може бути використаний для арифметичних та логічних операцій та для проведення обчислень.

Регістр даних (DX)

Регістр загального призначення DX – це регістр даних, який застосовується для їх введення та виведення, для обчислень з подвійною точністю, або для операцій над великими числами при недостатній розрядності регістру АХ. Цей регістр також використовується як додатковий при множенні та діленні цілих чисел.

Регістр прапорів, або регістр стану (РС) Дев'ять з 16 біт регістра стану процесора Intel 8086 є активними та визначають стан процесора після виконання останньої команди. Більшість арифметичних та логічних команд, а також команди зрівняння даних змінюють значення прапорів регістра стану. Прапори регістра стану та їх призначення наведені у таблиці 1, а їх побітове розташування у комірках регістра – у таблиці 2:

Таблиця 1. Призначення прапорів регістра стану

Назва прапора Умовне  
п/п Українською мовою Англійською мовою Позна-чення Що визначає
      Прапор пере-повнення Overflow Flag ОF Наявність одиниці у цьому біті регістра стану вказує на переповнення старшого біта числа при виконанні арифметичних команд.
      Вказівник напрямку при виконанні операцій над рядками   Direction Flag DF Визначає направлення пересилання або порівняння рядкових даних. При цьому направлення ліворуч відповідає збільшенню, а праворуч – зменшенню адрес комірок пам'яті. Значення 1 для прапора DF відповідає направленню праворуч.
    Прапор переривань   Interrupt Flag IF Наявність одиниці у цьому біті регістра стану вказує на можливість виконання переривань від зовнішніх пристроїв, які маскуються.
        Прапор знаку Sign Flag SF Визначається знаком останньої арифметичної операції, яка була зроблена процесором (1 – від'ємне число, 0 – додатне число).
        Прапор нуля Zero Flag ZF Визначається результатом останньої арифметичної операції, яка була зроблена процесором. Нульовий результат обумовлює появу одиниці у цьому біті.
        Режим трасування (покрокового виконання програми) Trace Flag TF Наявність одиниці у цьому біті регістра стану забезпечує покрокове виконання завантаженої програми, що дозволяє програмісту аналізувати стан всіх регістрів процесора та комірок пам'яті після виконанні кожної асемблерної команди. Цей режим є дуже важливим при відлагодженні програм, але безпосередньо у програмах загального призначення він практично не використається. Єдиним виключенням є програми-компілятори.
    Зовнішнє перенесення   Auxiliary Flag AF Визначається результатом останньої арифметичної операції, яка була зроблена процесором. Одиниця у цьому біті свідчить про перенесення з 3-го до 4-го біту числа при виконання операцій над 8-бітовими числами. Використовується при виконанні особливих арифметичних перевірок.
    Прапор перенесення   Carry Flag CF Визначається результатом останньої арифметичної операції, яка була зроблена процесором. Одиниця у цьому біті свідчить про перенесення зі старшого восьмого біта при виконанні арифметичних операцій. При виконанні операцій циклічного зсуву до прапора перенесення переходить останній біт числа.
      Контроль парності числа     Parity Flag PF Вказує на парність перших 8 бітів отриманого результату (1-результат є парним, 0 – не парним). Парність у програмуванні та теорії інформації - це кількість одиниць у двійковому числі. Не плутайте цей параметр з визначенням парності у арифметиці! Не плутайте також прапор парності процесора з бітом парності, який використовується для контролю передавання чисельних даних у комп’ютерних системах та мережах.

Завдання для перевірки №1: Порівняйте поняття парності у звичайній та двійковій арифметиці. Наприклад, чи є парним число 3 з точки зору теорії інформації? Наведіть інші приклади парних та непарних чисел.

Таблиця 2. Розташування бітів регістра стану мікропроцесора Intel 8086

Номер біта                                
Прапор * * * * OF DF IF TF SF ZF * AF * PF * CF  

 

* - біт у процесорі Intel 8086 не задіяний.



Поделиться:


Последнее изменение этой страницы: 2016-04-26; просмотров: 327; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 18.224.149.242 (0.008 с.)