我设法编写了用于打印奇数编号的代码。现在,我正在尝试打印偶数,但是连续地我会提示输出错误。我不确定我在哪里错,因为我也尝试了div命令。谁能帮我解决这个问题。以下是代码。
.MODEL SMALL
.STACK 100H
.DATA
LF EQU '0DH'
.CODE
MAIN PROC
MOV CX,0001H
MOV DX,0
BACK:
MOV DL, CH
OR DL, 30H
MOV AH, 2
INT 21H
MOV DL, CL
OR DL, 30H
MOV AH, 2
INT 21H
CMP CL, 9
MOV DL, 20H
MOV AH, 2
INT 21H
JGE UNITSREACHED
ADD CL, 2
JMP UNITSUNREACHED
UNITSREACHED:
ADD CH, 1
MOV CL, 1
CMP CH , 9
JG EXIT
UNITSUNREACHED:
JMP BACK
EXIT:
END MAIN
MAIN ENDP
答案 0 :(得分:0)
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