Сборка в синтаксисе & t, возвращает целое число ascii - PullRequest
1 голос
/ 09 февраля 2012

Этот код ниже принимает двухзначное число (скажем, 12) в ASCII и должно возвращать это число как число 12. (НЕ ASCII)

mov     $IBUFF, %eax    # IBUFF stores the ASCII number 12
movl    $NUMBER, %ecx   # NUMBER will i put the number 12 (NO ASCII)

movb    (%eax), %bl     # Moves the first byte (1) to %bl
subb    $48, %bl        # Decrease %bl so it is not longer a ASCII sign.
movb    %bl, (%ecx)     # Moves this byte into the first place in NUMBER

inc %eax                # Increase IBUFF so it points to the next integer 
inc %ecx                # Increase NUMBER so it points to the next empty space

movb    (%eax), %bl     # Same as above
subb    $48, %bl        # Same as above
movb    %bl, (%ecx)     # Same as above


mov NUMBER, %eax        # Move the number 12 from NUMBER to %eax (return register)

Когда я запускаю этот код, возвращаемое значение513, а не 12. Что я делаю не так?

1 Ответ

1 голос
/ 09 февраля 2012

Вам нужно накопить результат (возможно, в регистре), умножив его на 10, а затем добавив новую цифру. Базовая база 10 представлений. То, что вы делаете, в итоге сохраняет полученные цифры в базе 256.

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