Материалы сайта
Это интересно
Информатика и Ассемблер
ГЛАВА
4КОМАНДЫ ПЕРЕХОДА. ОРГАНИЗАЦИЯ ЦИКЛОВ
4
.1. Безусловный переход. Оператор SHORT4
.1.1 ОпределениеДля нарушения порядка в котором следуют команды машинной программы применяются команды перехода. Если переход делается, когда выполнено некоторое условие, то такой переход называется условным, а если он делается независимо от условий, то это безусловный переход.
Команды перехода не меняются флаги.
JMP
ор (jump) безусловный переходЗдесь операнд тем или иным способом указывает адрес перехода, т. е. адрес команды, которая должна быть выполнена следующей. Рассмотрим, эти за способы.
4
.1.2. Прямой переходВ данном случае в качестве ор указывается метка той команды, на которую надо передать управление:
JMP
<метка>Пример:
JMP L1 L1: MOV АХ,0Ассемблер вычисляет разницу между адресом команды перехода и адресом команды выполняется переход подставляет разницу в код.
4
.2.3. Оператор SHORT.Jmp
L1 ; длинный переход - команда занимает 3 байта и дальность перехода от -215 до 215-1 байт.Jmp
short L1 ; короткий переход - команда занимает 2 байта и дальность перехода от -128 до 127 байт.4
.1.3.Косвенный переход.В команде указывается не адрес перехода, а место где он находится:
JMP
r16 или JMP m16Здесь содержимое регистра или ячейки памяти является адресом команды на которую осуществляется переход. Модифицируется регистр
IP.4
.2. Команды сравнения и условного перехода4
.2.1. Команда сравненияКомандам условного перехода как правило предшествует команда сравнения двух величин, результатом которого является изменение флагов.
CMP
op1,op2 ;(compare) сравнение.Флаги изменяются как по команде вычитания:
CF
и AF становятся флагами заема и устанавливаются в 1 когда op2>op1. ZF устанавливается если результат вычитания op1-op2 нулевой, SF устанавливается если результат отрицательный.4
.2.2. Команды условного переходаJxx
opоперанд указывает метку на которую следует сделать переход.
Для всех чисел справедливы следующие команды
JE
(equal) op1=op2 ZF=1JNE
(not) op1¹op2 ZF=0Для чисел со знаком
(
здесь принимаются следующие обозначения: G -greater, L - less):JL
(JNGE) op1<op2 SF¹OFJLE
(JNG) op1£op2 SF¹OF или ZF=1JG
(JNLE) op1>op2 SF=OF и ZF=1JGE
(JNL) op1³op2 SF=OFДля чисел без знака
(
здесь принимаются следующие обозначения: A - above, B - below):JB
(JNAE) op1<op2 CF=1JBE
(JNA) op1£op2 CF=1 или ZF=1JA
(JNBE) op1>op2 CF=0 и ZF=0JAE
(JNB) op1³op2 CF=0Переходы по флагам
JZ ZF
=1 JNZ ZF¹1JS SF
=1 JNS SF¹1JC CF
=1 JNC CF¹1JO OF
=1 JNO OF¹1JP PF
=1 JNP PF¹1Переход по значению регистра
CXJCXZ
<метка> jump if CX is zero.4
.3. Команды организации циклов.
Команда
Некоторую последовательность команд необходимо повторить N раз:
mov cx,Nlabel1 : ...dec cxcmp cx,0jne label1 |
LOOP <метка>mov cx,Nlabel1 : ...loop label1 |
Справедливо для
N>0, чтобы при сх=0 обойти цикл:mov
cx,Njcxz
la1la
: ...loop
lala1
: ...Команда реализует короткий переход
Также существуют команды