Ich habe versucht, eine ganze Zahl von Stdin zu lesen und nach dem Schreiben in stdout, aber das einzige, was ich beende ist Schreiben einer einfachen Hallo Welt. Dies ist der Code, den ich habe:Lesen und schreiben und Integer in Assembly ATT
.global _start
_start:
push %ebp
movl %esp,%ebp
subl $4,%esp
#Read
mov $3,%eax #READ
mov $0,%ebx #STDIN
mov -4(%ebp),%ecx
mov $1,%edx
int $0x80
#Write call
mov $4,%eax #WRITE
mov $1,%ebx #STDOUT
mov -4(%ebp),%ecx
mov $1,%edx
int $0x80
mov $1,%eax #exit
mov $0,%ebx # exit code
int $0x80
Vielen Dank im Voraus und zu hart sie nicht auf mir, weil diese meine ersten Schritte in der Montage sind :)
Obwohl Nate Antwort befasst sich mit einem Thema, das andere kommt wirklich darauf an, was Sie do.You beabsichtigen, müssen sich bewusst sein, dass 'sys_read' syscall über 'int 0x80' ** konvertiert ** ASCII-Zeichen, die Zahlen darstellen, nicht und speichert die Ganzzahl im Ziel. Buchstäblich, was bei -4 (% ebp) gespeichert wird, sind die ASCII-Zeichen, aus denen die Zahl besteht, nicht der Ganzzahlwert. Wenn Sie es in eine ganze Zahl konvertieren müssen, können Sie einige Operationen und Berechnungen daran vornehmen und dann schreiben Dann brauchst du Code, um ASCII in Integer zu konvertieren, wenn du liest, und Integer in ASCII, bevor du schreibst –
Effektiv 'sys_read' liest nur ASCII-Zeichen in einen Puffer. und 'sys_write' schreibt nur einen Puffer, der ASCII-Zeichen enthält. –
Danke für die zusätzlichen Informationen. – Miguel