На этом шаге мы рассмотрим переходы для знаковых данных.
В Ассемблере существуют следующие переходы для знаковых данных.
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.
На следующем шаге мы рассмотрим специальные переходы.