Команды перехода (1)

Содержание

Слайд 2

Флаги состояния

Флаг переноса (Carry flag или CF) устанавливается в случае, если при

Флаги состояния Флаг переноса (Carry flag или CF) устанавливается в случае, если
выполнении беззнаковой арифметической операции получается число, разрядность которого превышает разрядность выделенного для него поля результата.
Флаг переполнения (Overflow flag, или OF) как и в предыдущем случае, но для операций со знаком.

Слайд 3

Флаги состояния

Флаг знака (Sign flag, или SF) устанавливается, если при выполнении арифметической

Флаги состояния Флаг знака (Sign flag, или SF) устанавливается, если при выполнении
или логической операции получается отрицательное число (т.е. старший бит результата равен 1).
Флаг нуля (Zero flag, или ZF) устанавливается, если при выполнении арифметической или логической операции получается число, равное нулю (т.е. все биты результата равны 0).

Слайд 4

Флаги состояния

Флаг служебного переноса (Auxiliary Carry, или AF) устанавливается, если при выполнении

Флаги состояния Флаг служебного переноса (Auxiliary Carry, или AF) устанавливается, если при
арифметической операции с 8-разрядным операндом происходит перенос из третьего бита в четвертый.
Флаг чётности (Parity flag, или PF) устанавливается в случае, если в результате выполнения арифметической или логической операции получается число, содержащее чётное количество битов.

Слайд 5

Команда CMP op1,op2

Команда CMP op1,op2

Слайд 6

Команды переходов

Классификация переходов:
По модифицируемым регистрам.
NEAR – внутрисегментный, «ближний» (модифицируется только регистр IP);
FAR

Команды переходов Классификация переходов: По модифицируемым регистрам. NEAR – внутрисегментный, «ближний» (модифицируется
– межсегментный, «дальний» (модифицируются CS:IP)
По условию выполнения перехода.
безусловный – переход выполняется всегда;
условный – переход выполняется в случае, если комбинация проверяемых флагов истинна.
По способу задания адреса перехода.
Прямой – переход на заданную в программе метку.
Косвенный – переход по адресу, задаваемому через РОН.

Команда безусловного перехода:
jmp адрес – переход на метку/адрес
Пример.
jmp Label_1 ; переход на инструкцию, помеченную меткой Label_1
jmp [BX] ; переход на адрес, находящийся в памяти по адресу,
; содержащемуся в BX

Слайд 7

Команды условных переходов

Команды условных переходов

Слайд 8

Команды условных переходов при сравнении беззнаковых чисел

Команды условных переходов при сравнении беззнаковых чисел

Слайд 9

Команды условных переходов при сравнении знаковых чисел

Команды условных переходов при сравнении знаковых чисел

Слайд 10

Реализация аналогов условных операторов if и if-else языков высокого уровня в программе

Реализация аналогов условных операторов if и if-else языков высокого уровня в программе
на ассемблере:

Команды переходов

if (A>0) then
{ Блок 1 }
end if

Вариант 1:
cmp AX, 0
jg Lab_1
jmp End_If
Lab_1:
{ Блок 1 }
End_If: ...

Вариант 2:
cmp AX, 0
jle End_If
{ Блок 1 }
End_If: ...

if (A>0) then
{ Блок 1 }
else
{ Блок 2 }
end if

Вариант 2:
cmp AX, 0
jle Lab_2
{ Блок 1}
jmp End_If
Lab_2:
{ Блок 2 }
End_If: ...

Вариант 1:
cmp AX, 0
jg Lab_1
{ Блок 2}
jmp End_If
Lab_1:
{ Блок 1 }
End_If: ...