CMP CL, 9
MOV DL, 20H
MOV AH, 2
INT 21H
JGE UNITSREACHED
Вы никогда не должны писать такой код! Обычно этот конкретный вызов int 21h
сохраняет флаги, но вы должны держать cmp
и jge
близко друг к другу.
MOV DL, 20H
MOV AH, 2
INT 21H
CMP CL, 9
JGE UNITSREACHED
Ваш код действительно печатает "01 03 05 07 09 11 13 15 ... ".
Чтобы напечатать четные числа, вам нужно настроить регистр CX
на другое значение. Используйте mov cx, 0000h
. Вам также необходимо изменить значение, которое вызывает переход, на UNITSREACHED . Теперь это становится 8 (вместо 9). Используйте cmp cl, 8
. И в-третьих, не забывайте, что когда вы увеличиваете CH
, вам нужно вернуть CL
в 0 (а не в 1).
MOV CX,0000H
...
CMP CL, 8
...
MOV CL, 0
Почему бы вам не изменить JMP UNITSUNREACHED
в JMP BACK
? Вы ничего не получите, прыгая без необходимости.
Точно так же вы можете оптимизировать немного написав:
CMP CH , 9
JNG BACK