如何比较2号码?

时间:2014-10-19 10:27:44

标签: assembly

我正在编写一个程序来比较已在数据段中定义的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标签上。 我想知道为什么会这样? 这段代码出了什么问题?

1 个答案:

答案 0 :(得分:0)

mov ax, NUM1加载ax,地址为NUM1。您应该使用mov ax, [NUM1],并且对于访问变量的所有其他操作也是如此。