Je veux écrire un programme qui retourne la chaîne que vous écrivez. Mais il l'imprime toujours sans le premier caractère. En outre, il ne renvoie rien après le premier espace.NASM - printf n'imprime pas le premier caractère
Exemple:
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
J'ai remarqué que si je change string db 0
-string db
», il montre une erreur, mais le programme fonctionne correctement, l'impression de la phrase entière à la Malheureusement, je n'ai aucune idée de ce qu'il faut faire avec cette info.Merci de la réponse
Je suppose que 'string' est la variable où vous stockez la chaîne entrée par l'utilisateur. Combien de caractères attendez-vous que l'utilisateur entre? Quelle est la taille de la variable 'string'? –
Eh bien, je ne sais pas. Disons que 20 est le nombre maximum de caractères. Qu'est-ce que je fais maintenant? – Zumalo
Ensuite, vous devez allouer plus de 1 octet pour la chaîne, assez pour votre 20 max –