На этом шаге мы рассмотрим переходы для знаковых данных.
В Ассемблере существуют следующие переходы для знаковых данных.
CMP SI,DX
JG SAME
ADD AX,1
RET
SAME: MOV BX,0 .
После выполнения первой команды все три флага SF, OF и ZF сбрасываются в нуль. После
выполнения команды JG SAME выполняется команда MOV BX, 0. Это означает, что содержимое
регистра SI (положительное шестнадцатеричное число 20H) больше, чем содержимое регистра DX
(отрицательное шестнадцатеричное число FF23H).
DEC AX
JGE UNSIGN
ADD BX,1
RET
UNSIGN: INC BX .
После выполнения первой команды в регистре AX будет находиться положительное, отличное от нуля число. Следовательно, флаги SF и OF будут сброшены в 0. После выполнения команды JGE UNSIGN управление будет передано по адресу UNSIGN. Это означает, что содержимое регистра AX не меньше нуля.
Пусть регистр AX содержит число FF00H. Тогда в приведенном примере после выполнения первой команды
будет установлен в 1 флаг SF и будет выполнена команда ADD BX,1.
CMP AX,DX
JL CHECK
ADD BX,1
RET
CHECK: MOV AX,0 .
Первая команда устанавливает флаг SF в 1, а флаг OF в 0. После выполнения команды JL CHECK управление будет передано на метку CHECK. Это означает, что содержимое регистра AX меньше содержимого регистра DX.
Пусть регистр AX содержит число FF00H. Тогда в приведенном примере после выполнения первой команды
будет установлен в 1 флаг SF и будет выполнена команда ADD BX,1.
CMP CX,AX
JLE NEXT
ADD BX,1
RET
NEXT: INC BX .
После выполнения первой команды флаг SF будет установлен в 1, а OF - в 0. После выполнения команды JLE NEXT управление будет передано по адресу NEXT. Это означает, что содержимое регистра CX меньше AX.
Пусть регистр CX содержит число 0125H. Тогда в приведенном примере после выполнения первой команды будут установлены в 0 флаги SF и OF, следовательно, будет выполнена команда ADD BX,1.
На следующем шаге мы рассмотрим специальные переходы.