在十进制基本NASM中打印unsigned int

时间:2015-08-05 14:30:06

标签: assembly nasm

我遇到了麻烦。我需要编写一个函数,它将打印有符号整数作为未签名的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

0 个答案:

没有答案