Ich möchte ein Programm schreiben, die die Zeichenfolge, die Sie schreiben, zurückgibt. Aber es druckt immer ohne das erste Zeichen. Außerdem gibt es nichts über den ersten Raum zurück.NASM - printf druckt nicht das erste Zeichen
Beispiel:
IN: test
OUT: est
Code:
extern printf, scanf, exit
global main
section .text
main:
push rbp
;input of string
mov rdi, format
mov rsi, string
mov rax, 0
call scanf
;output of string
mov rdi, format_out
mov rsi, qword [string]
mov rax, 0
call printf
_exit: ;end of program
pop rbp
call exit
section .data
format db "%s", 0
string db 0
format_out db "You wrote: %s", 0
ich bemerkt, dass, wenn ich string db 0
-string db
“ändern, ist es ein Fehler zeigt, aber das Programm korrekt funktioniert, den Druck der gesamten Satz der 1. Platz Leider habe ich keine Ahnung, was ich mit dieser Info machen soll Danke für die Antwort
Ich denke, 'string' ist die Variable, in der Sie die vom Benutzer eingegebene Zeichenfolge speichern. Wie viele Zeichen erwarten Sie vom Benutzer? Wie groß ist die Variable 'string'? –
Nun, ich weiß es nicht. Sagen wir, dass 20 die maximale Anzahl von Zeichen ist. Was mache ich jetzt? – Zumalo
Dann sollten Sie mehr als 1 Byte für die Zeichenfolge zuweisen, genug für Ihre 20 max –