Флаги не меняются.
Команда:
LODSB
Логика:
AL = (DS:SI)
if DF = 0
SI = SI + 1
else
SI = SI - 1
Команда LODSB передает байт, расположенный по адресу DS:SI в AL, а также инкрементирует или декрементирует SI (в зависимости от состояния признака направления DF), чтобы указатель переместился на следующий байт строки.
| Операнды | Такт байты (слова) | Обращения | Байты | Пример |
| нет операндов | 12 | - | 1 | LODSB |
| (повтор) | 9+13/rep | 1/rep | 1 | REP LODSB |
Примечания:
Хотя и разрешется использовать эту команду в повторном режиме, это почти никогда не делается, т.к. это привело бы к постоянному изменению значения в AL.
Следующий пример иллюстрирует пересылку восьми байтов из INIT_PORT в порт 250. (Не пробуйте делать этого на вашей машине, если Вы не знаете о назначении порта 250.)
INIT_PORT:
DB '$CMD0000' ;Строка, которую мы хотим
;переслать
CLD ;Будем передвигаться
;в прямом направлении
LEA SI,INIT_PORT ;Засылаем в SI стартовый
;адрес строки
MOV CX,8 ;CX является счетчиком
;для команды LOOP
AGAIN: LODSB ;Загружаем байт в AL...
OUT 250,AL ; ...и высылаем его в порт
LOOP AGAIN