Tab db 48 dup (0), 0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Xlatb
Команды преобразования данных
Извлечение битовой строки
Вставка битовой строки
Примеры работы с битовыми полями
Move eax, pole2
Mov cl,16
.386
Code
Pole2 dd 45ff6711h
…….
shld pole1,eax,cl ;pole1=87f545ff
shl pole2,cl ;pole2=67110000
………..
Вставить в поле определенное число бит, начиная с некоторой позиции.
В примере выполняется вставка 16 бит, начиная с 8 разряда.
Фрагмент программы.
.data
pole1 dd 22000022h ; вместо нулей, начиная с 8 разряда
pole2 dd 55550000h ; вставить 5555 из pole2
.code
…….
mov eax,pole2
ror pole1,8 ; pole1=22220000
shr pole1,16 ; pole1=00002222
shld pole1,eax,16 ; pole1=22225555
rol pole1,8 pole1=22555522
…………
Задача: извлечь из битовой строки 16 бит, начиная с позиции 8.
Пример фрагмента программы
.data
str dd 22555522h
.code
……….
rol str,8 ;str=55552222
mov ebx,str ;ebx=55552222
shld eax,ebx,16 ;eax=00005555
ror str,8 ;str=22555522
Применяются для ввода с клавиатуры цифровых данных.
xlat <адрес таблицы>
или
Действие команды заключается в том, что она замещает значение в регистре AL байтом из таблицы, адрес которого указан операндом.
Адрес байта в таблице, который будет производить замещение содержимого AL, определяется операндом [BX+AL].
Перед выполнением команды замещения адрес строки (таблицы) должен быть загружен в регистр BX, а регистр AL – относительный адрес байта в строке. Операнд Адрес таблицы не является обязательным.
Рассмотрим пример программы, которая вместо кода ASCII числа, вводимого с клавиатуры компьютера, загружает в регистр AL само число. Код ASCII определяет место символа в таблице кодов. Он автоматически загружается в регистр AL при вводе числа с клавиатуры.
Фрагмент таблицы кодов ASCII
Символ | |||||||||||
Дес. код символа |
mes db “Введите число с клавиатуры”,$