КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Команды прерываний. Операции ввода-вывода. Периферийные устройства имеют один или более встроенных регистров, к которым можно получить доступ
Команды ввода-вывода Операции ввода-вывода. Периферийные устройства имеют один или более встроенных регистров, к которым можно получить доступ. Каждое устройство ввода-вывода имеет адрес для каждого такого регистра. Порт ввода-вывода может быть портом ввода, портом вывода, либо двунаправленным портом. Некоторые порты используются для передачи данных, например, регистры приема и передачи последовательного интерфейса. Другие порты ввода-вывода используются для управления периферийными устройствами, например, регистры управления контроллером дисковода. Адресное пространство ввода-вывода. Микропроцессор обеспечивает отдельное адресное пространство ввода-вывода, отличное от адресного пространства физической памяти. Оно состоит из 64К адресуемых 8-битовых портов. Любые два последовательно расположенные 8-битовых порта могут рассматриваться как один 16-битовый порт, а любые четыре – как один 32-битовый порт. Команды ввода-вывода IN и OUT пересылают данные между портами ввода-вывода и регистрами EAX (32-разрядный ввод-вывод), AX (16-разрядный ввод-вывод) и AL (8-разрядный ввод-вывод). Команды адресуют порты ввода-вывода по адресу, задаваемому в команде, либо косвенно, при помощи адреса в регистре DX (табл. 62 и 63). Флаги команды не изменяют.
Табл. 62. Команда IN.
Табл. 63. Команда OUT.
Приведем примеры выполнения операций ввода-вывода:
MOV DX, 10h; записать номер порта 10h в регистр DX MOV AL, 20h; записать значение 20h в регистр AL OUT DX, AL; вывести значение 20h в порт 10h IN AL, 10h; получить байт данных в регистр AL из порта ввода по адресу 10h Команды IRET/INT/INTO реализуют механизм обработки прерываний, который заключается во временном приостановлении выполнения текущей программы и переходе к подпрограмме обработке прерывания. Подробно эти вопросы рассматривается в главе 6. Команда IRETобеспечивает возврат из обработчика прерывания к прерванной программе (табл. 64). Флаги восстанавливаются из стека. Встретив инструкцию IRET, процессор восстанавливает из стека регистровую пару CS:IP и регистр флагов. Команда INTвырабатывает программное прерывание по указанному вектору. Флаги в момент записи содержимого регистра флагов в стек имеют состояние на момент начала выполнения инструкции. После выполнения прерывания флаги IF и TF обнуляются.
Табл. 64. Команды прерываний.
Прерывание по вектору 3 (по адресу 0000:000Ch) отладочное и может быть выработано инструкциями двух видов – специальной однобайтовой с кодом CC и общей двухбайтовой CD 03. Трансляторы с языка ассемблера для инструкции INT 3 всегда генерируют код CC; двухбайтовый код CD 03 может быть при необходимости сформирован вручную. Однобайтовый код операции используется отладчиками для формирования точек останова, поскольку позволяет заменить код операции любой команды, в том числе и однобайтовой. Команда INTOвырабатывает прерывание по вектору 4 (по адресу 0000:0010h), если флаг переполнения OF установлен. После выполнения прерывания флаги IF и TF сбрасываются. Флаги в регистре флагов в момент записи его содержимого в стек имеют состояние на момент начала выполнения инструкции прерывания. Команда INTO обычно размещается после команд, которые могут вызвать установку флага OF, с целью выработки прерывания при возникновении переполнения мантиссы. При начальной загрузки по адресу вектора прерывания 4 записывается адрес некоторой ячейки памяти, содержащей команду IRET (по умолчанию реакция на прерывание отсутствует).
Дата добавления: 2014-11-16; Просмотров: 606; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |