Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры по ОСПО.doc
Скачиваний:
29
Добавлен:
02.05.2014
Размер:
910 Кб
Скачать
  1. Команды вызова процедур на языке Ассемблер.

Команда вызова подпрограммы похожа на команду безусловного перехода. Однако в случае команды CALL текущее значение счетчика команд сохраняется в стеке одновременно с командой CALL для возврата из под программы используется команда RET, которая считывает число с вершин стека и записывает его в счетчик команд.

пример:

... { - }

CALL LB1

LB2: { LB2 }

...

LB1: { LB1 }

...

RET { - }

При выполнении команды RET вершина стека обязательно должна содержать адрес заполненной команды CALL, т.е. тело подпрограммы не должно вносить изменений в стек.

  1. Команды организации циклов на языке Ассемблер.

Для организации циклов используются и команды: LOOP, LOOPNE, LOOPE, JCXZ. При этом данные команды опираются на регистр счетчика CX.

команда LOOP

Команда LOOP.

Команда LOOP эквивалентна следующим командам:

DEC CX // уменьшение CX на 1

JNZ МЕТКА // переход в случае CX=0

пример:

MOV CX, 10h

MOV AH, 1h

LB1: INT 21h

LOOP LB1

Команда LOOPNE.

Предназначена для анализа не только значения CX, но и флага PF.

Команда JCXZ.

Позволяет осуществить переход только в том случае если значение регистра CX=0.

Используется либо для предварительной проверки значения CX либо для выхода из цикла в произвольной точке его тела.

пример:

MOV CX, 10h ?

MOV AH, 1

JCXZ LB2:

LB1: INT 21h

LOOP LB1

LB2:

  1. Команды передачи управления на языке Ассемблер.

1. Безусловный переход.

Осуществляется командой JMP, с указанием метки, на которую будет осуществляться переход. В зависимости от типа перехода после мнемоники JMP может осуществляться переход этих типов: а) SHORT – точка перехода задается в виде восьми битного смещения со знаком, который будет суммировать. Преимущество: адресная часть сокращается до байта, недостаток: переход всего на 127 байт.

б) FAR – переход осуществляется по абсолютному адресу заданному сегментом и смещением. Преимущество: перемещается в любой сегмент, недостаток: большая адресная часть пространства. в) NEAR – ближайший тип, переход осуществляется только по смещению в пределах текущего сегмента.

мнемоника

условие

флаги

JB/JNAE

если меньше

CF=1

JBE/JNA

если меньше или равно

CF=1 и ZF=1

JAE/JNB

если больше или равно 0

CF=0

JA/JNBE

если больше

CF=0 и ZF=0

JE/JZ

если ZF=1

ZF=1

JNE/JNZ

если ZF=0

ZF=0

JL/JNGE

если SF=OFF

SF=OF

JLE/JNLE

если ZF=1 и SF=OF

ZF=1 и SF=OF

JP/JPE

если четно

PF=1

JNP/JPO

если нечетно

PF=0

JS

если знак -

SF=1

JNS

если знак +

SF=0

JC

если перенос

CF=1

JNC

если без переноса

СА=0

JO

если переполнение

OF=1

JNO

если без переполнения

OF=0

Типы перехода могут быть явно не указаны, в команде в этом случае он будет определяться компилятором самостоятельно.