Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP.docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
166.62 Кб
Скачать

43) Описать принципы использования прерывания dos int 21h для организации вывода на экран.

В частности, операционная система включила практически все свои возможности в прерывание 21H. Поэтому при вызове прерывания необходимо указывать номер функции. Все прерывания (как BIOS так и DOS) передают номер функции в AH (иногда в AL содержится номер подфункции).

Ниже перечислены функции DOS, которые могут оказаться полезными для операций ввода - вывода. Код функции устанавливается в регистре AH и затем выдается команда INT 21H.

AH=02: Вывод символа. Для вывода необходимо код символа поместить в регистр DL.

AH=09: Вывод на экран строки символов. Адрес строки, заканчивающейся знаком $, должен быть в регистре DX.

44. Описать принципы использования прерывания dos int 21h для организации ввода с клавиатуры.

AH=07: Ввод с клавиатуры без эхоотображения. Данная функция аналогична функции 01, но введенный символ не отображается на экране.

AH=0A: Буферизированный ввод с клавиатуры строки символов. Адрес буфера должен быть в регистре DX. Первый байт буфера указывает рабочий размер буфера. Во втором байте буфера находится счетчик символов (фактическое число байтов, введенных с клавиатуры без учета кода Enter). Третий байт - начало входной строки, состоящей из символов ASCII. Конец входной строки - символ возврата каретки (Enter).

01H: ввод с клавиатуры

Вход

  • AH = 02H

Выход

  • AL = символ, полученный из стандартного ввода

Описание:

Считывает (ожидает) символ со стандартного входного устройства. Отображает этот символ на стандартное выходное устройство (эхо). при распознавании Ctrl-Break выполняется INT 23H.

.

45. Объяснить понятие и назначение портов и принципы работы с ними. Описать назначение и использование команд in и out.

(OUT operand to port)

Вывод операнда в порт

 

Схема команды: 

out ном_порта,аккумулятор 

Назначение: вывод значения в порт ввода-вывода.

Алгоритм работы:  Передать байт, слово, двойное слово из регистра al/ax/eax в порт, номер которого определяется первым операндом.  Применение:  Команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается первым операндом в виде непосредственного значения или значения в регистре dx. Непосредственным значением можно задать порт с номером в диапазоне 0...255. Для указания порта с большим номером используется регистр dx. Размер данных определяется размерностью второго операнда и может быть байтом, словом или двойным словом.

        out     64h,al

        

(INput operand from port)

Ввод операнда из порта

 

Схема команды: 

in аккумулятор,ном_порта 

Назначение: ввод значения из порта ввода-вывода.

Алгоритм работы:  Передает байт, слово, двойное слово из порта ввода-вывода в один из регистров al/ax/eax. Состояние флагов после выполнения команды: выполнение команды не влияет на флаги.  Применение:  Команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается вторым операндом в виде непосредственного значения или значения в регистре dx. Непосредственным значением можно задать порт с номером в диапазоне 0-255. При использовании порта с большим номером используется регистр dx. Размер данных определяется размерностью первого операнда и может быть байтом, словом, двойным словом. В качестве примера применения рассмотрим фрагмент обработчика прерывания от клавиатуры 9. Это прерывание вызывается всякий раз при нажатии любой клавиши на клавиатуре. Обработчик этого прерывания должен прочитать скан-код клавиши, подтвердить микропроцессору клавиатуры факт приема скан-кода, преобразовать этот код в соответствии с клавишами-переключателями и поместить преобразованный код в буфер клавиатуры, находящийся в области BIOS. Действия чтения и подтверждения приема скан-кода могут выглядеть, к примеру, так:

        in      al,60h  ;читаем скан-код

        push    ax      ;сохраним его на время

        in      al,61h  ;читаем порт 61h

        or      al,80h  ;старший бит байта из порта 61h в 1

        out     61h,al  ;подтверждаем факт приема скан-кода

        pop     ax

        out     61h,al  ;восстановили байт в порту 61h

        

Порт – некоторый регистр размером в байт, находящийся вне ЦП (два соседних порта могут рассматриваться как порт размером в слово). Обращение к портам происходит по номерам. Все порты нумеруются от 0 до 0FFFFh. С каждым внешним устройством связан свой порт или несколько портов их адреса заранее известны.  Запись и чтение порта осуществляется при помощи следующих команд: Чтение (ввод): IN AL, n или IN AX, n Запись (вывод):OUT n, AL или OUT n, AX Номер порта n в этих командах может быть задан либо непосредственно, либо регистром DX (IN AX,DX). Сценарий ввода вывода через порты существенно зависит от специфики того внешнего устройства, с которым ведется обмен, но обычно ЦП связан с внешним устройством через два порта: первый – порт данных, второй – порт управления и достаточно типичной является следующая процедура обмена: - ЦП записывает в порт управления соответствующую команду, а порт данных – выводимые данные; - внешнее устройство, считав эту информацию, записывает в порт управления команду «занято» и начинает непосредственно вывод (например, печать); - ЦП переходит либо в режим ожидания, опрашивая в цикле порт управления, либо занимается другой работой – до тех пор пока в порте управления не сменится сигнал «занято»; - внешнее устройство заканчивает вывод и записывает в порт управления сигнал об успешном завершении или об ошибке; - ЦП анализирует полученную информацию и продолжает свою работу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]