Я написал программу сборки для отображения факториала числа, следующего за AT и t синтаксисом. Но это не работает. Вот мой код
.text
.globl _start
_start:
movq $5,%rcx
movq $5,%rax
Repeat: #function to calculate factorial
decq %rcx
cmp $0,%rcx
je print
imul %rcx,%rax
cmp $1,%rcx
jne Repeat
# Now result of factorial stored in rax
print:
xorq %rsi, %rsi
# function to print integer result digit by digit by pushing in
#stack
loop:
movq $0, %rdx
movq $10, %rbx
divq %rbx
addq $48, %rdx
pushq %rdx
incq %rsi
cmpq $0, %rax
jz next
jmp loop
next:
cmpq $0, %rsi
jz bye
popq %rcx
decq %rsi
movq $4, %rax
movq $1, %rbx
movq $1, %rdx
int $0x80
addq $4, %rsp
jmp next
bye:
movq $1,%rax
movq $0, %rbx
int $0x80
.data
num : .byte 5
Эта программа ничего не печатает, я также использовал gdb для визуализации ее работы до тех пор, пока функция цикла, но когда она появится в следующем, какое-то случайное значение начнет вводиться в различные регистры. Помогите мне отлаживать, чтобы он мог печатать факториал.