为什么Kip Irvine的readChar不回显用户输入,而readInt呢?

时间:2014-05-17 20:07:19

标签: assembly x86 masm irvine32

我对Kip Irvine的include32文件有疑问。

所以他有一个名为readChar和readInt的调用,我非常肯定你们很多人已经使用过,虽然他们对他们所做的事情有着非常相似的描述,但他们的行为却截然不同。

例如,考虑以下部分代码(如果有任何错误,我会动起来抱歉)

Title    Sample     (Sample.asm)

include Irvine32.inc

.data
query   byte   "Enter something", 0
a       byte   ?
b       byte   ?

.code

main proc

mov edx, offset query
call writeString
call readChar
mov a, al

mov edx, offset query
call writeString
call readInt
mov b, eax

我在哪里使用readInt允许用户输入一个int来输入数字,然后必须按回车键,它会显示你输入的内容。

当我使用readChar时,用户只需按下他想要的字符,然后将其存储到al中而无需确认(无需按Enter)并且它不会显示您输入的内容

我知道因为char只能是一个单一的char,所以你不需要确认。 小数可以超过一位数,因此需要确认。

但是为什么它没有显示你为readChar输入的内容?

我已经尝试过阅读irvine32.inc文件,但它并不是非常详细,我也试过在网上寻找它并且找不到整个代码它是如何工作的(它注册的是什么等)。因此,如果有人可以向我解释,我真的很感激它,或者向我呈现一种让用户看到他输入的内容的替代方式(无需再打印出他输入的内容。)

2 个答案:

答案 0 :(得分:1)

作者在Irvine32.inc中有一个WriteChar程序,用于调用ReadChar程序。示例可以在文本的第6.6章,x86处理器的汇编语言7e,第223页中找到.ReadChar从键盘读取单个字符,并返回AL寄存器中的字符。 WriteChar在AL寄存器中接收char值以写入控制台。

答案 1 :(得分:0)

因为readchar具有固定大小,并且readint(十进制)可能包含多个字符?系统/运行时不知道“1”后跟另一个“1”是否为“11”,因此需要输入。

这是自以往几天以来的方式。