Каталог |
Партнерские сайты |
Сервис |
|
Статьи |
Наши коллеги artmisto.net Web и интернет Интересные статьи Статьи из мира интернета |
|
Последние статьи |
Где заказывать ремонт ноутбука: пара советов для пользователей
Юридическое сопровождение сделок с недвижимостью юридических лиц Бесшовные натяжные потолки – прекрасное решение для любого помещения Мини атс panasonic |
Видеокамеры для всех |
Широкий выбор: |
Телевизоры LCD |
Рекомендуем: Каталог телевизоров LCD по доступным ценам |
Рейтинг |
Сейчас на сайте |
На данный момент
в магазине находится: 1 посетитель(ей) |
Обработка блоков данных
Опубликовано: 14.12.2018
Загрузка и выгрузка данных.
Команды lodsb, lodsw, lodsd нужны, для того чтобы загрузить байт (слово, двойное слово) из памяти, на которую указывает регистр ESI в регистр al,ax или eax. После присваивания значения регистру значение регистра ESI увеличивается на 1,2 или 4. Вот эквиваленты этих команд
Lodsb Mov al, byte ptr [esi] Inc esi /dec esi Lodsw Mov ax, word ptr [esi] Add esi, 2h /sub esi, 2h Lodsd Mov eax, dword ptr [esi] Add esi, 4h / sub esi, 4h
Следовательно, эти команды облегчают нам обработку данных, сразу увеличивая значение регистра esi для следующей порции данных. Регистр может также уменьшаться в зависимости от флага направления DF. Если он выставлен то регистр будет уменьшаться, а если он сброшен, то регистр esi будет увеличиваться.
НЕЛЬЗЯ ПОДПИСЫВАТЬ НИГДЕ ОБРАБОТКУ ДАННЫХ,УДАЛЯТ,ОБЕЗЛИЧАТ,БЛОК,
Абсолютно, противоположное делают команды stosb, stows и stosd. Они загружают регистр al, ax, eax в память, на которую указывает регистр edi. Изменение регистра edi зависит от того же самого флага направления DF.
stosb Mov byte ptr [edi], al Inc edi /dec edi stosw Mov word ptr [edi], ax Add edi, 2h /sub edi, 2h stosd Mov dword ptr [edi], eax Add edi, 4h / sub edi, 4hКоманды movsb, movsw и movsd пересылают байт (слово, двойное слово) на который указывает esi туда, куда указывает edi с автоматическим увеличением/уменьшением этих регистров.
[ C3D12 #03 ] Обработка данных геодезической съемки в Civil 3D 2012
movsb Mov al, byte ptr [esi] Mov byte ptr [edi], al Inc edi /dec edi Inc esi /dec esi stosw Mov ax, word ptr [esi] Mov word ptr [edi], ax Add edi, 2h /sub edi, 2h Add esi, 2h /sub esi, 2h stosd Mov eax, dword ptr [esi] Mov dword ptr [edi], eax Add edi, 4h / sub edi, 4h Add esi, 4h / sub esi, 4h
Сравнение данных.
Команды scasb, scasw и scasd сравнивают содержимое регистра al, ax, eax с содержимым памяти на которую указывает регистр edi. Разумеется с увеличением регистра edi. Более продвинутые команды cmpsb, cmpsw, cmpsd сравнивают значения памяти, на которые указывают регистры esi и edi соответственно. С соответствующим изменением регистра флагов.
Префикс rep.
Все вышеописанные команды предназначены удобно использовать в циклах, т.е. при повторяющихся операциях. Префикс rep нужен для повторения команды обработки блоков количество раз, которое указано в регистре ecx.
Пример:
Mov ecx, 045h Mov edi, 0422310h Mov al, 088h Rep stosbПосле этого память в диапазоне 0422310h-0422355h будет заполнена значениями 88h. Для команд cmps* и scas* префикс повторяет команду только до тех пор, пока флаг ZF установлен. Префиксы repe, repz это тоже самое. Если после очередного выполнения команды флаг ZF сбросился, то повторы прекращаются.
Не менее полезен префикс repne, он будет повторять команду пока флаг ZF сброшен. Если после очередного выполнения команды флаг ZF установился, то повторы прекращаются. То же самое делает префикс repnz.
Str1 db 'qwerty' Str2 db '111111' :: Mov ecx, 06h Mov esi, offset str1 Mov edi, offset str2 Rep movsbПосле всех этих манипуляций данные будут такими:
Str1 db 'qwerty' Str2 db 'qwerty'Ещё пример:
Str1 db 'qwerty' Str2 db 'qwe111' .... Mov ecx, 06h Mov esi, offset str1 Mov edi, offset str2 Rep cmpsbЭто повторение закончится на 4 шаге при сравнении 'r' и '1' т.е. при сравнении 'r' и '1' флаг ZF сбросится и повторение прекратится. Тем самым можно сравнивать две строки а после Rep cmpsb проверять равен ли регистр ECX нулю, если он равен нулю, то строки равны.
Str1 db 'qwerty' Str2 db '1111t1' ...... Mov ecx, 06h Mov esi, offset str1 Mov edi, offset str2 Repne cmpsbЭто повторение прекратится на 5 шаге при сравнении 't' и 't' т.е. при их сравнении флаг ZF установится и повторение прекратится.
Вот и закончился этот урок. На этом уроке мы узнали команды для обработки блоков данных.
Курс валют магазина |
Наличный расчет
1 доллар = 7.95 грн
|
Рекомендуем посетить |
|
Новости |
01.09.2014
Как выгоднее приобрести автомобильные диски 29.08.2014 Преимущества электроплиты 27.08.2014 Современный телевизор:на что обратить внимание при покупке 27.08.2014 Дизайнерские секреты для украшения дома 27.08.2014 Цветочное настроение 25.08.2014 Обустройство дома качественной сантехникой 22.08.2014 Красивые черные платья в гардеробе настоящей леди 05.08.2014 Экологически чистое и доступное жилье в Подмосковье 05.08.2014 Каталог лимузинов для особенного торжества предлагает сайт Прайд Лимо 05.08.2014 Каталог лимузинов для особенного торжества предлагает сайт Прайд Лимо |
Дизайн и создание сайтов |
|
Хиты продаж |
Наш опрос |
Акустика для дома |
Оцените качество по доступной цене |