Графические устройства

         

Поворот чернобелого рисунка или маски



Пример 6.2. Поворот черно-белого рисунка или маски

mov si, di копируем адрес первой строки
add si, 124 получаем адрес последней строки
mov ex, 16 количество пар строк
turn : mov eax, fs : [di] еах = строка 1
xchg eax, f s : [si j еах = строка 2; fs: [si] = строка 1
mov fs : [di] , eax fs : [di] = строка 2
add di, 04 адрес следующей строки
sub si, 04 адрес предыдущей строки
loop turn управление повторами цикла

Выполнение примера 6.2 начинается с подготовки адреса последней строки и задания количества переставляемых пар. Перестановку выполняет цикл, его первая команда имеет метку turn. Она копирует в регистр еах первую строку пары. Следующая команда переставляет содержимое еах и второй строки пары. Третья команда копирует содержимое еах в первую строку. В результате переставлена пара строк. Затем корректируются адреса строк, и команда loop повторяет выполнение цикла 16 раз.
При перестановке расположение байтов в строке не изменяется, поскольку пересылку выполняет одна команда. Для переворота цветного рисунка этот пример не подходит, т. к. для перестановки 16-ти байтов пары строк надо организовать внутренний цикл, а во внешнем подготавливать адреса переставляемой пары.



Содержание раздела