Assembleur aucun affichage

Résolu
RenardDetermine42 Messages postés 2 Date d'inscription mercredi 4 septembre 2024 Statut Membre Dernière intervention 4 septembre 2024 - 4 sept. 2024 à 14:05
RenardDetermine42 Messages postés 2 Date d'inscription mercredi 4 septembre 2024 Statut Membre Dernière intervention 4 septembre 2024 - 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 282 Date d'inscription jeudi 18 juin 2020 Statut Membre Dernière intervention 23 octobre 2024 57
4 sept. 2024 à 15:41

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 mercredi 4 septembre 2024 Statut Membre Dernière intervention 4 septembre 2024 1
4 sept. 2024 à 16:16

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

1