Команды организации вызова процедур

XLAT

Команда перекодировки

STOSW

STOSB

STOS приемник

LODS источник

Команды загрузки и сохранения

SCAS приемник

SCASB – поиск байта

SCASW – поиск слова

Алгоритм:

  1. Производится сравнение текущего элемента аккумулятора с приемником и формируются флаги результата.
  2. Изменяется регистр Cx и регистр DI (на следующий элемент).
  3. Если знач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. Межсегментный (дальний)

Соответственно, существуют команды ближнего/дальнего вызова и ближнего/дальнего возврата. Эти команды используются в паре ближний/дальний.