gpt4 book ai didi

assembly - 如何在汇编中从用户输入多位数?

转载 作者:行者123 更新时间:2023-12-01 01:42:49 25 4
gpt4 key购买 nike

我需要找到一个可以从用户那里接收超过 1 位数字的中断。
;代码

mov [0],0
mov si,0
lop:
mov ah,1
int 21h
cmp al,'q'
je finishedInput
xor ah,ah
add [word ptr si], ax
jmp lop

finishedInput:
我已经尝试做一个无限循环,每次都使用
mov ah,1 
int 21h
组合。当用户按下“q”时,无限循环停止。
然而,我几乎确信我已经看到了一个代码,它用中断来做同样的事情。
我想停止使用这个块并使用可以更好地工作的短中断

最佳答案

在大多数情况下,如果将输入作为字符串接收然后转换为整数,会更容易。 int 21h/ah=0ah可以将缓冲输入读取到指向 DS:DX 的字符串中.

一旦有了它,您就可以获取该字符串并将其转换为整数。这听起来像是一个家庭作业问题,所以这里不是给你代码,而是将包含基数为 10 的数字的 ASCII 字符串字符串转换为实际整数(伪代码)的高级算法:

accum = 0
i = 0
while(string[i] != '\r')
accum *= 10
accum += (string[i] - '0')
i++

健壮的代码也会检查溢出和无效字符。你在这里很幸运,因为在 ASCII 中,代表数字的字符 ('0'...'9') 是连续存储的,而 x86 有一个 FLAGS register你可以检查溢出。

关于assembly - 如何在汇编中从用户输入多位数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54696513/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com