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 :

Transformer une suite de caractères en la valeur correspondante


Sujet :

x86 16-bits Assembleur

  1. #1
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 187
    Points : 73
    Points
    73
    Par défaut Transformer une suite de caractères en la valeur correspondante
    J'ai réalisé un programme en assembleur 8086 qui permet de transformer une suite de caractères en la valeur correspondante (dans ax) mais quand je compile je reçois des messages d'erreurs, j'ai pas réussi à les corriger :-(

    Est-ce que quelqu'un peut m'aider ?

    Et si quelqu'un a un autre code qui permet de faire la même chose ce sera vraiment sympa de le poster
    (NB: j'ai pas fait la fonction qui affiche ax)

    Merci d'avance

    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
    bits 16 
    org 100h
     
    segment.bss
    somme reb 2
    quot resb 1
    chiffre resb 10
     
    segment .data
    txt db 'veuillez saisir un chiffre svp $'
     
    segment .text
     
    mov ah,9
    mov dx,txt
    int 21h                    ;afficher (entrer un chiffre svp)
     
    mov ah,0ah
    mov dx,chiffre           ;lire les aractères
    mov byte[chiffre],4    ;taille max
    int 21h           
     
    mov word[somme],0
    mov bx,0
    mov cl,byte[chiffre+1]
    mov si,2
    mov dl,100
     
     
    ici:
    mov al,[chiffre+si]             ;stocker le 1er caractere dans al
    sub al,48                         ;valeur correspondante
    mul dl                             ;resultat dans ax
    add somme,ax                  ;nouvelle somme=ancienne somme+resultat
     
    mov al,dl
    mov ah,0                        ;coeff dans ax
    div quot                         ;diviser ax par quot :nouveau coeff
    mov quot ,al
     
    dec cl                           ;decrementer cl pou passer au caractere suivant
    inc si
    cmp cl,1
    je fin                             ;si egal on s'en va
    loop ici
     
    fin:
    mov ah,07
    int 21h
    mov ax,4c00h
    int 21h

  2. #2
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 187
    Points : 73
    Points
    73
    Par défaut
    j'ai réussi à faire la fct qui affiche ax mais j'ai tjrs pas réussi à transformer une suite de caractère en la valeur correspondante :
    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
     
    mov cx,4 ; 4*4 bits pour AX (2*4 pour AL,8*4 pour EAX)
    LOOP:
    push cx 
    rol ax,4 ; décale à la première éxecution du loop les 4 bits de
    ; poids forts de AX
    ; dans les 4 bits de poids faibles de AL car ils devront
    ; être afficher en premier et ainsi de suite lors des
    ; autres boucles ...
     
    push ax ; Sauve AX
    and al,$0f ; Ne garde que les 4 bits de poids faibles de AL
    cmp al,10 ; si < 10 c'est un chiffre
    jb CHIFFRE
     
    LETTRE:
    add al,'A'-10 ; convertit en code ASCII d'une lettre
    jmp AFFICHE
     
    CHIFFRE:
    add al,'0' ; convertit en code ASCII d'un chiffre
     
    AFFICHE:
    mov dl,al
    mov ah,2
    int 21h ; affiche le code ASCII
     
    pop ax ; Restaure AX
     
    pop cx ; Idem à push CX
    loop LOOP

  3. #3
    Membre confirmé Avatar de dapounet
    Profil pro
    Étudiant
    Inscrit en
    Juillet 2007
    Messages
    469
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2007
    Messages : 469
    Points : 567
    Points
    567
    Par défaut
    Voilà un algorithme qui devrait fonctionner :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    n <- 0
    chaine <- adresse de la chaîne à convertir
     
    tant qu'on a pas atteint la fin de la chaîne
      récupérer le caractère à gauche dans la chaîne
      obtenir sa valeur numérique
      n <- n*10 + chiffre obtenu à l'étape précédente
      chaine <- chaine + 1 (pour passer au caractère suivant)
    :wq

  4. #4
    Membre régulier
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2008
    Messages
    187
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2008
    Messages : 187
    Points : 73
    Points
    73
    Par défaut
    ok je vais essayer de le traduire merci

Discussions similaires

  1. Réponses: 3
    Dernier message: 12/06/2006, 11h18
  2. contraire de LIKE pour exclure une suite de caractères
    Par cortex024 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 15/05/2006, 12h35
  3. [VBA-E] Vérifier si une suite de caractère est présente
    Par Mut dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 21/03/2006, 10h44
  4. Réponses: 2
    Dernier message: 03/10/2005, 16h23
  5. Réponses: 2
    Dernier message: 14/01/2005, 15h40

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