如何在MASM中使用单线读取两个整数(使用Irvine lib)?

时间:2017-05-25 12:29:24

标签: assembly masm

    Include Irvine32.inc

    .data
    prompt BYTE "Input two integers: ", 0
    intA DWORD ?
    intB DWORD ?

    .code
    MAIN PROC
    mov edx, OFFSEt prompt
    call WriteString
    call ReadDec
    mov intA, eax

call ReadDec
mov intB, eax

add eax, intA
call WriteDec

exit
MAIN ENDP
END MAIN

当我输入" 1 - >输入 - > 2"按顺序,该程序运作良好。 但是当我输入" 1 - >空格键 - > 2 - >输入"按顺序,程序输出1 我该如何解决?

1 个答案:

答案 0 :(得分:2)

ReadDec docs

  

从标准输入读取一个32位无符号十进制整数,停止   按Enter键时。在a之前发生的所有有效数字   非数字字符将转换为整数值。领导   空格被忽略。

因此,根据"1 2<enter>"的定义,输入1应返回整数值ReadDec

如果要处理这样的输入,则必须将其作为字符串读取,将其解析为单独的小字符串(每个数字),然后您可以调用Irvine lib ParseDecimal32(或{ {1}}),或创建自己的字符串 - &gt;数字转换。