IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

x86 32-bits / 64-bits Assembleur Discussion :

Sauts inconditionnels et conditionnels : segmentation fault


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau membre du Club Avatar de legend666
    Étudiant
    Inscrit en
    Mars 2004
    Messages
    54
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2004
    Messages : 54
    Points : 39
    Points
    39
    Par défaut Sauts inconditionnels et conditionnels : segmentation fault
    Salut !

    J'essaye d'apprendre l'assembleur x86 grâce au tutoriel suivant : http://beuss.developpez.com/tutoriels/pcasm/ . J'essaye d'utiliser les sauts inconditionnels et conditionnels :
    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
     
    %include "include/asm_io.inc"
     
    segment .data
    	hi			db	"Bienvenue !",0
    	choice		db	"1 Addition !! 2 Soustraction !! 3 Multiplication !! 4 Division",0
    	quest		db	"Votre choix ?    ",0
    	addi		db	"Addition.",0
     
    segment .bss
    		; nothing
     
    segment .text
    	global asm_main
     
     
    asm_main:
    	enter	0,0	; initialisation
    	pusha
     
    	mov eax, hi
    	call print_string
     
    	call print_nl
    	call print_nl
     
    	mov eax, choice
    	call print_string
     
    	call print_nl
    	mov eax, quest
    	call print_string
     
    	call read_int				; quelle operation faire
    	cmp eax, 1
    	jmp addition
    	je addition
     
     
    	popa
    	mov	eax, 0	; retour au C
    	leave
    	ret
     
    addition :
    	mov eax, addi
    	call print_string
    	call print_nl
    Compilation aucun problème mais à l'exécution : lorque le programme arrive à la fin du label addition, segmentation fault et le programme s'arrete. La faute doit être toute bête mais je ne vois pas.


    Merci d'avance.

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 937
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 937
    Points : 59 417
    Points
    59 417
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Si rien ne suit le code que tu as posté, le programme ne s'arrête pas correctement car le processeur continue à exécuter tout ce qu'il trouve en mémoire après ta dernière instruction (donc, il se met à exécuter n'importe quoi).

    Tu devrais plutôt faire une procédure addition, appelée par un call, qui retourne proprement au code appelant.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

Discussions similaires

  1. Pb segmentation fault avec glutinit()
    Par pipistrelle dans le forum GLUT
    Réponses: 2
    Dernier message: 17/11/2004, 23h17
  2. [SDL_Image] Img_Load : segmentation fault ....
    Par Mathieu.J dans le forum OpenGL
    Réponses: 6
    Dernier message: 19/10/2004, 23h52
  3. [REDHAT] Segmentation fault systematique
    Par mela dans le forum RedHat / CentOS / Fedora
    Réponses: 2
    Dernier message: 21/09/2004, 06h05
  4. Réponses: 13
    Dernier message: 13/07/2004, 15h41
  5. Comment contrer la "segmentation fault" ?
    Par guillaume_pfr dans le forum C
    Réponses: 15
    Dernier message: 08/08/2003, 13h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo