Студопедия.Орг Главная | Случайная страница | Контакты | Мы поможем в написании вашей работы!  
 

Команды обработки строк (цепочек байтов)



1. LODSB; команда lodsb загружает байт адресованный регистром SI из сегмента данных, и увеличивает SI на 1, если перед этим была введена команда CLD (очистить флаг направления DF) и уменьшает SI на 1, если была использована команда STD (установить флаг направления).

.....DATAstring DB 'abcdefg'.CODE.... cld;после выполнения этих команд в AL будет mov si,OFFSET [string+2]; загружен ASCII код 'с' lodsb;причем содержимое SI будет указывать на 'd'.

2. MOVSB; эта команда перемещает один байт из ячейки памяти с адресом в регистре SI в ячейку памяти с адресом в регистре DI и увеличивает (SI) и (DI) на 1. Значение SI может находиться, как в сегменте данных DS, так и в дополнительном сегменте ES. Значение DI может находиться только в дополнительном сегменте ES.

.....DATA msg DB 'Всё O.K.' LEN = $ - msg;LEN равно 8.CODE.... cld lea si,msg;в SI адрес источника mov ax,0b800h;начало сегмента видеопамяти mov es,ax;поместить в дополнительный сегмент lea di,es:(0a0h * 3);4-я строка сверху mov cx,LEN;LEN - количество выводимых символовrp: movsb;переслать символ в текущую позицию экрана inc di;перешагнуть через позицию атрибута loop rp;повторить до исчерпания (CX)....;строка 'Всё O.K.' будет выведена в 4-ю строку;дисплея сверху.

3. REP;префикс повторения команды. Например окончание предыдущей программы может быть записано в виде:

.... mov cx,LEN;несмотря на то,что массив'Всё O.K.'будетrep movsb;скопирован в область памяти B800:(A0 * 3), на;экран дисплея будет выведено: ВёOK. Почему?

4. CMPSB; осуществляет сравнение байта строки источника c адресом (SI) и байта строки приемника с адресом (DI): то есть производит вычитание ((SI)) - ((DI)). Не путать с командой CMP DST, SRC в которой наоборот, производится вычитание источника из приемника. Команда CMPSB неявно уменьшает (CX) на 1 и увеличивает (SI) и (DI) на 1, если (DF) = 0.

5. REPZ или REPE; префикс повторения. Выполнение команды завершается, когда (CX) = 0 или (ZF) = 0.

.....DATAsrc DB 'To be, or not to be'dst DB 'To be,or not to be'len = $ - dst;len равно 19.CODE.... cld; (DF) = 0 push ds;совместить адреса pop es;сегментов ds и es mov cx,len;длину строки dst переслать в cx lea di,dst;загрузить адрес(смещение) строки dst в DI lea si,srcrepe cmpsb;сравнивать побайтно je equal;если все байты совпали, то перейти к метке not cx;если нет - вычислить номер несовпадающих байт add cx,len; jmp notequal;equal:........notequal:....

В конце этого примера номер первого несовпадающего байта (CX) = 5.





Дата публикования: 2015-01-23; Прочитано: 249 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!



studopedia.org - Студопедия.Орг - 2014-2024 год. Студопедия не является автором материалов, которые размещены. Но предоставляет возможность бесплатного использования (0.006 с)...