所以我正在读取用户的 8 位输入,并将其保存到一个变量中。例如:
输入一个 8 位十六进制数:1ABC5678
所以,然后我循环遍历 1ABC5678 十六进制数,从数字 0-9 中减去 48,从 AF 中减去 55,以获得输入的数字表示。但这似乎是错误的。我的目标是将 8 位十六进制转换为八进制。我已经知道如何从二进制转换为八进制,那就是通过屏蔽和移动 32 位二进制数字。但我的问题是我获取二进制文件的方法是错误的。
我在英特尔 IA-32 上编码。x86。
更新数据
现在我得到了一个 32 位二进制变量名二进制文件。我想将其转换为八进制。关于如何移动 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