Листинг ассемблера на Фиг. 4.22 показывает различные строковые
команды. Загрузка строки LODS и запись строки STOS являются
простейшими строковыми командами. Если программа указывает
байтовый операнд в команде LODS, то она загружает в регистр AL
байт, на который указывает пара регистров DS:SI. Затем она
изменяет регистр SI на единицу; он увеличивается, либо уменьшается,
в зависимости от состояния флага направления. Если команда LODS
указывает на слово, то она загружает регистр AX и изменяет регистр
SI на 2. Команда STOS строго противоположна, и записывает байт из регистра AL либо слово из регистра AX в ячейку памяти. В случае
записи ячейка определяется парой регистров ES:DI. Команда записи
изменяет регистр DI либо на единицу, либо на 2, в зависимости от
типа операнда.
Программист может писать на ассемблере команду LODS (а также и
все другие строковые команды) различными способами. Тип операнда
можно указать частью кода операции, либо ассемдлер может определить
тип элемента строки, основываясь на операнде, присутствующем в
команде. Как показано на Фиг. 4.22, команда
LODS EXBYTE
порождает команду загрузки строк байтов, так же как и команда
LODSB.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:01:26
Фиг. 4.22 Команды обработки строк Page 1-1
PAGE ,132
TITLE Фиг. 4.22 Команды обработки строк
0000 CODE SEGMENT
ASSUME CS:CODE,DS:CODE,ES:CODE
0000 EXBYTE LABEL BYTE
0000 EXWORD LABEL WORD
0000 EXBYTE1 LABEL BYTE
0000 EXWORD1 LABEL WORD