Ассемблер и программирование для IBM PC



         

ГЛАВА 11. Команды обработки строк - часть 9


ъ При обработке справа налево устанавливайте начальные адреса на последний байт обрабатываемой области. Если, например, поле NAME1 имеет длину 10 байтов, то для побайтовой обработки данных в этой области справа налево начальный адрес , загружаемый командой LEA, должен быть NAME1+9. Для бработки слов начальный адрес в этом случае - NAME1+8.

ВОПРОСЫ ДЛЯ САМОПРОВЕРКИ ------------------------------------------------------------

11.1. В данной главе приведены эквивалентные команды для а) MOVSB, б) LODSB и в)STOSB с префиксом REP. Напишите эквивалентные команды для обработки по словам а) MOVSW, б) LODSW и в) STOSW с префиксом REP.

11.2. Введите, ассемблируйте и выполните компановку программы, приведенной на рис.11.1. Не забудьте о инициализации регистра ES. Замените команды MOVSB и MOVSW для пересылки справа налево. Измените процедуру H10SCAS для сканирования поля NAME1 на слово "mb". Используя отладчик DEBUG для трассировки процедур, обратите веимание на содержимое сегмента данных и регистров.

11.3. Имеются следующие определения:

DATASG SEGMENT PARA CONAME DB 'SPACE EXPLORERS INC.' PRLINE DB 20 DUP(' ')

Используя цепочечные команды, выполните: а) пересылку данных из CONAME в PRLINE слева направо;

Ассемблер для IBM PC. Глава 11 251

б) пересылку данных из CONAME в PRLINE справа налево; в) загрузку третьего и четвертого байтов области CONAME в регистр AX; г) сохранение содержимого регистра AX в область по адресу PRLINE+5; д) сравнение данных в областях CONAME и PRLINE (они должны быть не равны); е) сканирование областей CONAME и PRLINE, и поиск в ней символа пробел. Если символ будет найден, то переслать его в регистр BH.

11.4. Переделайте процедуру H10SCAS (рис.11.1) так, чтобы выполнялось сканирование поля NAME1 на символ "er". Обратите внимание, что символы "er" не встречаются в поле NAME1 как одно слово: /As/se/mb/le/rs/. Для решения этой проблемы возможны два варианта: а) использовать команду SCASW дважды, причем первая должна начинаться по адресу NAME1, а вторая - по адресу NAME1+1; б) использовать команду SCASB для поиска символа "е" и сравнить затем следующий байт на символ "r".

11.5. Определите поле, содержащее шест.значения 03, 04, 05 и B4. Продублируйте это поле 20 раз и выдайте результат на экран.

Ассемблер для IBM PC. Глава 12 262




    Содержание  Назад  Вперед