Привет, мне нужно разработать конвертер шестнадцатеричного числа в двоичное число в Assembly GAS. Теперь у меня есть следующее:Assembly GAS Converter hex для двоичного кода
.align 32
SYSEXIT = 1
SYSREAD = 3
SYSWRITE = 4
STDOUT = 1
EXIT_SUCCESS = 0
Input_SIZE = 10
.bss
.lcomm Input, Input_SIZE
.data
msg: .ascii "Give hex number:\n"
msg_len = . - msg
newline: .ascii "\n"
newline_len = . - newline
.text
.global _start
_start:
mov $SYSWRITE, %eax
mov $STDOUT, %ebx
mov $msg, %ecx
mov $msg_len, %edx
int $0x80
mov $SYSREAD, %eax
mov $STDOUT, %ebx
mov $Input, %ecx
mov $Input_SIZE, %edx
int $0x80
movl %eax, %edi
movl %eax, %edx
dec %edx
loop1:
cmpl $1, %edx
je loop1_exit
movb Input(,%edx,1), %al
cmpb 0x00, %al
jl number
cmpb 0x41, %al
jg big_char
cmpb 0x46, %al
jl big_char
cmpb 0x61, %al
jg low_char
cmpb 0x66, %al
jl low_char
jmp loop1
number:
sub $'0', %al
big_char:
cmpb $'a', %al
jae low_char
sub $'A', %al
add $10, %al
low_char:
sub $'a', %al
add $10, %al
loop1_exit:
movl $SYSWRITE, %eax
movl $STDOUT, %ebx
movl $newline, %ecx
movl $newline_len, %edx
int $0x80
movl $SYSEXIT, %eax
movl $EXIT_SUCCESS, %ebx
int $0x80
И у меня нет раллий идеи, что делать дальше. Как напечатать мой двоичный номер в программе. Мне кажется, мне нужен второй цикл для печати каждого двоичного кода. Это то, что у меня сейчас, хорошо?