Lea dx, dest


Rep movs dest, source

Mov es, ax

Mov ds, ax

Code

Data

Команды пересылки строк

Команды обработки строк

Xlatb

Mov ah, 1h

Mov dx, offset mes

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

Pole1 dd 521187f5h

Data

…….

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 “Введите число с клавиатуры”,$

lea bx, tab ; в bx загружается адрес таблицы

mov ah, 9h ; вывод на экран сообщения

int 21h

xor ax, ax ; очистка регистра ax

int 21h ;ожидание вода с клавиатуры

movs <адрес приемника>, <адрес источника>

movsb – пересылка байт

movsw – пересылка слов

movsd – пересылка двойных слов

Первая команда осуществляет копирование байт, слов, двойных слов в зависимости от атрибутов идентификаторов.

Число пересылаемых элементов должно быть загружено в регистр cx или ecx. Адрес источника должен быть загружен в пару DS:SI , а приемника – в регистры ES:DI.

Пример:

 

source db “строка”

dest db 6 dup (“ “)

assume ds:@data, es :@data

main:

mov ax, @data

cld ; индексация адресов в сторону увеличения

lea si, source ; в si – адрес источника информации

lea di, dest ; в di – адрес приемника

mov cx, 6 ; переслать из источника в приемник 6 байт

mov ah, 09h ;вывод на экран

int 21h

mov ax, 4с00h ; возврат в среду DOS

int 21h