![](/user_photo/2706_HbeT2.jpg)
- •5. Преобразование двоичных чисел в десятичные
- •Преобразование десятичных чисел в двоичные
- •1H ;Перенос от предыдущей операции.
- •10. Общая структура программы на языке Ассемблер. Сегмент кода. Сегмент данных.
- •11. Подготовка, компиляция, компоновка ассемблерных программ
- •12. Отладка ассемблерных программ. Выполнение ассемблерных программ.
- •13. Формат директив и машинных команд. Директивы инициализации данных. Директивы описания данных на языке Ассемблера.
- •14. Простейшие директивы сегментации. Модели памяти. Сегменты данных.
- •15. Стандартные директивы сегментации. Команды пересылки данных.
- •16. Организация стека. Команды работы со стеком.
- •17. Команды двоичной арифметики (сложение, вычитание). Влияние на регистр флагов
- •18. Команды двоичной арифметики (умножение, деление). Влияние на регистр флагов.
- •19. Логические операции
- •23. Команды передачи управления. Команды условной передачи управления для операндов без знака. Дальность адресации.
- •24. Команды передачи управления. Команды условного перехода и флаги.
- •25.Организация цикла
- •29.Обработка массивов
- •30.Вызов подпрограмм
- •32. Повторяющиеся блоки и макросы
- •35.Обработка прерываний в реальном режиме.
- •36.Ввод информации с клавиатуры
- •1. Средства dos
- •2. Средства bios
- •37. Использование функций Int 21h (01h, 06h, 07h) для ввода информации.
- •Использование функций Int 21h (08h, 0Ah, 0Bh) для ввода информации.
- •Использование функций Int 21h (0Ch, 3Fh) для ввода информации.
- •Использование функций Int 16h bios для ввода информации
- •Использование функций Int 21h (02h, 06h, 09h) для вывода информации на экран.
- •Использование функций Int 21h для ввода, вывода информации в файл.
- •Использование функций Int 10h bios (00h,4Fh,02h).
- •Использование функций Int 10h bios (03h,08h,09h).
- •Использование функций Int 10h bios (0Ah,0Eh,13h).
- •Вывод графической информации на экран. Видеорежимы.
- •47. Ассемблер и языки высокого уровня. Вызов процедур.
- •48. Создание встраиваемого ассемблерного кода. Ассемблер, встроенный в программу на языке Pascal.
- •49. Создание встраиваемого ассемблерного кода. Ассемблер, встроенный в программу на языке с.
- •50. Охарактеризуйте системные средства управления памятью. Опишите структуру и образ памяти программ .Exe и .Com.
- •51. Трансляторы и интерпретаторы - общая схема работы.
- •Формат командных операторов
- •Формат директив ассемблера и операторов распределения данных
- •Имя Директива Операнды ;Комментарий
- •Элементы операторов
- •Регистры
- •Переменные
- •Числовые константы
- •Символьные константы
- •Сегменты и процедуры
- •Segment (начало сегмента) и ends (конец сегмента).
- •Система команд микропроцессора 8086
- •Команды передачи данных
- •Общие команды передачи данных
- •Команда mov
- •Команда обмена xchg
- •Команда xlat
- •Команды lea, lds и les
- •Команды lahf и sahf
- •Стековые команды
- •Команды ввода-вывода
- •In ac,port out port,ac (прямая укороченная адресация)
- •In ac,dx out dx,ac (косвенная адресация) команды арифметических операций
- •Команды сложения Команда add
- •Команда imul
- •Команды деления
- •Команда div
- •Команда idiv
- •Команды преобразования
- •Команды десятичной арифметики
- •Команды для формата bcd
- •Команды для формата ascii
- •Команды логических операций и команды сдвигов команды логических операций
- •Команды сдвигов
- •Команды передачи управления
- •Команды безусловных переходов
- •Команды условных переходов
- •Команды вызова подпрограмм
- •Команды возврата из подпрограмм
- •Команды управления циклами
- •Команды прерываний
- •Int type - вызов прерывания с номером type (от 0 до 255),
- •Цепочечные команды
- •Префикс повторения
- •Команда movs
- •Команда cmps
- •Команда scas
- •Команда lods
- •Команда stos
35.Обработка прерываний в реальном режиме.
В реальном режиме имеются программные и аппаратные прерывания. Программные прерывания инициируются командой INT, аппаратные - внешними событиями, асинхронными по отношению к выполняемой программе. Обычно аппаратные прерывания инициируются аппаратурой ввода/вывода после завершения выполнения текущей операции.
Кроме того, некоторые прерывания зарезервированы для использования самим процессором - прерывания по ошибке деления, прерывания для пошаговой работы, немаскируемое прерывание и т.д.
Для обработки прерываний в реальном режиме процессор использует таблицу векторов прерываний. Эта таблица располагается в самом начале оперативной памяти, т.е. её физический адрес - 00000.
Таблица векторов прерываний реального режима состоит из 256 элементов по 4 байта, таким образом её размер составляет 1 килобайт. Элементы таблицы - дальние указатели на процедуры обработки прерываний. Указатели состоят из 16-битового сегментного адреса процедуры обработки прерывания и 16-битового смещения. Причём смещение хранится по младшему адресу, а сегментный адрес - по старшему.
Когда происходит программное или аппаратное прерывание, текущее содержимое регистров CS, IP а также регистра флагов FLAGS записывается в стек программы (который, в свою очередь, адресуется регистровой парой SS:SP). Далее из таблицы векторов прерываний выбираются новые значения для CS и IP, при этом управление передаётся на процедуру обработки прерывания.
Перед входом в процедуру обработки прерывания принудительно сбрасываются флажки трассировки TF и разрешения прерываний IF. Поэтому если ваша процедура прерывания сама должна быть прерываемой, вам необходимо разрешить прерывания командой STI. В противном случае, до завершения процедуры обработки прерывания все прерывания будут запрещены.
Завершив обработку прерывания, процедура должна выдать команду IRET, по которой из стека будут извлечены значения для CS, IP, FLAGS и загружены в соответствующие регистры. Далее выполнение прерванной программы будет продолжено.
Что же касается аппаратных маскируемых прерываний, то в компьютере IBM AT и совместимых с ним существует всего шестнадцать таких прерываний, обозначаемых IRQ0-IRQ15. В реальном режиме для обработки прерываний IRQ0-IRQ7 используются вектора прерываний от 08h до 0Fh, а для IRQ8-IRQ15 - от 70h до 77h.
Запрет/разрешение отдельных аппаратных прерываний.
Программы на ассемблере могут запретить аппаратные прерывания. Это маскируемые прерывания; другие аппаратные прерывания, возникающие при некоторых ошибках (таких как деление на ноль) не могут быть маскированы. Имеются две причины для запрета аппаратных прерываний. В первом случае все прерывания блокируются с тем, чтобы критическая часть кода была выполнена целиком, прежде чем машина произведет какое-либо другое действие. Например, прерывания запрещают при изменении вектора аппаратного прерывания, избегая выполнения прерывания, когда вектор изменен только наполовину.
Во втором случае маскируются только определенные аппаратные прерывания. Это делается когда некоторые определенные прерывания
могут взаимодействовать с операциями, критичными к временам. Например, точно рассчитанная по времени процедура ввода/вывода не
может себе позволить быть прерванной длительным дисковым прерыванием.