【问题标题】:Assembler 8086: Half input array and one single output汇编器 8086:半输入阵列和一个单输出
【发布时间】:2013-11-04 07:16:47
【问题描述】:

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

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

【问题讨论】:

    标签: arrays assembly input output x86-16


    【解决方案1】:

    从你描述的行为来看,我猜你输入的是这样的:

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

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

    如果你只是输入这个:

    1234567890

    程序响应

    0987654321

    正如预期的那样。

    【讨论】:

    • 是的,你完全正确。非常感谢您的帮助。
    猜你喜欢
    • 2013-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 1970-01-01
    • 1970-01-01
    • 2014-12-06
    • 2012-01-04
    相关资源
    最近更新 更多