汇编程序比较2个数字。我究竟做错了什么?

时间:2014-06-03 06:02:02

标签: assembly x86-16

DATA SEGMENT
VALUE1 DB 54H
VALUE2 DB 52H
DATA ENDS

CODE SEGMENT
ASSUME DS:DATA
MOV AX,DX
MOV DS,AX
MOV AL,VALUE1
MOV BL,VALUE2
CMP AL,BL
JE A1
JNE NOT_EQUAL

NOT_EQUAL: MOV AH,02H
       MOV DX,OFFSET 'N'
       INT 21H

A1:MOV AH,02H
MOV DX,OFFSET 'Y' 
INT 21H
CODE ENDS

现在这个程序将比较52和54,如果不相等则返回N,如果相等则返回Y.但它正在回归纽约。任何人都可以帮忙吗?我究竟做错了什么?如果相等,它应该使用JE跳转,如果不相等则使用JNE。

2 个答案:

答案 0 :(得分:1)

您正从NOT_EQUAL案件落到A1案件中。如果您只希望其中一个案例发生在每个案例中,则需要在A1结束时跳至NOT_EQUAL之后。

答案 1 :(得分:-2)

好的,在@Chris Pitnam的帮助下,我将代码修改为: - 现在它可以工作了。谢谢

DATA SEGMENT
VALUE1 DB 54H
VALUE2 DB 52H
DATA ENDS 

CODE SEGMENT
ASSUME DS:DATA
MOV AX,DX
MOV DS,AX
MOV AL,VALUE1
MOV BL,VALUE2
CMP AL,BL
JE A1
JNE NOT_EQUAL

NOT_EQUAL: 
MOV AH,02H
MOV DX,OFFSET 'N'
INT 21H
JMP END1

A1:
MOV AH,02H
MOV DX,OFFSET 'Y' 
INT 21H

END1:
MOV AH,4CH
MOV AL,00
INT 21H
CODE ENDS