Итак, я читаю 8-значный ввод пользователя и сохраняю его в переменную. Например:
Введите 8-значный шестнадцатеричный номер: 1ABC5678.
Итак, затем я перебираю шестнадцатеричное число 1ABC5678 и вычитаю 48 из чисел 0-9 и вычитаю 55 из AF, чтобы получить числовое представление ввода. но это кажется неправильным. Моя цель - преобразовать этот 8-значный шестнадцатеричный в восьмеричный. Я уже знаю, как перейти от двоичного к восьмеричному, маскируя и сдвигая 32-битную двоичную цифру. Но моя проблема в том, что мой подход к получению двоичного файла неверен.
Я кодирую на Intel IA-32. х86.
ОБНОВЛЕНИЕ
Теперь я получил 32-битный двоичный файл для двоичного имени переменной. Я хочу преобразовать его в восьмеричное. Любые идеи о том, как сдвинуть 3 на 3, чтобы получить правильное восьмеричное число?
Это мой код до сих пор:
; Now we have the Binary digits saved into the binary variable
; Lets convert into octal
octal_init:
mov ecx, 11 ; initialize count
mov edi, octal ; point to start of new string
mov eax, [binary] ; get a character
MOV edx, 00000000000000000000000000000000b ;Clear EDX
octal_cont:
MOV dl, al
SHL dl, 5
SHR dl, 5
octal_top:
mov [edi], dl ; store char in new string
inc edi ; update dest pointer
SHR eax, 3
dec ecx ; update char count
jnz octal_cont ; loop to top if more chars
code
и др., 11011111bcode
- person Shar   schedule 15.10.2012or
введите в него новое значение. Это должно сработать. - person Mark Ransom   schedule 16.10.2012