したがって、ユーザーの8桁の入力を読み取り、それを変数に保存します。例えば:
8桁の16進数を入力してください:1ABC5678
したがって、1ABC5678の16進数をループし、0〜9の数値から48を減算し、AFから55を減算して、入力の数値表現を取得します。しかし、それは間違っているようです。私の目標は、その8桁の16進数を8進数に変換することです。私はすでに2進数から8進数に移行する方法を知っています。それは、32ビットの2進数をマスキングしてシフトすることです。しかし、私の問題は、バイナリを取得するための私のアプローチが間違っていることです。
IntelIA-32でのImコーディング。x86。
UPDAT
今、私は変数名binaryに32ビットのbinaryを取得しました。8進数に変換したい。正しい8進数を取得するために3by3をシフトする方法についてのアイデアはありますか?
これはこれまでの私のコードです:
; 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