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

Assembleur Discussion :

Probleme provoquant un Overflow


Sujet :

Assembleur

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut Probleme provoquant un Overflow
    salut tout le monde ;
    je suis debutant en assembleur et j'ai un problem a resoudre ,j'ai besoin d'aide d'ici 16 avril 2013 svp
    Je vous explique mon programme :
    -Je crée une procédure qui sauvegarde l'adresse ip et cs de la routine de l’interruption 4
    -Je crée une routine qui affiche un message d'erreur s'il y a une erreur d'overflow
    -Je crée une procédure qui affiche un message
    -Je crée une procédure qui fait la somme
    -Je crée une procédure qui restaure l'état de la routine de l'int 4
    et voici mon essay :
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    DATA SEGMENT  ;Déclaration des variables
     
    mes1 db 'TP ARCHIT','$'
    mes2 db 'TP n 2','$'
    mes3 db "Veuillez appuyer sur une touche pour effectuer l'operation:$"
    msg_1 db "LE PROCESSEUR SIGNAL UN ETAT D'OVERFLOW$"
    msg_2 db "OPERATION EFFECTUE SANS ERREUR D'OVERFLOW$"
    ancien_cs dw ?
    ancien_ip dw ?
    x dw 0ffffh
    y dw 0f00fh
     
     
     
    DATA ENDS   ;Fin du data segment
    code segment 
    assume cs:code, ds:data
    start: 
    	mov ax,data
    	mov ds,ax
    	mov ax,3
        int 10h
    	mov dl,70;la colonne ou on veut apparaitre mes1
    	mov dh,1 ;la ligne ou on veut apparaitre mes1
    	mov bh,0
    	mov ah,2
    	int 10h
    	mov ah,9
    	lea dx,mes1 ;mettre dans dx l'@ effective de mes1
    	int 21H
    	mov dl,35;la colonne ou on veut apparaitre mes2
    	mov dh,5 ;la ligne ou on veut apparaitre mes2
    	mov bh,0
    	mov ah,2
    	int 10h
    	mov ah,9
    	lea dx,mes2  ;mettre dans dx l'@ effective de mes2
    	int 21H
    	mov dl,0
    	mov dh,9
    	mov bh,0
    	mov ah,2
    	int 10h
    	mov ah,9
    	lea dx,mes3  ;mettre dans dx l'@ effective de mes3
    	int 21H
    	mov ah,0ah
    	lea dx,mes3
    	int 21h 
     
    	LireAdd proc near 
    		mov ah, 35h
    		mov al, 04h
    		int 21h
    		mov ancien_ip, bx
    		mov ancien_cs, es
    		ret
    	LireAdd ENDP 
     
    	Overflow:
    	    mov ax, Data
    		mov ds, ax
    		lea dx, msg_1
            mov ah, 09h
            int 21h
    		mov ah, 01h
    		int 21h
    		iret
     
    	Deroutement proc near
    		mov ax, Data
    		mov ds, ax
    		lea dx, Overflow
    		mov al, 04h
    		mov ah, 25h
    	    int 21h
    		ret
    	Deroutement ENDP
     
    	non_overflow proc near
    		mov ax, Data
    		mov ds, ax
    		mov ah, 09h
    		lea dx, msg_2
     
    		int 21h
    		ret
    	non_overflow ENDP
     
    	Somme proc near
    		mov ax, Data
    		mov ds, ax
    		mov ax, x
    		mov bx, y
    		add ax,bx
    		ret
    	Somme ENDP
     
    	Restoration proc near
    		mov dx, ancien_ip
    		mov bx, ancien_cs
    		mov ds, bx
    		mov al, 04h
    		mov ah, 25h
    		int 21h
    		ret
    	Restoration ENDP
     
     ;progm princ 
    		mov ax,Data
    		mov ds,ax 
     
    		call LireAdd
    		call Deroutement
    		call Somme
    		jo msg
    		call non_overflow
    		msg:int 04h
    		call Restoration
    		mov ax, 4c00h ; retour au system
    		int 21h
     
    code ends
    end start

  2. #2
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2013
    Messages : 21
    Points : 25
    Points
    25
    Par défaut JE veut une boucle qui va durrer 5 secondes
    Language assembleur !!!:
    j'ai essayer avec cette boucle mais elle dure 4 seconde
    et moi je veut une qui dure 5 seconde aide svp!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     encor:mov cx,0ffffh
             boucle_externe:mov si,0ffffh
             boucle_interne:dec si
             jnz boucle_interne
             loop boucle_externe

  3. #3
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 368
    Points : 23 620
    Points
    23 620
    Par défaut
    Il faut que tu comprennes que la durée d'exécution de ton code va dépendre de l'architecture que tu utilises. Ce même programme exécuté sur un PC des années 80 ne se terminerait qu'au bout de plusieurs heures.

    Si tu veux allonger la durée de ta boucle sur une machine récente, tu n'as pas le choix : il faut ajouter une troisième boucle imbriquée. Regarde bien comment se déroulent les deux boucles déjà existantes. As-tu bien compris comment ce programme fonctionne ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème en provoquant l'overflow!
    Par floufen dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 06/05/2011, 17h17
  2. Probleme d'overflow sur le port série
    Par jimay dans le forum MATLAB
    Réponses: 2
    Dernier message: 29/03/2007, 11h23
  3. probleme de overflow:auto;
    Par stars333 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 23/03/2007, 16h19
  4. probleme overflow : auto
    Par cedre22 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 23/02/2006, 11h41

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