IN
(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 |
См. также: урок 7 и команды , ,