Как преобразовать строку в целое число в MASM - PullRequest
1 голос
/ 04 августа 2011

Я хочу просто заставить пользователя ввести число. Я могу получить ввод (я думаю), но это строка, и мне нужно преобразовать ее в число (DWORD). Я не мог найти ничего, что сработало в MASM. Я попробовал функции C strtol и atoi, но не смог их найти. Есть ли какая-нибудь функция, которая работает в MASM? Или я должен написать свое собственное преобразование?

Я пробовал несколько включаемых файлов, но не смог получить функции C:
windows.inc
kernel32.inc
user32.inc
msvcrt.inc

Ответы [ 2 ]

1 голос
/ 04 августа 2011

Прошло более 20 лет с тех пор, как я использовал MASM, поэтому я немного заржавел.Алгоритм довольно прост.

  • Предположим, что ваша строка в ASCII
  • Начало в конце строки
  • Вам нужно будет разделить каждый символ отстрока и вычтите 30H из нее, чтобы получить цифру
  • сохранить эту цифру в регистре
  • вычислить вашу следующую степень десяти
  • Каждый раз, когда вы перемещаете один символ влево и получаете эторазряд умножить на следующую степень десяти
  • добавить в аккумулятор

Например, целое число

31H 32H 33H

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

Бинго!

Если число представляет собой двойное число, вам нужно справиться аналогичным образом.

0 голосов
/ 18 мая 2012

Я набрал atoi PROTO C strptr:DWORD, а затем смог позвонить atoi.

...