我正在编写一个程序来比较已在数据段中定义的2个数字。 我像这样定义它们
Dseg SEGMENT PARA PUBLIC 'data'
NUM1 DW 1 ; num1 = 1
NUM2 DW 2 ; num2 = 2
MAX DW ? ; variable to save the max number
MIN DW ? ; variable to save the min number
Dseg ENDS
Cseg SEGMENT PARA PUBLIC 'code'
ASSUME CS : Cseg , DS : Dseg , SS : Sseg , ES : NOTHING
ORG 100H
Mov AX , Dseg
Mov DS , AX
Mov AX , NUM1 ; move num1 to AX
CMP AX , NUM2 ; compare num1 with num2
JAE MAX1 ; jump if num1 > num2
Mov AX , NUM2; ax = num2
Mov MAX , AX ; max = ax
Mov AX , NUM1; ax = num1
Mov MIN , AX ; min = ax
JMP ENDPROG
MAX1 :
Mov AX , NUM1; ax = num1
Mov MAX , AX ; max = ax
Mov AX , NUM2; ax = num2
Mov MIN , AX ; min = ax
JMP ENDPROG
ENDPROG :
;..............
Mov AX , 4c00H
INT 21H
Cseg ENDS
END
但是跳转命令效果不好!它停留在ENDPROG标签上。 我想知道为什么会这样? 这段代码出了什么问题?
答案 0 :(得分:0)
mov ax, NUM1
加载ax
,地址为NUM1
。您应该使用mov ax, [NUM1]
,并且对于访问变量的所有其他操作也是如此。