我遇到了麻烦。我需要编写一个函数,它将打印有符号整数作为未签名的STDIO。所以用'-1'函数应该写'18446744073709551615'因为它是0b11111111111111111 ... 1。我的函数只能写0b000 ... 0到0b0111 ... 1的数字。你能告诉我原理它应该如何运作?
print_uint:
mov rax, 1
mov rbx, 10
mov r10, 0
.loop: mul rbx
inc r10
cmp rax, r9
jb .loop
.tg: mov rax, rdi
add r10, intbuf
dec r10
mov rdi, r10
.div:
cqo
div rbx
add byte[rdi], 30h
add byte[rdi], dl
dec rdi
cmp rax, 0
je .finish
jmp .div
.finish:
mov rdi, intbuf
call print_string
call purge_intbuf
ret