汇编程序8086:半输入数组和单个输出

时间:2013-10-25 08:50:26

标签: arrays assembly input output x86-16

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

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上运行此程序。任何人都可以理解为什么我只能插入五个值而我只得到一个值作为输出?我该如何解决这些问题?

1 个答案:

答案 0 :(得分:1)

根据你所描述的行为,我猜你正在输入这样的东西:

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

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

如果您只是输入此内容:

1234567890

程序以

响应

0987654321

正如所料。