0

我试图编译并运行这个简单的程序:

DIM EQU 10
    .MODEL small
    .STACK
    .DATA
VETT DB DIM DUP(?)
    .CODE
    .STARTUP
    MOV CX,DIM
    MOV DI,0
    MOV AH,1
lab1:   INT 21H
        MOV VETT[DI], AL
        INC DI
        DEC CX
        CMP CX,0
        JNZ lab1
        MOV CX,DIM
        MOV AH,2
lab2:   DEC DI
        MOV DL, VETT[DI]
        INT 21H
        DEC CX
        CMP CX,0
        JNZ lab2
    .EXIT
    END

当我尝试在数组中插入值时,我只能插入五个值而不是十个,正如我在第一行“DIM EQU 10”中声明的那样。然后,在那之后,程序只显示插入到数组中的第一个值。

我在 Mac OS X 10.9 上使用 DOSBOX 0.74 在 MASM611 上运行这个程序。任何人都可以理解为什么我只能插入五个值而我只能得到一个值作为输出?我该如何解决这些问题?

4

1 回答 1

1

从你描述的行为来看,我猜你正在输入这样的东西:

1 <Return>
2 <Return>
3 <Return>
4 <Return>
5 <Return>

但是, INT 21H / AH=01H不会等待按下 Return 键,因此每次按下 Return 时都会被视为一个附加字符。

如果你只是输入这个:

1234567890

程序响应

0987654321

正如预期的那样。

于 2013-10-25T09:14:57.537 回答