【问题标题】:Visual studio uses the wrong ascii table?Visual Studio 使用了错误的 ascii 表?
【发布时间】: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


【解决方案1】:

根据您正在制作的项目类型(控制台应用程序、Windows 窗体应用程序),处理代码页可能非常棘手。 您必须确保您的源代码与您在应用程序中使用的代码页相同,这取决于您使用的是 ASCII、UTF8、Unicode、MBCS 等。

我不知道任何确切的来源,但你必须通过互联网阅读本地化、代码页和 ASCII、UTF8、Unicode 等等...

问候 沃尔夫冈

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多