386+ LODSD Загрузка двойного слова из строки
Команда аналогична командам МП 86 lodb и lodsw, но позволяет загрузить из строки, адресуемой через регистры DS:ESI (DS:SI для 16-разрядных приложений), двойное слово в регистр ЕАХ.
Пример
; В полях данных
dat dd 12789,200000,550000,8000000
;В программном сегменте
mov SI,offset dat
add SI, 4*3 ;DS:SI -> 4-й элемент массива чисел
lodsd ;EAX=8000000
LOOP Циклическое выполнение, пока содержимое СХ не равно нулю
Команда loop выполняет декремент содержимого регистра СХ, и если оно не равно
0, осуществляет переход на указанную метку вперед или назад в том же программном
сегменте в диапазоне -128... + 127 байт. Обычно метка помещается перед первым
предложением тела цикла, а команда loop является последней командой цикла. Содержимое
регистра СХ рассматривается как целое число без знака, поэтому максимальное
число повторений группы включенных в цикл команд составляет 65536 (если перед
входом в цикл СХ=0). Команда не воздействует на флаги процессора.
Пример 1
;В полях данных:
Пример 2
mov CX,20
При использовании в качестве счетчика расширенного регистра ЕСХ максимальное число шагов в цикле увеличивается до 232. Для того чтобы в 16-разрядном приложении процессор при выполнении команды loop использовал не 16-разрядный регистр СХ, а 32-разрядный регистр ЕСХ, перед командой loop необходимо указать префикс замены размера адреса 67h.
Пример
mov ЕСХ,О
LOOPE/LOOPZ Циклическое выполнение, пока равно/циклическое выполнение, пока нуль
Оба обозначения представляют собой синонимы и относятся к одной команде. Команда
выполняет декремент содержимого регистра СХ, и если оно не равно 0, и флаг ZF
установлен, осуществляет переход на указанную метку вперед или назад в том же
программном сегменте в диапазоне -128...+127 байтов. Содержимое регистра СХ
рассматривается как целое число без знака, поэтому максимальное число повторений
группы включенных в цикл команд составляет 65536. Команда не воздействует на
флаги процессора.
Пример
;В полях данных, адресуемых через DS:
При использовании в качестве счетчика расширенного регистра ЕСХ максимальное число шагов в цикле увеличивается до 232. Для того, чтобы в 16-разрядном приложении процессор при выполнении команд loope/loopz использовал не 16-разрядный регистр СХ, а 32-разрядный регистр ЕСХ, перед командами loope/loopz необходимо указать префикс замены размера адреса 67h.
Пример
mov ЕСХ, 1000000 ;Предельное число шагов
LOOPNE/LOOPNZ Циклическое выполнение, пока не равно/циклическое выполнение, пока не нуль
Оба обозначения представляют собой синонимы и относятся к одной команде. Команда
выполняет декремент содержимого регистра СХ, и если оно не равно 0, и флаг ZF
сброшен, осуществляет переход на указанную метку вперед или назад в том же программном
сегменте в диапазоне -128... + 127 байтов. Содержимое регистра СХ рассматривается
как целое число без знака, поэтому максимальное число повторений группы включенных
в цикл команд составляет 65536. Команда не воздействует на флаги процессора.
Пример
;В полях данных:
При использовании в качестве счетчика расширенного регистра ЕСХ максимальное число шагов в цикле увеличивается до 232. Для того чтобы в 16-разрядном приложении процессор при выполнении команд loopne/loopnz использовал не 16-разрядный регистр СХ, а 32-разрядный регистр ЕСХ, перед командами loopne/loopnz необходимо указать префикс замены размера адреса 67h.
Пример
mov ЕСХ,1000000 ;Предельное число шагов
386Р+ LSL Загрузка границы сегмента
Команда Isl загружает в первый операнд границу сегмента из дескриптора сегмента,
заданного селектором во втором операнде.
В качестве первого операнда команды Isl можно использовать 16- или 32-разрядный
регистр общего назначения; в качестве второго - 16- или 32-разрядный регистр
общего назначения или 16- или 32-битовое поле памяти.