【发布时间】:2020-10-19 09:27:09
【问题描述】:
我一直在尝试在汇编中使用 ascii 字符。特别是使用扩展的 ascii 表(255 个字符)。在我的代码中,我得到两个字符,我使用 ADD 函数对它们的 ascii 值求和,然后打印相应的字符。例如,两个值的总和为 147,即字符“ô”,而 Visual Studio 告诉我相应的字符是“”。溢出标志为 1,所以我猜 Visual Studio 使用错误的 Ascii 表。我用于添加功能的字符从未超过 127,因此不应大于 255。我该怎么办?
【问题讨论】:
-
ASCII 未定义超过 127。您可能想尝试
<wchar.h>and friends -
你的意思是 x86
add指令吗?这不是一个函数,它是一个指令。但是,是的,它只是进行整数加法。设置溢出标志 (OF) 是因为添加两个正数会产生负数结果(又名 128..255 无符号数)。 teaching.idallen.com/dat2343/10f/notes/040_overflow.txt。你如何得到这个数字并不重要。mov eax, 147会产生同样的效果。 -
另外,我假设您已经知道这一点,因为您没有问,但是如果您要添加 ASCII 数字,您可以减去
'0'以更正一位数的结果。喜欢'2' + '3' - '0' = '5'。所以lea eax, [eax + ecx - '0']是一种简单的方法来做到这一点,但当然这只适用于个位数的输入和结果。
标签: c visual-studio debugging assembly ascii