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



       

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


***---***---***---***---***--- . . . ***--- | | | | PATTERN DISAREA+6 DISAREA+12 DISAREA+42

Данную технику можно использовать для дублирования в области памяти любого образца любой длины. Образец должен быть расположен непосредственно перед принимающей областью.

ПРОГРАММА: ВЫРАВНИВАНИЕ ВПРАВО ПРИ ВЫВОДЕ НА ЭКРАН ------------------------------------------------------------

COM-программа, изображенная на рис.1.2, иллюстрирует почти весь материал, приведенный в этой главе. Процедуры программы выполняют следующие действия:

B10INPT Принимает имена длиной до 30 символов, вводимых вверху экрана. D10SCAS Использует команду SCASB для сканирования имен и об хода любого ввода, содержащего символ "звездочка". E10RGHT Использует команду MOVSB для выравнивания имен по правой границе, выводит имена в колонку в правой части экрана. Длина в поле ACTNLEN из списка параметров ввода используется для вычисления самого правого символа в имени, например:

JEROME KERN OSCAR HAMMERSTEIN RICHARD ROGERS

F10CLNM Использует команду STOSW для очистки области имени в памяти.

------------------------------------------------------------ ------------------------------------------------------------ Рис.11.2. Выравнивание вправо при выводе на экран.

ОСНОВНЫЕ ПОЛОЖЕНИЯ НА ПАМЯТЬ ------------------------------------------------------------

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

ъ Для цепочечных команд MOVS, STOS, CMPS и SCAS не забы- вайте инициализировать регистр ES.

ъ Сбрасывайте (CLD) или устанавливайте (STD) флаг направ ления в соответствии с направлением обработки.

ъ Не забывайте устанавливать в регистрах DI и SI необходи мые значения. Например, команда MOVS предполагает операнды DI,SI, а команда CMPS - SI,DI.

ъ Инициализируйте регистр CX в соответствии с количеством байтов или слов, участвующих в процессе обработки.

ъ Для обычной обработки используйте префикс REP для команд MOVS и STOS и модифицированный префикс (REPE или REPNE) для команд CMPS и SCAS.

ъ Помните об обратной последовательности байтов в сравни ваемых cловах при выполнении команд CMPSW и SCASW.




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