在Assembly中将ascii字符转换为十进制,以与WriteConsoleA和readConsoleA一起使用

时间:2011-04-26 03:48:49

标签: assembly masm

我正在解决问题。我需要从用户输入数字,然后对输入执行算术计算。我现在只是一个初学者,直到现在我还没有使用任何IO,除了在一个程序中要求用户输入名称并使用WriteConsoleA和ReadConsoleA打印输出。我在google上找不到任何帮助,关于如何将ascii字符转换为十进制输入以及如何将小数转换为ascii用于输出。在使用任何库函数之前,我更愿意手动执行此操作。我无法想象如何将单个字符转换为字符串,反之亦然。这是怎么做到的? 是的,如果你在答案中编写代码,如果可能的话,使用masm语法,因为我不熟悉其他汇编程序的语法。 谢谢!! Devjeet

1 个答案:

答案 0 :(得分:2)

如果在al上有一个像31h一样的小数,你可以只为它们添加30h来将它们转换为ASCII字符,如(AL = 31h):

mov cl,al
shr al, 4 // now al = 03
add al,30h // now al = 33h, which if you output is the ASCII character '3'

现在,您可以恢复al并向左移动4以获得下一个'1'并再次添加30h。我希望这说明了这一点:)