русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

INS/INSB/INSW/INSD - Ввод из порта в строку


Дата добавления: 2015-06-12; просмотров: 486; Нарушение авторских прав


-----------------------------------------------------------------|Код Команда Число Описание ||операции тактовых || циклов || ||6C INS r/m8,DX 17,pm=10*/ Ввод байта из порта DX в || 32**,vm=30 ES:(E)DI ||6D INS r/m16,DX 17,pm=10*/ Ввод слова из порта DX в || 32**,vm=30 ES:(E)DI ||6D INS r/m32,DX 17,pm=10*/ Ввод двойного слова из || 32**,vm=30 порта DX в ES:(E)DI ||6C INSB 17,pm=10*/ Ввод байта из порта DX в || 32**,vm=30 ES:(E)DI ||6D INSW 17,pm=10*/ Ввод слова из порта DX в || 32**,vm=30 ES:(E)DI ||6D INSD 17,pm=10*/ Ввод двойного слова из порта|| 32**,vm=30 DX в ES:(E)DI |----------------------------------------------------------------- Примечания: * если CPL <= IOPL ** если CPL >= IOPL Работа команды IF AddressSize = 16THEN использование DI для индексации назначения;ELSE (* AddressSize = 32 *) использование EDI для индексации назначения;FI;IF (PE = 1) AND ((VM = 1) OR (CPL > IOPL))THEN (* Виртуальный режим 8086 или защищенный режим при CPL > IOPL *) IF NOT I-O-Permission(SRC, width(SRC)) THEN #GP(0); FI;FI;IF команда байтового типаTHEN ES:[индекс-назначения] <- [DX]; (* Чтение байта из адресного пространства ввода/вывода согласно DX *) IF DF = 0 THEN IncDec <- 1 ELSE IncDec <- -1; FI;FI;IF AddressSize = 16THEN ES:[индекс-назначения] <- [DX]; (* Чтение слова из адресного пространства ввода/вывода согласно DX *) IF DF = 0 THEN IncDec <- 2 ELSE IncDec <- -2; FI;FI;IF AddressSize = 32THEN ES:[индекс-назначения] <- [DX]; (* Чтение двойного слова из адресного пространства ввода/вывода согласно DX *) IF DF = 0 THEN IncDec <- 4 ELSE IncDec <- -4; FI;FI;индекс-назначения <- индекс-назначения + IncDec; ОписаниеКоманда INS пересылает данные из заданного регистром DX порта ввода в байтпамяти или слово памяти по адресу ES:индекс-назначения. Операнд памятидолжен адресоваться регистром ES; переопределение сегмента невозможно.Регистр назначения - это регистр DI, если атрибут размера адреса командыравен 16 битам, или регистр EDI, если атрибут размера адреса равен 32бита.Команда INS не позволяет задавать номер порта непосредственным значением.Порт должен адресоваться значением в регистре DX. Перед выполнениемкоманды INS в DX должно быть загружено правильное значение.Адрес назначения определяется содержимым регистра индекса назначения.Перед выполнением команды INS в регистр индекса назначения должно бытьзагружено правильное значение.После выполнения пересылки регистр DI или EDI автоматически получаетсоответствующее приращение. Если флаг DF равен 0 (была выполнена командаCLD), то происходит инкремент регистров DI или EDI; Если флаг DF равен 1(была выполнена команда STD), то происходит декремент регистров DI илиEDI. Инкремент или декремент регистров равен 1 при вводе байта, 2 привводе слова и 4 при вводе двойного слова.Команды INSB, INSW и INSD - это синонимы команды INS, работающие с байтом,словом и двойным словом, соответственно. Команде INS может предшествоватьпрефикс REP для ввода блока, равного CX байтов или слов. Эта операцияописана для команды REP. Изменяемые флагиОтсутствуют Исключения защищенного режима#GP(0), если текущий уровень привилегированности численно больше уровняпривилегированности ввода/вывода (IOPL) или если любой из соответствующихбитов разрешения ввода/вывода в TSS равен 1. #GP (0), если результатдолжен помещаться в сегмент, для которого запрещена запись; #GP(0) вслучае недопустимого исполнительного адреса операнда памяти в сегментахCS, DS, ES, FS или GS; #SS(0) в случае недопустимого адреса в сегменте SS;#PF(код сбоя) в случае страничного сбоя; #AC для невыравненной ссылки кпамяти при текущем уровне привилегированности, равном 3. Исключения режима реальных адресовПрерывание 13, если какая-либо часть операнда лежит вне пространстваисполнительных адресов от 0 до 0FFFFH. Исключения виртуального режима 8086Сбой #GP(0), если любой из соответствующих битов разрешения ввода/вывода вTSS равен 1. #PF (код сбоя) для страничных сбоев; #AC для невыравненнойссылки к памяти при текущем уровне привилегированности, равном 3.


<== предыдущая лекция | следующая лекция ==>
INC - Инкремент на 1 | CALL/INTO - Вызов процедуры прерывания


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.435 сек.