Assembleur aucun affichage

Résolu
RenardDetermine42 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
RenardDetermine42 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   - 4 sept. 2024 à 16:16

Bonjour,

Je débute l'assembleur. Je veux faire un programme qui affiche une chaîne de caractères, sans avoir besoin d'indiquer sa longueur dans rsi.

Le programme se compile sans erreur, mais lorsque je l'exécute, rien ne s'affiche.

Savez-vous pourquoi ?

bits 64

section .data
	message db "Bonjour le monde",10,0

section .text
	global _start

%macro print 1
	mov rsi, %1 	; On place l'adresse du premier octet du message dans rsi
	call _print	; Et on appelle le label pour l'afficher
%endmacro


_start:
	print message

	mov rax, 60
	mov rdi, 0
	syscall		; Exit le programme

_print:
	mov al, [rsi]	; On place le caractère dans al
	cmp al, 0	; Si le caractère est 0 (0x00000000) alors on arrête
	je _done	; Retourner à l'exit
	
	mov rax, 1	
	mov rdi, 1
	mov rdx, 1	; On écrit le caractère
	
	inc rsi		; On accède au prochain caractère
	jmp _print	; On recommence

_done:
	ret		; Sinon on arrête

Merci d'avance pour l'aide
Linux / Firefox 130.0

1 réponse

Bruno83200_6929 Messages postés 284 Date d'inscription   Statut Membre Dernière intervention   57
 

Bonjour,

Ajout de l'instruction syscall en ligne 30 après avoir configuré les registres pour l'écriture du caractère.


1
RenardDetermine42 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   1
 

Merci beaucoup, en effet c'est aussi simple que ça. Je ne sais pas pourquoi je n'y ai pas pensé.

1