Команды организации вызова процедур
XLAT
Команда перекодировки
STOSW
STOSB
STOS приемник
LODS источник
Команды загрузки и сохранения
SCAS приемник
SCASB – поиск байта
SCASW – поиск слова
Алгоритм:
- Производится сравнение текущего элемента аккумулятора с приемником и формируются флаги результата.
- Изменяется регистр Cx и регистр DI (на следующий элемент).
- Если знач5ения флагов соответствуют префиксу и Cx≠0, то переход к п.1, иначе: конец.
Команда, в основном, используется для поиска нужного символа в строке или для пропуска группы из одного символа.
Пример:
A db ‘_____УРА!...’
//поиск заданного символа «!»
LEA DI, A
CLD
MOV AL, ‘!’
MOV CX, 12
REPNE SCASB
JE
JNE
//пропуск символов «_»
LEA DI, A
CLD
MOV AL,’_’
MOV CX, 12
REPE SCASB
1. Команда загрузки
LODSB// в AL
LODSW // в AX
Читает значение из источника, записывает в аккумулятор, изменяет значение регистра SI и, если задано, регистра СХ.
2. Команда сохранения
Производит запись значения в аккумуляторе в элемент приемника и изменяет регистр DI, если задан префикс, то уменьшает СХ.
Префикс повторения для команды загрузки смысла не имеет, а в команде сохранения может использоваться для заполнения строки заданным символом.
Пример:
A db ‘574315’
B db 6 DUP (?)
LEA SI, A
LEA DI, B
CLD
MOV CX, 6
M: LODSB
AND AL, 0FH
STOSB
LOOP M
LEA DI, A
MOV CX, 6
MOV AL, ‘_’
REP STOSB
Предназначена для перекодирования данных из одной системы кодировки в другую при кодировании данных одним байтом.
Алгоритм:
Берется значение регистра AL и суммируется со значением регистра ВХ. По указанному (по полученному) исполнительному адресу выбирается значение байта и записывается в AL.
[BX + AL] ® AL
При организации многомодульной программы необходимо решить 2 проблемы:
1. Обеспечить обращение к подпрограмме и возврат из подпрограммы.
2. Обеспечить передачу данных в подпрограмму и обеспечить передачу результата из неё.
Для решения первой проблемы предназначены команды вызова процедуры и возврата из процедуры.
Точка вызова – оператор вызова + следующий оператор
Нужно решить проблему: во время вызова необходимо передать процедуре метку, куда она будет возвращаться.
Для нормальной организации вызова процедуры необходимо произвести вызов процедуры, передать в процедуру адрес возврата и перейти по окончании процедуры по заданному адресу. Для решения этих проблем предназначены команды:
вызов: CALL
возврат: RET
В IBM PC существуют два вызова процедур:
1. Внутрисегментный (ближний)
2. Межсегментный (дальний)
Соответственно, существуют команды ближнего/дальнего вызова и ближнего/дальнего возврата. Эти команды используются в паре ближний/дальний.