Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Команда преобразования данных XLAT

КОМАНДЫ РАБОТЫ с АДРЕСАМИ и УКАЗАТЕЛЯМИ

ПРИМЕР ИСПОЛЬЗОВАНИЯ КОМАНД IN и OUT

Выполнение команды не влияет на флаги.

КОМАНДА ВЫВОДА в ПОРТ OUT

Формат команды:

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

Передает байт, слово, двойное слово из регистра AL/AX/EAX ввода-вывода в ПОРТ., определяемый первым операндом.

Команда применяется для прямого управления оборудованием компьютера посредством портов. Номер порта задается первым операндом в виде непосредственного значения или значения в регистре DX. Непосредственным значением можно задать порт с номером в диапазоне 0-255. При использовании порта с бόльшим номером используется регистр DX.

 

Ниже – фрагмент действий с портами микросхемы 8255, которая осуществляет интерфейс с периферией, в т.ч. с клавиатурой. У неё три регистра, адресуемых портами 60, 61 и 62. Читать можно из всех, но писать – только в порт 61.

Приводимые ниже действия – это часть кода обработчика прерывания номер 9 (клавиатуры). Смысл фрагмента в том, что для подтверждения скан-кода надо на короткое время подать 1 на старший бит порта 61.

in al, 60h; читаем скан-код нажатой клавиши
push ax; сохраним его на время в стеке
in al, 61h; читаем порт 61h
or al, 10000000b; устанавливаем старший бит байта

; из порта 61h в 1
out 61h, al; подтверждаем факт приема скан-кода
pop ax
out 61h, al; восстановили байт в порту 61h

 

И два примера про использование DX для указания номера порта:

OUT 25Bh, 2; ОШИБКА! ; номер порта > 255!   MOV DX, 25Bh OUT DX, 2; ТЕПЕРЬ ПРАВИЛЬНО! ; номер порта берется из DX  

LEA назначение, источник — загрузка эффективного адреса;

Пример: LEA dx, MemVar
Это равносильно MOV dx, offset MemVar
LDS назначение, источник — загрузка указателя в регистр сегмента данных ds;

Пример: LDS SI, MemVar; Адрес MemVar -> DS:SI
LES назначение, источник — загрузка указателя в регистр дополнительного сегмента данных es;

Пример: LES dx, MemVar; Адрес MemVar -> ES:DX
LGS назначение, источник — загрузка указателя в регистр дополнительного сегмента данных sg;

Пример: LGS si, MemVar; Адрес MemVar -> GS:SI
LFS назначение, источник — загрузка указателя в регистр дополнительного сегмента данных fs;

Пример: LFS dx, MemVar; Адрес MemVar -> FS:DX
LSS назначение, источник — загрузка указателя в регистр сегмента стека ss.
Пример: LSS dx, MemVar; Адрес MemVar -> SS:DX `

Заменяет значение AL старое другим значением AL новое, которое берётся из таблицы перекодировки по индексу [AL старое].

Бывает нужна при перекодировках текстов с однобайтными символами.

ПРОБЛЕМА ДЛЯ ИЛЛЮСТРАЦИИ

Надо символьную строку – запись 16-ричного числа превратить в само это число и поместить его, например, в регистр AL.

Ну, например, есть строка ‘B7’. А нам нужно, чтобы в AL в итоге оказалось
1011 0111

Замену символов строки на соответствующее число-цифру сделаем
с применением команды XLAT (! Возможны и другие решения!)

РЕШАЕМ ЗАДАЧУ ПРЕОБРАЗОВАНИЯ Символьной ЗАПИСИ hex-числа в само это ЧИСЛО

ПОСТРОИМ ТАБЛИЦУ ПЕРЕКОДИРОВКИ:

СИМВОЛЫ:

0 1 2 3 4 5 6 7 8 9 A B C D E F a b c d e f как литеры
48 49 50 51 52 53 54 55 56 57 65 66 67 68 69 70 97 98 99 100 101 102 ASCII-коды
ЧИСЛА:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 10 11 12 13 14 15.

TABL db dup 48(0), 0,1,2,3,4,5,6,7,8,9,dup 7(0),10,11,12,13,14,15,dup 26 (0),\

<== предыдущая лекция | следующая лекция ==>
Команды ввода-вывода в порты | Извлечение из стека
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 701; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




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