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 16-bits Assembleur Discussion :

Lire 5 nombres entiers et afficher le maximum


Sujet :

x86 16-bits Assembleur

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 24
    Points : 34
    Points
    34
    Par défaut Lire 5 nombres entiers et afficher le maximum
    Bonjour

    j'ai un exercice qui lit 5 nombres entiers et affiche le maximum d'entre eux dans la ligne qui suit.
    J'ai essayé de faire la solution mais lors de l'exécution, quand je tape le nombre, il m'affiche "illegal command".

  2. #2
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 090
    Points
    43 090
    Par défaut
    Il te faut mettre' des points d'arrêt pour voir ou ça coince.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 24
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Il te faut mettre' des points d'arrêt pour voir ou ça coince.
    Merci pour votre aide mais svp je voudrais plus d'explications sur les points d'arrêt.

  4. #4
    Responsable Systèmes


    Homme Profil pro
    Gestion de parcs informatique
    Inscrit en
    Août 2011
    Messages
    17 446
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Gestion de parcs informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Août 2011
    Messages : 17 446
    Points : 43 090
    Points
    43 090
    Par défaut
    Depuis un débogueur, un point d'arrêt stoppe le programme à l'endroit de ton choix et permet de voir le contenu des registres à ce moment.

    Ça peut aussi se présenter sous la forme de code supplémentaire affichant un message "on est à tel endroit", ce qui permet de repérer ou se trouve l’erreur.
    Ma page sur developpez.com : http://chrtophe.developpez.com/ (avec mes articles)
    Mon article sur le P2V, mon article sur le cloud
    Consultez nos FAQ : Windows, Linux, Virtualisation

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 24
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par chrtophe Voir le message
    Depuis un débogueur, un point d'arrêt stoppe le programme à l'endroit de ton choix et permet de voir le contenu des registres à ce moment.

    Ça peut aussi se présenter sous la forme de code supplémentaire affichant un message "on est à tel endroit", ce qui permet de repérer ou se trouve l’erreur.
    Merci j'ai trouvé l'erreur : c'est une faute de frappe. Mais lors de l'exécution, il m'affiche successivement les trois messages et quand je tape le nombre il m'affiche "illegal command".

  6. #6
    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,

    Peut-on au moins voir le code, SVP ?

    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]

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 24
    Points : 34
    Points
    34
    Par défaut
    Citation Envoyé par Alcatîz Voir le message
    Bonjour,

    Peut-on au moins voir le code, SVP ?

    ouii bien sur
    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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    pile segment para stack 'pile'
       db 256 dup (0)
    pile ends
     
    data segment 
    nombre dw ?
     
    message db "entrez le premier nembre svp",'$'
     
    message2 db "entrez un autre nbr sv",'$'
     
    message3 db "le plus grand nombre est",'$'
     
    data ends 
     
    code segment 
    phrase proc far
         assume cs:code
         assume ds:data
         assume ss:pile
         mov ax,data
         mov ds,ax
     
        mov dx,offset message 
        mov ah,9
        int 21h
     
     
        mov ah,8
        int 21h
        sub al,48
     
    mov nombre,ax
    mov cx,4
    boucle:
       mov dx,offset message2
       mov ah,9
       int 21h
     
     
       mov ah,8
       int 21h
     
     
      CMP ax,nombre
     
      JG save
     
    save:
      sub al,48
      mov nombre,ax
     
    loop boucle
     
     
      mov dx,offset message3
      mov ah,9
      int 21h
     
     
     mov dl,13
     mov ah,2
     int 21h
     
     
     mov dx,nombre
     add dx,48
     
     mov ah,2
     int 21h
     
     mov ah,4ch
     int 21h
     
     
    phrase endp
    code ends 
    end phrase

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    informatique
    Inscrit en
    Janvier 2018
    Messages
    24
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 27
    Localisation : Algérie

    Informations professionnelles :
    Activité : informatique

    Informations forums :
    Inscription : Janvier 2018
    Messages : 24
    Points : 34
    Points
    34
    Par défaut que fait cette partie du 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
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    pile segment para stack 'pile'
    db 256 dup (0)
    pile ends
     
    data segment 
    nombre dw ?
     
    message db "entrez le premier nembre svp",'$'
     
    message2 db "entrez un autre nbr sv",'$'
     
    message3 db "le plus grand nombre est",'$'
     
    data ends 
     
    code segment 
    phrase proc far
    assume cs:code
    assume ds:data
    assume ss:pile
    mov ax,data
    mov ds,ax
     
    mov dx,offset message 
    mov ah,9
    int 21h
     
     
    mov ah,8
    int 21h
    sub al,48
     
    mov nombre,ax
    mov cx,4
    boucle:
    mov dx,offset message2
    mov ah,9
    int 21h
     
     
    mov ah,8
    int 21h
     
     
    CMP ax,nombre
     
    JG save
     
    save:
    sub al,48
    mov nombre,ax
     
    loop boucle
     
     
    mov dx,offset message3
    mov ah,9
    int 21h
     
     
    mov dl,13
    mov ah,2
    int 21h
     
     
    mov dx,nombre
    add dx,48
     
    mov ah,2
    int 21h
     
    mov ah,4ch
    int 21h
     
     
    phrase endp
    code ends
    end phrase

  9. #9
    Membre chevronné
    Avatar de Forthman
    Homme Profil pro
    conception mécanique
    Inscrit en
    Janvier 2005
    Messages
    702
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Tarn et Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2005
    Messages : 702
    Points : 1 905
    Points
    1 905
    Par défaut
    Bonjour Hannal,

    - affiche "message" avec la fonction 9h de l'interruption 21h
    - attend une touche au clavier avec la fonction 8h de l'interruption 21h
    - enlève 48 au code ascii de la touche
    - place cette valeur (plus la valeur parasite contenue dans AH) dans "nombre"
    - debut de boucle (effectuée 4 fois) ------------------------------
    affiche "message2"
    attente d'une touche
    compare le code ASCII + valeur parasite contenue dans AH avec la valeur contenue dans "nombre"
    si cette valeur est plus grande, saute au label "save" sinon... continue sur le label
    enlève 48 au code ascii de la touche contenu dans AL
    place cette nouvelle valeur + valeur parasite de AH dans "nombre"
    Fin de Boucle --------------------------------
    - affiche "message3"
    - retourne au début de la ligne avec le code ASCII 13 (sans passer à la ligne suivante)
    - affiche le code ASCII contenu dans "nombre"+48
    - termine le programme

    En même temps, il suffit de le compiler pour voir non ?

  10. #10
    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
    Voici quelques considérations sur le code.

    Tout d'abord, la déclaration de la procédure est superflue. La structure de ton segment de code peut être simplifiée en :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    code        segment 
     
    phrase:     mov         ax,data
                mov         ds,ax
     
    [ . . . ]
     
    code        ends 
     
    end         phrase
    Comme tu lis un seul caractère (un seul octet) au clavier, qui est stocké dans le registre dl, il n'y a pas de raison de déclarer la variable nombre comme mot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    nombre      db          ?   ; db au lieu de dw
    Il y a un souci au niveau du test, dans la boucle : tel que tu l'écris, l'octet lu est sauvé dans tous les cas, même s'il n'est pas plus grand que la variable nombre. Le test devrait être remplacé par quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    boucle:
     
    [ . . . ]
     
                cmp         ax,nombre   ; al, si nombre est déclaré comme octet
                jng         suite
     
                sub         al,48
                mov         nombre,ax   ; al (même remarque)
     
    suite:      loop        boucle
    Ainsi, si l'octet lu n'est pas plus grand que nombre, alors on saute la sauvegarde et on boucle.

    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]

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

Discussions similaires

  1. [XL-2003] Ne pas afficher décimales des nombres entiers
    Par NikoBe dans le forum Excel
    Réponses: 25
    Dernier message: 23/10/2023, 11h18
  2. Réponses: 1
    Dernier message: 07/04/2016, 09h11
  3. afficher des nombres entiers depuis un fichier
    Par AddicTion dans le forum Débuter
    Réponses: 4
    Dernier message: 03/06/2011, 10h39
  4. Format des nombres entiers, séparateurs de milliers
    Par zazaraignée dans le forum Langage
    Réponses: 2
    Dernier message: 26/10/2005, 01h25
  5. [LG]Former un nombre entier à partir de chiffre naturel.
    Par lecanardjaune dans le forum Langage
    Réponses: 2
    Dernier message: 12/11/2003, 22h36

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