QCM Pile et appels de fonctions/Corrige affiche

De Ensiwiki
Révision de 19 mai 2010 à 08:25 par Moym (discussion | contributions) (Nouvelle page : <pre> .globl main main: pushl %ebp movl %esp, %ebp pushl %ebx subl $(8+4), %esp andl $-16, %esp movl $chaine, %ecx // On n'utilise que %bl, mais on remplit // le reste de...)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher
.globl main

main:
	pushl %ebp
	movl %esp, %ebp
	pushl %ebx
	subl $(8+4), %esp
	andl $-16, %esp

	movl $chaine, %ecx
	
	// On n'utilise que %bl, mais on remplit
	// le reste de %ebx avec des 0.
	movl $0, %ebx
while:
	cmpb $0, (%ecx)
	je fin_while
	movb (%ecx), %bl
	movl $fmt, (%esp)
	movl %ebx, 4(%esp)
	movl %ecx, 8(%esp)
	call printf
	movl 8(%esp), %ecx
	incl %ecx // équivalent à addl $1, %ecx
	jmp while

fin_while:
	movl -4(%ebp), %ebx
	leave
	ret
.data
chaine: .asciz "Hello"
fmt:	.asciz "%c"