Переходы. Циклы
Безусловный переход (JMP)
JMP
L ;следующей
будет выполняться команда с меткой L
…
L:
MOV AX,
0
Команды сравнения и условного перехода
Сравнение (compare):CMPop1,op2
Данная команда аналогична команде
вычитания за одним исключением:
вычисленная разность op1-op2
никуда не записывается. Поэтому
единственный и главный эффект от команды
сравнения – это установка флагов.
Команды условного перехода в ЯА
записываются единообразно:
Jxx
<метка>
где xxформируется с помощью следующих символов:
E
– equal (равно)
N – not (не,
отрицание)
G–greater(больше) – для чисел со знаком
L–less(меньше) – для чисел со знаком
A–above(выше, больше) - для чисел без знака
B–below(ниже, меньше) - для чисел без знака
Z–ZF=
1 (флаг нуля равен 1)
S–SF=
1 (флаг знака равен 1)
С– СF= 1 (флаг переноса
равен 1)
O –OF= 1 (флаг переполнения равен 1)
P –PF= 1 (флаг паритета равен 1)
CXZ
– if ( CX == 0 ) goto <метка>
Пример 1.
JNZ
L
;перейти на метку L,
если флаг нуля равен 0
Пример 2.Пусть X,
Y и Z
– переменные размером в слово. Требуется
записать в Z
максимальное из чисел X
и Y.
;числа
со знаком
MOV
AX,
X
CMP AX,
Y ;x=y?
JGE M ;x>=y
-> M
MOV AX,
Y
M: MOV Z,
AX
Команда LOOP.Пусть некоторую группу команд (тело
цикла) надо повторитьNраз (N>0). Тогда на ЯА этот
цикл можно реализовать по следующей
схеме:
MOV CX,
N ;N>0
L: …
… ;тело
цикла
…
LOOP
L
Замечание. Количество итераций
цикла обязательно должно находиться в
регистреCX.
Ввод-вывод. Прерывания
Команды DOS.
Общий формат вызова функции DOSимеет следующий вид:
MOV
AH,
<номер функции>
INT
<номер прерывания>
Некоторые функции прерывания 21h
Завершение программы
MOV
AL,
<код завершения>
MOV
AH,
4Ch
INT
21h
Вывод символа на экран (в текстовом
режиме)
MOV
DL,
<код выводимого символа>
MOV
AH,
2
INT 21h
Ввод символа c
экрана (в текстовом режиме)
MOV
AH,
1
INT 21h
MOV
AL,
<код введенного символа>
Вывод строки на экран (в текстовом
режиме)
DS:DX
:= начальный адрес строки
MOV
AH,
9
INT 21h
Очистка буфера ввода
MOV
AL,
0
MOV
AH,
0Ch
INT 21h
Ввод с клавиатуры
DS:DX
:= адрес буфера для записи введенной
строки
MOV
AH,
0Ah
INT 21h