【问题标题】:How to convert string to integer in MASM如何在 MASM 中将字符串转换为整数
【发布时间】:2011-08-03 21:22:19
【问题描述】:

我只想让用户输入一个数字。我可以得到输入(我认为),但这是一个字符串,我需要将其转换为数字(DWORD)。我找不到任何在 MASM 中有效的东西。我尝试了 C 函数 strtol 和 atoi,但找不到它们。 MASM中是否有一些功能?还是我必须自己编写转换?

我尝试了几个包含文件,但无法获取 C 函数:
windows.inc
kernel32.inc
user32.inc
msvcrt.inc

【问题讨论】:

    标签: string parsing integer masm


    【解决方案1】:

    我使用 MASM 已经 20 多年了,所以我有点生疏了。不过算法非常简单。

    • 假设您的字符串是 ASCII 格式
    • 从字符串末尾开始
    • 您需要将字符串中的每个字符分开并从中减去 30H 以得到数字
    • 将该数字存储在寄存器中
    • 计算你的下一个十的幂
    • 每次向左移动一个字符并得到该数字乘以 10 的下一次幂
    • 添加到累加器

    例如整数

    31H 32H 33H

    31h-30H = 1H 32H-30H = 2H * 10 33H-30H = 3H * 10 * 10

    宾果游戏!

    如果数字代表双倍,您将需要以类似的方式处理。

    【讨论】:

    • sooo...没有功能可以为我做这件事?
    • 如果你想调用 atoi,你需要包含 C 运行时库而不是 Windows 库
    • 那会是 msvcrt.lib 吗?我尝试了 .lib 和 .inc,但它说的是未定义的符号。也许它在 .lib 中,但不在 .inc 中,我需要对其进行原型定义。
    • 好的,我去了atoi PROTO C strptr:DWORD 并包含lib'ed msvcrt.lib,它成功了!
    【解决方案2】:

    我拨打了atoi PROTO C strptr:DWORD,然后我可以拨打atoi

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-09
      • 1970-01-01
      • 1970-01-01
      • 2010-10-13
      • 1970-01-01
      相关资源
      最近更新 更多