print int as ascii in der 64-Bit-Assembly bei & t Gleitkommazahlenfehler

Ich habe ein Solo-Programm geschrieben, um herauszufinden, wie das geht. Früher habe ich der zu druckenden Zahl 48 hinzugefügt, aber jetzt, wenn ich Zahlen größer als 9 bekomme, reicht das nicht mehr aus.

So sollte das folgende Programm 23 in mein Temp setzen, vergleicht 23 mit 10, wenn es kleiner als 10 ist, kann ich drucken, sonst setze das Temp in rax weg, setze 10 in r11 und dividiere 23 durch 10. Setze das Ergebnis von rax in temp und noch einmal überprüfen. Ich muss noch eine Möglichkeit hinzufügen, um die früheren Nummern abzurufen, aber als erstes zuerst. Habe ich nicht verstanden, was passiert, das Ergebnis ist float number error

#include <stdio.h>          #Inkludera standard I/O

.data                   #Specifiera data
temp:           .quad   0
temp2:          .quad   0

.text   

  .global main
main:
movq    $23, temp
jmp check

check:
cmpq    $10, $temp
jl  under10
movq    $temp, %rax
movq    $10, %r11
divq    %r11
movq    %rax,temp
jmp check

under10:
addq    $48, temp
movq    $temp,%rdi
call    puts

Antworten auf die Frage(2)

Ihre Antwort auf die Frage