Как получить целочисленный ввод со сборкой

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. Он может сделать это немного более эффективно