Мова програмування Assembler
Методическое пособие - Компьютеры, программирование
Другие методички по предмету Компьютеры, программирование
х нульових бітів.
- Регістр CS.
Регістр сегмента коду містить початковий адреса сегмента коду. Ця адреса плюс величина зсуву в командному покажчику (IP) визначає адреса команди, яка повинна бути обрана для виконання. Для звичайних програм немає необхідності робити посилання на регістр CS.
- Регістр 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>