Как получить целочисленный ввод со сборкой
Iam учебная сборка, и я узнал, как получить пользовательский ввод с помощью
mov al, 3 ; system call number (sys_read)
xor bl, bl ; file descriptor 0 (stdin)
mov rcx, buf ; buffer to store input
mov dl, 4 ; Lenght of buffer
int 0x80 ; interrupt
но на самом деле получается строка справа?
мой вопрос: как получить целочисленное значение...
поэтому, если я набираю 100, как мне получить значение 64h, поэтому я могу добавить, вычесть и т.д.
вместо строки с каждым байтом является ascii-представлением числа
а затем как мне вывести значение, подобное 64h на экран, чтобы оно отображало 100?
Мне не нужен код только для некоторых рекомендаций
Спасибо!
Ответы
Ответ 1
Когда у вас есть представление ASCII, вы можете просто создать цифру результата по цифре, используя тот факт, что цифры закодированы по порядку. В псевдокоде, читающем слева направо (т.е. Начиная с самой значащей цифры):
- инициализировать
result
до 0
- для каждой цифры
c
, result *= 10; result += (c - '0');
-
result
содержит числовое значение строки
Ответ 2
Посмотрите на двоично-кодированные десятичные знаки BCD. Он может сделать это немного более эффективно