Объясните, как int 21h можно использовать для ввода-вывода в микропроцессоре 8086?
Вот пример того, как прерывание INT 21h можно использовать для чтения символа с клавиатуры:
1. Программа загружает в регистр AH значение 1, чтобы указать, что она хочет прочитать символ с клавиатуры.
2. Программа выдает прерывание INT 21h.
3. Микропроцессор переходит к коду обработчика ввода-вывода MS-DOS.
4. Код обработчика ввода-вывода проверяет, есть ли доступный символ в буфере клавиатуры.
5. Если имеется доступный символ, код обработчика ввода-вывода считывает символ из буфера и сохраняет его в регистре AL.
6. Если доступного символа нет, код обработчика ввода-вывода устанавливает флаг переноса (CF) на 1, чтобы указать на это условие.
7. Программа проверяет флаг переноса, чтобы определить, успешно ли был прочитан символ.
8. Если флаг переноса равен 0, программа извлекает символ из регистра AL.
Вот ассемблерный код этого примера:
```
мов ах, 1; AH =1 для чтения символа с клавиатуры.
интервал 21ч; Прерывание 21h для выполнения операции ввода-вывода.
Джей Си Ночар; Перейти, если установлен флаг переноса (нет доступных символов)
мов ч, ал; Получить символ из регистра AL
```
Этот пример можно изменить для выполнения других операций ввода-вывода, таких как вывод символа на экран, чтение файла или запись в файл. Каждая операция ввода-вывода идентифицируется уникальным кодом функции, который загружается в регистр AH перед выдачей прерывания INT 21h.