使用 INT 21h (DOS) & 读取数字8086组装
我需要提示用户一条消息,告诉他写一个数字,然后我存储这个数字并对其进行一些操作 在 INT 21h 中搜索后,我发现了这一点:
INT 21h / AH=1 - read character from standard input, with echo, result is stored in AL.
if there is no character in the keyboard buffer, the function waits until any key is pressed.
example:
mov ah, 1
int 21h
主要问题是这只读取一个字符并将其表示为 ASCII 所以如果我需要写数字“357” 我会把它读成3、5、7
,但这不是我的目标。 有什么想法吗?
I need to prompt to user a msg that tells him to write a number , then I store this number and do some operation on it
After searching in INT 21h I found this :
INT 21h / AH=1 - read character from standard input, with echo, result is stored in AL.
if there is no character in the keyboard buffer, the function waits until any key is pressed.
example:
mov ah, 1
int 21h
The main problem that this only reads one character and represent it as ASCII
so If I need to write the number "357"
I will read it as 3 , 5 , 7
and this is not my goal .
any ideas ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
当您成功获取用户输入时,将其指针放入 ESI (ESI = 字符串的地址)
When you managed to get the user input, put the its pointer in ESI (ESI = address to the string)
获得字符串后,您必须将其转换为数字。问题是,您必须编写自己的过程才能做到这一点。这是我通常使用的(虽然是用 C 编写的):
这是解释。首先,
*ptr-- - '0'
获取数字的整数表示形式(这样'9' - '0' = 9
,然后它递减< code>ptr 以便它指向前一个字符。一旦我们知道该数字,我们就必须将其提高到 10 的幂。例如,假设输入是“357”,代码的作用是:Once you've got the string you have to convert it to number. The problem is, you have to code your own procedure to do that. This is the one I usually use (written in C though):
Here's the explanation. First of all,
*ptr-- - '0'
gets the integer representation of a number (so that'9' - '0' = 9
, then it decremenstptr
so that it points to the previous char. Once we know that number, we have to raise it to a power of 10. For example, suppose the input is '357', what the code does is: