- •Регістри загального призначення
- •Лічильник команд, регістри прапорців
- •Особливості звернення до пам’яті:
- •Переривання
- •Загальний алгоритм виконання машинної команди
- •Введення/виведення даних
- •Лекція №4
- •Лекція №5
- •Лекція №6
- •Команди обробки рядків даних
- •Вилучення елементу з таблиці
- •Вставка елемента у таблицю
- •Лінійний пошук
- •Команди управління процесором
Лекція №5
INT – команда програмного переривання.
INT <on>
<on> - без знакове значення розміром в 1 Б, визначає значення N вектора переривань. Ті ж самі дії, що в разі зовнішнього переривання: здійснюється перехід на процедуру обробки переривання, остання команда, що виконується – REТ, що повертає CS, IP.
Окремо від цих команд стоїть команда INT3, що має довжину 1Б, використовується програмами – налагоджувачами (Turbo Debugger).
Механізм налагоджувача.
Здійснюється процедура обробки переривання, яка виводить на дисплей вміст регістрів, прапорців і певної ділянки пам’яті, дешифрує код команди, який ми зберегли в певній комірці пам’яті, визначає довжину, відновлює код поточної команди, і завдяки визначеній довжині зберігає код наступної, а на її місце записує INT3.
Процедури або підпрограми оформлюються за допомогою спеціальних директив початку та кінця процедури, що визначає тип цієї процедури.
<ім’я> PROC [<тип>]; NEAR | FAR
PF за замовченням – NEAR
кінець процедури - <ім’я> ENDP
RET – код повернення.
Тип процедури визначає тип повернення NEAR або FAR.
В умовах високого рівня існує 2 типа підпрограм процедури (PROCEDURE) та функцій (FUNCTION).
Підпрограма-функція повертає в основну програму тільки одне значення, яке за узгодженням в мовах програм передається через регістр-акумулятор (безпосереднє значення або його адреса). Тому функція використовується, як елемент виразу, які в мовах програм використовують значення цієї функції через регістр-акумулятор АХ.
Команди пересилок даних:
MOV <DEST>, <SOURCE>
(операнд (операнд-
приймальник) джерело)
Операнд – джерело пересувається в операнд приймальника.
Регістр – регістр SR – R
Регістр – пам’ять P – SR
Пам’ять – регістр SR – П
Регістр – безпосередній операнд П – SR
Пам’ять – безпосередній операнд
Сегментний регістр – безпосередній операнд забороняється
MOV AX, DATA
MOV DS, AX
Команда MOV не змінює ознак результату.
Команда обміну даних
XCHG <On1>, <On2>
Формати
Регістр - пам’ять
Регістр – регістр
Пам’ять – регістр
При виконанні цієї команди вміст операндів, що вказані обмінюються місцями
Команди введення/виведення:
IN – команда введення.
AL, <N порту> не >255
В залежності від типу контролера використовуються дані розміром в байт або слово.
При використанні цієї команди дані із регістра порта контролера пересувається а акумулятор.
Команди виведення (OUT)
OUT <N порту>, AX(AL)
При виконанні вміст регістра акумулятора пересилається у відповідний порт.
Ці команди не змінюють ознак результату, використовують для обслуговування повільних зовнішніх пристроїв.
У більшості операторів Assembler операнди мають бути сумісними за типом, вони повинні мати тип байт або слово, але є виключення – IN,OUT.
Команди завантаження адрес:
LEA –завантаження дійсної адреси.
Команда LEA має постбайтну структуру.
За допомогою команди LEA можна скласти 3 операнда : LEA AX, 15 [BX,SI]
LDS – завантажує повну адресу операнда в один із регістрів загального призначення (внутрішня сегментна адреса) та в один із сегментів регістрів.
Приклад:
LEA SI, OP1
MOV SI, OFFSET OP1
LDS SI, STR1
STR DD_OP1
OP1 DW
Команда перекодування XLAT. При її виконанні код, що розміщений в регістрі AL перекодується згідно у таблицю перекодування.
Команди роботи із стеком:
PUSH <ОП 1> ОП записується в стек, відновлює зі стеку дані у вказаний
POP <ОП 1> ОП 1 (регістр або пам’ять)
PUSH F – зберігає регістри прапорців в стеку;
POP F – відновлює регістр прапорців.
Приклад: 2 ADD AL, 30H
2 CMP AL,19H
2 JLE FIN
2 ADD AL, 41H – 3AH
