Répondre à la discussion
Affichage des résultats 1 à 5 sur 5

Programmation Assembleur



  1. #1
    JuL164

    Programmation Assembleur


    ------

    Bonjour

    Je recherche quelqu'un qui pourrait "analyser" des petits programmes en assembleur

    Mon niveau en ASM est pour ainsi dire nul. Les programmes que j'ai vus sont basiques mais malgrés tout je n'y comprends pas grand chose

    Si quelqu'un pouvait m'ajouter des commentaires pour expliquer ce a quoi chaque ligne correspond ce serait
    vraiment super

    Par exemple ce code est sensé passer les minuscules d'une chaine de caracteres en majuscules sans toucher au reste

    Code:
    DATA            SEGMENT         'DATA'
    
    DATA            ENDS
    
    DGROUP          GROUP           DATA
    
    CODE SEGMENT                    'CODE'
    
                    ASSUME          CS:CODE,DS:DGROUP
    
                    PUBLIC          MAJ
    
    MAJ             PROC            FAR
    
                    PUSH            BP
    
                    MOV             BP,SP
    
                    MOV             BX,[BP]+6
    
    ;               DX = LENGTH
    
                    MOV             DX,[BX]
    
    ;               BX = ADRESSE CODE
    
                    MOV             BX,[BX]+2
    
                    MOV             DI,00
    
    BCLE:           MOV             AL,[BX+DI]
    
                    CMP             AL,97
    
                    JL              SUITE
    
                    CMP             AL,122
    
                    JG              SUITE
    
    CONVERT:        SUB             AL,32
    
                    MOV             [BX+DI],AL
    
    SUITE:          INC             DI
    
                    DEC             DX
    
                    CMP             DX,00
    
                    JG              BCLE
    
    RETURN:         POP             BP
    
                    RET             2
    
    MAJ             ENDP
    
    CODE            ENDS
    
    		END
    J'espere que je n'en demande pas trop ( sinon dites le moi )

    Merci

    -----

  2. Publicité
  3. #2
    transhuman

    Re : Programmation Assembleur

    bonjour ,

    "CMP AL,122
    JG SUITE
    CONVERT: SUB AL,32"

    Ces 3 instructions comparent le contenu du registre AL au code ascii 122 et si AL contient plus que 122 on soustrait 32 à AL ( étiquette convert ) ce qui assure le passage en minuscule.

    "DX = LENGTH
    MOV DX,[BX]" DX doit contenir la longueur de la chaine de caractères à convertir. Cette longueur est copiée à l'adresse contenue dans BX( [BX] les [ ] indiquent l'adressage indirect.

    "MOV BX,[BX]+2
    MOV DI,00
    BCLE: MOV AL,[BX+DI]
    "
    On met dans BX la valeur de BX +2 ( le pourquoi m'échappe, peut être parce que la chaine commence par un caractère spécial ?
    On met DI à 0
    A l'étiquette BCLE on copie dans AL le contenu pointé par BX+DI ( adressage indirect encore ).
    Ensuite on transforme AL en minuscule ( cf premiere explication.

    " INC DI
    DEC DX
    CMP DX,00
    JG BCLE"

    Enfin on incremente DI, on décrémente DX et tant que DX est supérieur à zero on boucle sur BCLE.

    "POP BP
    RET 2
    "
    Avant de retourner au programme qui a appeler cette routine on restaure son adresse dans la pile puis on sort.

    Voilà ce programme est en fait une boucle :
    Pour DI=1 à longueur( chaine )
    Si chaine(DI) compris entre 97 et 122
    chaine( DI ) = chaine ( DI ) -32
    fin si
    fin pour

  4. #3
    transhuman

    Re : Programmation Assembleur

    rectificatif
    Citation Envoyé par transhuman
    bonjour ,

    "CMP AL,122
    JG SUITE
    CONVERT: SUB AL,32"

    Ces 3 instructions comparent le contenu du registre AL au code ascii 122 et si AL contient moins que 122 on soustrait 32 à AL ( étiquette convert ) ce qui assure le passage en minuscule.
    Désolé pour l'erreur.

  5. #4
    JuL164

    Re : Programmation Assembleur

    Merci pour les commentaires transhuman

    J'vais essayer d'analyser ca a tete reposée

  6. A voir en vidéo sur Futura
  7. #5
    cricri

    Re : Programmation Assembleur

    convertie en majuscule pas en minuscule

Discussions similaires

  1. assembleur
    Par superdj76 dans le forum Électronique
    Réponses: 3
    Dernier message: 10/09/2007, 06h10
  2. Programmation assembleur sur PIC
    Par Makim dans le forum Électronique
    Réponses: 0
    Dernier message: 19/03/2007, 09h38
  3. Programmation assembleur pour TI-89 titanium
    Par Valenten dans le forum Logiciel - Software - Open Source
    Réponses: 3
    Dernier message: 22/08/2006, 20h06
  4. C ou assembleur ?
    Par KHEOPS1982 dans le forum Électronique
    Réponses: 3
    Dernier message: 08/03/2006, 20h08
  5. Assembleur
    Par vae- dans le forum Logiciel - Software - Open Source
    Réponses: 4
    Dernier message: 18/02/2006, 12h21
Découvrez nos comparatifs produits sur l'informatique et les technologies.