Дисплейные прерывания и функции
INТ 10h AX=00h- видеорежим
01h– установление размера и формы курсора
02h - установить курсора
03h – получение положения курсора
06h/07h – прокрутка вверх-вниз
0Ah-Записать символ
Прерывания и функции обслуживания клавиатуры
Int 16h – обслуживание клавиатур
С помощью функций обслуживания клавиатуры можно выполнить ввод кода нажатой клавиши или ожидание момента, когда пользователь нажмет любую заданную клавишу либо комбинацию клавиш.
Прерывания и функции обслуживания жестких дисков
Int 13h – обслуживание жесткого диска
AX=00h- сброс дисковой системы
01h– определение состояния дисковой системы
02h/03h - чтение/запись секторов диска
04h - Проверка секторов
Прерывания int 21h, его функции.
Основные функции DOS вызывает с помощью прерывания int 21h.
Группы функций прерывания int 21h:
1)Получение системной информации
30h – версия DOS
4Dh - узнать код завершения процесса;
2) Символьный ввод-вывод
3)Управление программами
4Ch – завершение программы
4) Управление памятью
48h – получение памяти для программы
49h – освобождение памяти для программы
44h – подключение драйверов
59h – обработка ошибок
Символьный ввод/вывод, функции.
Int 21h AH=01h– ввод с клавиатуры с эхо-выводом
06h - ввод без эхо-вывода
05h – вывод на принтер
02h – прокрутка вверх-вниз
09h – отобразить страницу которая заканчивается «$»
Прерывание и функции работы с мышью
INT 33h, AX = 0— Инициализация мыши
AX = 1— Показать курсор
AX = 2— Спрятать курсор
AX = 3 — Определить состояние мыши
ВХ = :
0 — нажата левая кнопка
1 — нажата правая кнопка
2 — нажата средняя кнопка
СХ = Х-координата
DX = Y-координата
AX = 0Ch— Установить обработчик событий
ES:DX = адрес обработчика СХ = условие вызова
0 — любое перемещение мыши
1 — нажатие левой кнопки
2 — отпускание левой кнопки
3 — нажатие правой кнопки
4 — отпускание правой кнопки
5 — нажатие средней кнопки
6 — отпускание средней кнопки
СХ = 0000h — отменить обработчик
Прерывание и функции системного таймера
Int 21h AX = 2Ah - Определить дату
СХ = год
DH = месяц
DL = день
AL = день недели (0 — воскресенье, 1 — понедельник...)
AX = 2Ch
СН = час
CL = минута
DH = секунда
DL = сотая доля секунды
2Bh— Установить дату
2Dh— Установить время
Команды передачи управления
Команда безусловного перехода
JMP <адрес перехода>
В качестве адреса команды перехода используются метки трех видов:
- а) < имя > : nор ( nор - команда "нет операции");
- б)< имя> label near (для внутрисегментных переходов);
- в) <имя> label far (для внесегментных переходов).
Команды условного перехода
· <мнемоническая команда> <адрес перехода>
Мнемоника команд условного перехода:
Команды безусловного перехода: синтаксис и область использования
Команды машинной программы выполняются в том порядке, как они записаны в памяти. Но время от времени этот естественный порядок выполнения команд приходится нарушать с тем, чтобы следующей выполнялась не очередная команда программы, а какая-то иная. Такую возможность обеспечивают команды перехода.
Если переход делается только тогда, когда выполнено некоторое условие, то такой переход называется условным, а если он делается независимо от каких-либо условий, то это безусловный переход.
Формат команды: JMP имя
Имя (метка) может иметь атрибут NEAR (близкая, т.е. в пределах одного и того же сегмента кода) или FAR (дальняя, т.е. такая, на которую можно переходить из других сегментов кода),short (короткий, Исп-ся, если адрес перехода находится в пределах со значением -128 to +127 от к-ды).
35. Команды условного перехода: мнемоника и таблица условных переходов, операнд команд
Команды перехода начинаются с j и работают в связке с cmp.
Пример:
Cmp eax, 42h
Jz metka2
Если регистр eax равен 42, то управление передастся первой команде после метки metka2.
код | Значение(переход,если...) | Условие |
JA | (X > Y) | CF=0 & ZF=0 |
JAE | (X >= Y) | CF=0 |
JB | (X<Y) | CF=1 |
JBE | (X <= Y) | CF=1 or ZF=1 |
JC | Если оба сущ. | CF=1 |
JCXZ | Jump if CX=0 | регистр CX=0 |
JE (то же, что и JZ) | (X = Y) | ZF=1 |
JG | (X > Y) с учетом знака | ZF=0 SF=OF |
JL | (X <Y) с учетом знака | SF != OF |
JMP | прыгает всегда | - |
JNA | X не больше Y (для чисел без знака) | CF=1 or ZF=1 |
JNAE | X не больше или равно Y (для чисел без знака) | CF=1 |
JNC | Если нету | CF=0 |
JP | Если четное | PF=1 |
JPO | Если нечетное | PF=0 |
Все команды перехода имеют один операнд: смещение для перехода
Организация циклов в ассемблере
Циклом называется любая многократно исполняемая последовательность инструкций
Этапы циклов:
1)Выборка команды
2)Формирование адреса следующей команды
3)Декодирование
4)Вычисление адресов операндов
5)Выборка операндов из ОП
6)Исполнение операции
7)Запись результатов в память
Передача параметров и процедур
Механизмы передачи параметров:
- по значению;
- по ссылке;
- по возвращаемому значению;
- по результату;
- по имени;
- отложенным вычислением.
Параметры можно передавать в одном из пяти мест:
- в регистрах;
- в глобальных переменных;
- в стеке;
- в потоке кода;
- в блоке параметров.
Процедура - именованная, правильным образом оформленная группа команд, которая, будучи однократно описана, при необходимости может быть вызвана по имени любое количество раз из различных мест программы.