如何用汇编语言反转数字

时间:2016-03-01 15:30:23

标签: assembly x86-16

我想用汇编语言反转一个数字。我正在使用MASM 我的内存错误。 到目前为止我尝试了什么:

DATA SEGMENT

    NUM1 DW NUM1 DW 12321
    ARRY DB 10 DUP (0)

    MSG1 DB 10,13,’STORED STRING IN MEMORY IS : $’
    MSG2 DB 10,13,’REVERSE STRING IS : $’
DATA ENDS

DISPLAY MACRO MSG

    MOV AH,9
    LEA DX,MSG
    INT 21H
ENDM   
CODE SEGMENT

    ASSUME CS:CODE,DS:DATA
START:

        MOV AX,DATA

        MOV DS,AX                

        DISPLAY MSG1

        DISPLAY NUM1

        LEA SI,NUM2
        LEA DI,NUM1
        ADD DI,5

        MOV CX,6
REVERSE:

        MOV AL,[DI]

        MOV [SI],AL
        INC SI
        DEC DI
        LOOP REVERSE

        DISPLAY MSG2

        DISPLAY STR2

        MOV AH,4CH
        INT 21H
CODE ENDS

END START

1 个答案:

答案 0 :(得分:1)

NUM1 DW NUM1 DW 12321  ;This produces the error
ARRY DB 10 DUP (0)

首先将这些定义更改为:

NUM1 DB '123456$'  ;$ is needed for displaying it later
NUM2 DB '......$'  ;$ is needed for displaying it later
DISPLAY MSG2
DISPLAY STR2  ; This label does not exist

接下来通过引用现有标签显示结果:

DISPLAY MSG2
DISPLAY NUM2