Assembly 为什么Kip Irvine';s readChar不回显用户输入,而readInt回显用户输入?

Assembly 为什么Kip Irvine';s readChar不回显用户输入,而readInt回显用户输入?,assembly,x86,masm,irvine32,Assembly,X86,Masm,Irvine32,我有一个关于Kip Irvine的include32文件的问题 所以他有一个叫做readChar和readInt的调用,我敢肯定你们中的很多人都使用过,虽然它们的描述与它们的工作非常相似,但它们的行为不同 例如,考虑下面的部分代码(我刚刚提出它,如果有任何错误,抱歉) 在我使用readInt的地方,允许用户输入一个int来输入数字,然后按enter键,它会显示您输入的内容 当我使用readChar时,用户只需按他想要的字符,然后在没有确认的情况下(无需按enter键)将其存储到al中,并且它不会

我有一个关于Kip Irvine的include32文件的问题

所以他有一个叫做readChar和readInt的调用,我敢肯定你们中的很多人都使用过,虽然它们的描述与它们的工作非常相似,但它们的行为不同

例如,考虑下面的部分代码(我刚刚提出它,如果有任何错误,抱歉)

在我使用readInt的地方,允许用户输入一个int来输入数字,然后按enter键,它会显示您输入的内容

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

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

但是为什么它不显示您为readChar输入的内容呢


我试过阅读irvine32.inc文件,但它不是很详细,我也试过在网上查找它,但找不到它是如何工作的完整代码(它指向什么寄存器等)。因此,如果有人能向我解释一下,我会非常感激,或者向我介绍一种替代方法,让用户看到他输入的内容(无需再次打印他输入的内容)。

因为readchar的大小是固定的,readint(十进制)可能由多个字符组成?系统/运行时不知道“1”后面是否跟有另一个“1”来表示“11”,因此需要输入


这是很久以前的方式。

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

是的,我理解,但这不是我的问题。我的问题是为什么它不显示用户输入的内容@marcoAh,好吧,我错过了。你是说为什么它没有回声。我查看了标题,它具有DOS库的常见模式。我希望readchar和readkey能够相互呼应,而不是相互呼应,我想你也是这样做的。这就留下了bug或者有文档记录但违反直觉的特性。是的,很抱歉我不知道它的正确术语。Idk,但我真的很烦,没有回声。我想我会自己制作一个程序来阅读chars。谢谢@您可以在
readChar
之后调用
writeChar
手动打印。一个原因是默认行为允许更丰富的输入。键入密码时不显示密码(例如,打印星号或不显示密码)
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