Bonjour,
je débute un peu en assembleur et j'essaie de faire un programme qui lit le début d'un fichier dont le nom est entré par l'utilisateur.

Voici le code :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
; Instruction de compilation : 
; nasm -f elf dcat.asm
; ld -o dcat dcat.o
 
segment .data				; variables initialisées constantes
	buflen: dd 254
	readlen: dd 254
	err: dd 128
 
	error:     db 'error open',10    
	errorLen:  equ $-error    
segment .bss
	buf:		resb	254
	read:	resb	254
	lerr: resb 128
segment .text				; équivalent de main() mais c'est pas une fonction
	global _start
 
errorf:		;si on ne peut pas ouvrir le fichier
 
	mov eax,4 			;syscall 4 => write
	mov ebx,1				;1 => STDOUT
	mov ecx,error			;what ? error
	mov edx,errorLen		;length? errorLen	
	int 80h				;execute
 
	mov eax,1				;syscall 1 => exit
	mov ebx,0				;error code => 0
	int 80h				;execute
	ret					;end
 
readf:		;si on a ouvert le fichier
 
	mov ebx,eax			; move file descriptor in ebx
	mov eax,3				;syscall 3 => read
	mov ecx,read			;put in read
	mov edx,readlen		;length
	int 80h				;execute
 
	mov eax,4				;syscall 4 => write
	mov ebx,1				;where? STDOUT
	int 80h				;execute
						;ecx , edx already defined
	mov eax,1				;syscall 1 => exit
	mov ebx,0				;error code
	int 80h				;execute
	ret					;ret
 
 
_start:					; programme en lui même
 
	mov eax,3				;syscall 3 => read
	mov ebx,0				; Where? STDIN
	mov ecx,buf			;save in buf
	mov edx,buflen			;length of buf
	int 80h				;execute
 
	mov eax,5				;syscall 5 => open
	mov ebx,buf			;open what ?buf
	mov ecx,0				;flag => read only
	int 80h				;execute
 
	test	eax,-1			; an error ?
	je	errorf			;yes jump to error
	jne	readf				;no read file
Je n'ai aucune sortie comme quoi le fichier n'existe pas (qu'il existe ou pas d'ailleurs).
Enfin bref je ne sais pas où est mon erreur.
Pouvez-vous m'aider ou me mettre sur la voie ?

Merci
++