Преобразование символа ascii в десятичный в Assembly для использования с WriteConsoleA и readConsoleA - PullRequest
1 голос
/ 26 апреля 2011

Я в исправлении.Мне нужно ввести числа от пользователя, а затем выполнить арифметические вычисления на входе.Сейчас я только начинающий, и до сих пор я не использовал никаких операций ввода-вывода, кроме как в программе, которая запрашивает у пользователя имя и печатает вывод, используя WriteConsoleA и ReadConsoleA.Я не смог найти никакой помощи в Google, о том, как преобразовать символы ASCII в десятичные дроби для ввода и как преобразовать десятичные знаки в ASCII для вывода.Я бы предпочел сделать это вручную, прежде чем использовать какие-либо функции библиотеки.Я не могу понять, как преобразовать один символ в строку и наоборот.Как это сделать?И да, если вы напишите код в ответах, если возможно, используйте синтаксис masm, так как я не знаком с синтаксисом других ассемблеров.Спасибо!!Devjeet

1 Ответ

2 голосов
/ 26 апреля 2011

Если у вас есть десятичное число, например 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'

Теперь вы можете восстановить всеи сдвиньте влево на 4, чтобы получить следующий «1» и снова добавьте 30ч.Я надеюсь, что это иллюстрирует смысл:)

...