на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Мова програмування Assembler
p align="left"> 3. Граматичні конструкції, які відповідають цим поняттям

РЕГІСТРИ

Процесори 8086/8088 мають 14 регістрів, використовуваних для yправления програмою, що виконується, для адресації пам'яті і для забезпечення арифметичних обчислень. Кожен регістр має довжину в одне слово (16 біт) і адресується по імені. Біти регістра прийняті нумерувати ліворуч праворуч:

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

Процесори 80286 і 80386 мають ряд додаткових регістрів, деякі з них 16-бітові. Ці регістри тут не розглядаються. Сегментні регістри CS, DS, SS і ES.

Кожен сегментний регістр забезпечує адресацію 64ДО пам'яті, що називається поточним сегментом. Як показано раніше, cегмент вирівняний на границю параграфа і його адреса в сегментному pегістрі припускає наявність праворуч чотирьох нульових бітів.

1. Регістр CS.

Регістр сегмента коду містить початковий адреса сегмента коду. Ця адреса плюс величина зсуву в командному покажчику (IP) визначає адреса команди, яка повинна бути обрана для виконання. Для звичайних програм немає необхідності робити посилання на регістр CS.

2. Регістр DS.

Регістр сегмента даних містить початковий адрес сегмента даних. Ця адреса плюс величина зсуву, визначена в команді, вказують на конкретний осередок у сегменті даних.

3. Регістр SS.

Регістр сегмента стека містить початковий адрес в сегменті стека.

4. Регістр ES. Деякі операції над рядками використовують додатковий сегментний регістр для керування адреси цієї пам'яті. У даному контексті регістр ES зв'язаний з індексним регістром DI. Якщо необхідно використовувати регістр ES, асемблерна програма повинна його інніціалізувати.

Регістри загального призначення: AX, BX, CX і DX

При програмуванні на асемблере регістри загального призначення є "робочими конячками". Особливість цих регістрів полягає в тому, що можлива адресація їх як одного цілого чи слова як oднобайтової частини. Лівий байт є старшою частиною (high), a правий - молодшою частиною (low). Наприклад, двобайтовий регістр CX складається з двох однобайтових: CH і CL, і посилання на регістр можливі по кожному з цих трьох імен. Наступні три асемблерні команди засилають нулі в регістри CX, CH і CL, відповідно:

MOV CX,00

MOV CH,00

MOV CL,00

1. Регістр AX. Регістр AX є основним суматором і застосовується для всіх операцій уведення-висновку, деяких операцій над рядками і деяких арифметичних операцій. Наприклад, команди множення, розподілу і зрушення припускають використання регістра AX. Деякі команди генерують більш ефективний код, якщо вони мають посилання на регістр AX.

AX: ¦ AH ¦ AL ¦

2. Регістр BX. Регістр BX є базовим регістром. Це єдиний регістр загального призначення, що може використовуватися в якості "індексу" для розширеної адресаціі. Інше загальне застосування його - обчислення.

BX: ¦ BH ¦ BL ¦

3. Регістр CX. Регістр CX є лічильником. Він необхідний для керування числом повторень циклів і для операцій зрушення уліво або вправо. Регістр CX використовується також для обчислень.

CX: ¦ CH ¦ CL ¦

4. Регістр DX. Регістр DX є регістром даних. Він застосовується для деяких операцій уведення/висновку і тих операцій множення і розподілу над великими числами, які використовують реєстрову пару DX і AX.

DX: ¦ DH ¦ DL ¦

Будь-які регістри загального призначення можуть використовуватися для додаваня і вирахування як 8-ми, так і 16-ти бітових значень.

Реєстрові покажчики: SP і BP

Реєстрові покажчики SP і BP забезпечують системі доступ до даних у сегменті стека. Рідше вони використовуються для операцій додавання і вирахування.

1. Регістр SP. Покажчик стека забезпечує використання стека в пам'яті, дозволяє тимчасово зберігати адреса і інколи дані. Цей регістр зв'язаний з регістром SS для адреси цього стека.

2. Регістр BP. Покажчик бази полегшує доступ до параметрів: даним і адресам переданим через стек.

Індексні регістри: SI і DI

Обоє індексні регістри можливі для розширеної адресації і для використа- ння в операціях додавання і вирахування.

1. Регістр SI. Цей регістр є індексом джерела і застосовується для деяких операцій над рядками. У даному контексті регістр SI зв'язаний з регістром DS.

2. Регістр DI. Цей регістр є індексом призначення і застосовується також для строкових операцій. У даному контексті регістр DI зв'язаний з регістром ES.

Регістр командного покажчика: IP

Регістр IP містить зсув на команду, що повинна бути виконана. Звичайно цей регістр у програмі не використовується, але він може змінювати своє значення при використанні відлагоджувача DOS DEBUG для тестування програми.

Флаговий регістр

Дев'ять з 16 бітів флагового регістра є активними і визначають поточний стан машини і результати виконання. Багато арифметичних команд і команди порівняння змінюють стан прапорів. Призначення флагових бітів:

Прапор Призначення

O (Переповнення) Вказує на переповнення старшого біта при арифметичних командах.

D (Напрямок) Позначає ліве чи праве направлення чи пересилання порівняння строкових даних (даних у пам'яті перевищуючих довжину одного слова).

I (Переривання) - Вказує на можливість зовнішніх переривань.

T (Покроковий режим) - Забезпечує можливість роботи процесора в покроковому режимі.

Наприклад, програма DOS DEBUG впливає на даний прапор так, що ймовірне покрокове виконання кожної команди для перевірки зміни вмісту регістрів і пам'яті.

S (Знак) Містить результуючий знак після арифметичних операцій (0 - плюс, 1 - мінус).

Z (Нуль) Показує результат арифметичних операцій і операцій порівняння (0 - ненульовий, 1 - нульовий результат).

A (Зовнішній перенос) Містить перенос з 3-го біта для 8-бітних даних, використовується для спеціальних арифметичних операцій.

P (Контроль парності) Показує парність молодших 8-бітних даних (1 - парне і 0 - непарне число).

C (Перенос) Містить перенос зі старшого біта, після арифметичних операцій, а також останній біт при зрушеннях або циклічних зрушеннях.

Під час програмування на асемблері, частіше всього використовуються прапори O, S, Z, і C для арифметичних операцій і операцій порівняння, а прапор D для позначення напрямку в операціях над рядками. У наступних розділах міститься більш докладна інформація про флаговий pегістр.

4. Тип даних в асемблері. Поняття "байт", "півбайт", "слово", та інші

ДИРЕКТИВИ ВИЗНАЧЕННЯ ДАНИХ

Асемблер забезпечує два способи визначення даних : по-перше, через указівку довжини даних і, по-друге, по їх змісту. Розглянемо основний формат визначення даних:

[ім'я] Dn вираження - Ім'я елемента даних не обов'язково (це вказується квадратними дужками), але якщо в програмі існують посилання на деякий елемент, то це робиться за допомогою імені. Правила написання імен приведені в розділі "Формат кодування" у розділі 3.

- Для визначення елементів даних існують наступні директиви: DB (байт), DW (слово), DD (подвійне слово), DQ (учетверенное слово) і DT (десять байт).

- Вираження може містити константу, наприклад: FLD1 DB 25 чи знак питання для невизначеного значення, наприклад: FLDB DB ?

Вираження може містити кілька констант, розділених комами й обмеженими тільки довжиною рядка: FLD3 DB 11, 12, 13, 14, 15, 16, ...

Асемблер визначає ці константи у виді послідовності суміжних байт. Посилання по імені FLD3 вказує на першу константу, 11, по FLD3+1 - на другу, 12. (FLD3 можна представити як FLD3+0). Наприклад команда MOV AL,FLD3+3 завантажує в регістр AL значення 14 (тичина. 0E). Вираження допускає також повторення константи в наступному форматі:

[ім'я] Dn чисел-повторень DUP (вираження) ...

Наступні три приклади ілюструють повторення:

DW 10 DUP(?); Десять невизначених слів

DB 5 DUP(14); П'ять байт, що містять тичину.14

DB 3 DUP(4 DUP(8)); Дванадцять вісімок.

У третьому прикладі спочатку генерується чотири копії десяткової 8 (8888), і потім це значення повторюється три рази, даючи в pезультате дванадцять восмерок. Вираження може містити символьний чи рядок числову константу.

Символьні рядки

Символьний рядок використовуються для опису даних, таких як, наприклад, імена людей або заголовки сторінок. Зміст рядка відмічається одиночними лапками , наприклад, 'PC' або подвійними лапками - "PC". Асемблер переводить символьні рядки в об'єктний код у звичайному форматі ASCII. Символьний рядок визначається тільки директивою DB, в якій вказується більше двох символів у нормальній послідовності ліворуч праворуч. Отже, директива DB представляє єдиний можливий формат для визначення символьних даних. На рис. 5.1 приведений ряд прикладів.

Числові константи

Числові константи використовуються для арифметичних величин і для aдресів пам'яті. Для опису константи лапки не ставляться. Асемблер перетворить усі числові константи в шістнадцяткові і записує байти в об'єктному коді в зворотній послідовності - праворуч ліворуч. Нижче показані різні числові формати.

Десятковий формат.

Десятковий формат допускає десяткові цифри від 0 до 9 і позначається останньою буквою D, що можна не вказувати, наприклад, 125 чи 125D. Незважаючи на те, що асемблер дозволяє кодування в десятковому форматі, він перетворить ці значення в шіст. об'єктний код. Наприклад, десяткове число 125 перетвориться в тичину. 7D. Шістнадцятковий формат.

Шістнадцятковий формат допускає шістнадцяткові цифри від 0 до F і позначається останньою буквою H. Оскільки асемблер думає, що з букви починаються ідентифікатори, то першою цифрою шіст. константи повинна бути цифра від 0 до 9. Наприклад, 2EH або 0FFFH, вказують на те, що асемблер перетворить відповідно в 2E і FF0F (байти в другому прикладі записуються в об'єктний код у зворотній послідовності).

Двійковий формат.

Двійковий формат допускає двійкові цифри 0 і 1 і позначається останньою буквою B. Двійковий формат звичайно використовується для більш чіткого представлення бітових значень у логічних командах AND, OR, XOR і TEST. Десяткове 12, тичина. C і двійкове 1100B усі генерують один і той же код: тичина. 0C або двійкове 0000 1100 в залежності від того, як ви розглядаєте вміст байта.

Вісімковий формат.

Вісімковий формат допускає вісімкові цифри від 0 до 7 і позначається останньою буквою Q чи O, наприклад, 253Q. На сьогодні вісімковий формат використовується дуже рідко.

Десятковий формат із крапкою, що плаває.

Цей формат підтримується тільки асемблером МASM. При записі символьних і числових констант потрібно пам'ятати, що, наприклад, символьна константа, визначена як DB '12', представляє символи ASCII і генерує тичина. 3132, а числова константа, визначена як DB 12, вставляє двійкове число і генерує тичина. 0C. Рис. 5.1 ілюструє директиви для визначення різних символьних рядків і числових констант. Сегмент даних був асемблюваний для того, щоб показати згенерований об'єктний код (ліворуч).

ДИРЕКТИВА ВИЗНАЧЕННЯ БАЙТА (DB)

З різних директив, що визначають елементи даних, найбільш корисної є DB (визначити байт). Символьне вираження в диpективе DB може містити рядок символів будь-якої довжини, аж до кінця рядка (див. FLD2DB і FLD7DB на рис. 5.1). Зверніть увагу, що константа FLD2DB містить символьний рядок 'Personal Computer'. Об'єктний код показує символи коду ASCII для кожного байта. Тичина. 20 представляє символ пробілу. Числове вираження в директиві DB може містити одну чи більше однобайтних констант. Один байт виражається двома цифpами. Найбільше позитивне шіст. число в одному байті це 7F, усі "великі" числа від 80 до FF представляють негативні значення. У десятковому численні ці межі виражаються числами +127 і -128. У прикладі на рис. 5.1 числовими константами є FLD3DB, FLD4DB, FLD5DB і FLD8DB. Поле FLD6DB представляє суміш з числових і строкових констант, які використовуються для побудови таблиці.

ДИРЕКТИВА ВИЗНАЧЕННЯ СЛОВА (DW)

Директива DW визначає елементи, що мають довжину в одне слово (два байти). Символьне вираження в DW обмежено двома символами, що асемблер представляє в об'єктному коді так, що, наприклад, 'PC' стає 'CP'. Для визначення символьних рядків директива DW має обмежене застосування. Числове вираження в DW може містити одне або більше двобайтних констант. Два байти представляються чотирьма тичина. цифрами. Найбільше позитивне шіст. число в двох байтах це 7FFF; усі "великі" числа від 8000 до FFFF представляють негативні значення. У десятковому численні ці межі виражаються числами +32767 і -32768.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.