好的,我要做的就是在 Linux 的 x86-64 程序集中打印一个数字(最多 18446744073709551616)。谁能告诉我为什么这个程序不起作用?所发生的只是它运行和退出。感谢您提供的所有帮助!
GLOBAL _start
SECTION .text
;PRINTCHAR
; MOV [LETTER],RAX
; 
; MOV RAX,1
; MOV RDI,1
; MOV RSI,LETTER
; MOV RDX,1
; SYSCALL
; RET
PRINTDEC:
 MOV R9,18          ;SO IT CAN POINT TO THE END OF THE BUFFER
 MOV R10,0
 START:
 MOV R8,NUMBER
 MOV RDX,0          ;CLEAR OUT RDX TO AVOID ERRORS
 MOV RBX,10         ;WHAT TO DIVIDE BY
 DIV RBX            ;DIVIDE OUR NUMBER BY TEN
 CMP RAX,0          ;IF OUR QUOTENT IS ZERO THEN WE ARE DONE, PRINT THE BUFFER
 JE END
 JMP ADDBUF
 ADDBUF:
  ADD R8,R9         ;MOV TO THE CURRENT LOCATION IN OUR BUFFER
  ADD RDX,0x30
;  ADD R8,R10
  MOV [R8],RDX      ;MOV THE LAST NUMBER IN OUR BUFFER TO RDX
  DEC R9
  INC R10
  JMP START
 END:
 ADD R8,R9          ;add the very last digit
 MOV [R8],RDX
 INC R10
 MOV RAX,1
 MOV RDI,1
 MOV RSI,R8
 MOV RDX,R10
 SYSCALL
 RET
_start:
 MOV RAX,55
 CALL PRINTDEC
 MOV RAX,60
 MOV RDI,0
 SYSCALL
SECTION .bss
 LETTER: RESB 1
 NUMBER: RESB 19