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

Autres architectures Assembleur Discussion :

[Pep8] Addition qui ne s'arrête pas


Sujet :

Autres architectures Assembleur

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2015
    Messages : 30
    Points : 17
    Points
    17
    Par défaut [Pep8] Addition qui ne s'arrête pas
    Bonjour !

    J'ai mon code qui s'additionne sans arrêt, même quand je vais au menu principal il garde l'ancienne somme et ajoute la nouvelle valeur.
    J'ai cherché le problème sans succès.
    Est-ce que vous pourriez m'aider ?

    Aussi, dans mes calculs, j'aimerais juste que 1+10 fasse un black jack mais malheureusement toute autre valeur qui donne 21 affiche aussi un black jack.
    J'ai essayé avec le nombre de tours de jeu mais je ne sais pas comment le relier à mon code.

    J'attends vos différentes suggestions.
    Merci.
    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
     
    menu:    STRO    menuText,d  ; print(menu)
             LDA     0,i         
             CHARI   char,d      
             LDBYTEA char,d      ;   A = getChar();
             CPA     'q',i       
             BREQ    arret       ;arret et met le registre a 0
             CPA     't',i       ;si la lettre entrÈe est t
             BREQ    loop        
             CPA     'c',i       
             BREQ    casino      
             STRO    msg_err,d   
             BR      arret       
    casino:  DECI    mise,d      ;
             LDA     mise,i      ; if (mise ==0){ menu }
             CPA     0,i         
             BREQ    menu        ; else { erreur}
             BR      loop        
    loop:    STRO    msg1,d      
             ; LDA     0,i        
             DECI    nombre,d 
             LDA     somme,d     
     
             ADDA    nombre,d    ;sum
             STA     somme,d     
            LDA     nombre,d    
           ;LDA     0,i    
          CPA     1,i         ;if (nombre==1){
     
            BREQ    evalBlac    
           ; LDA     somme,d     ;(si la somme=21) { black Jack}
            CPA     21,i        
             BREQ    eval 
     
             LDA     somme,d     
             CPA     21,i        
             BRGT    perdu       ;if(somme>21) {print perdu}
     
             LDA     nombre,d    
             CPA     0,i         
             BREQ    reste       ;if(nombre=0) {print reste }
             LDA     nombre,d    ;    tmp = deci
             CPA     0,i         
             BRLT    reponse1    ;   if(num < 1||num >10)
             CPA     10,i        
             BRGT    reponse1    
             BR      loop        
             BR      menu        
    tourjeu: LDA     tr,d        ; on evalue le nombre de tour de jeu
             ADDA    1,i         
             STA     tr,d        
             BR      loop        
    AS:      LDA     as,d        ;evalue le nombre d'as qui doit egale a 1 ou 0
             ADDA    1,i         ; as++
             STA     as,d        
             BR loop
    evalBlac:LDA     somme,d     
             ADDA    10,i        ; somme+10
             STA     somme,d     
             CPA     21,i        ;if (somme+10 <=21 && ace==1)
             BRLE    evalSum     ;if (somme+10 <=21 && ace==1){somme= somme +10)
             BR      menu
    evalSum: LDA     somme,d     
             STA     somme,d     
             BR      loop        
    eval:    LDA     somme,d     ;si evalsum+10=21 affiche blackjack
             STA     somme,d     
             CPA     21,i        
             BREQ    blakjack    
             BR menu
    reponse1:STRO    rep1,d      
             BR      menu        
    perdu:   DECO    somme,d     
             STRO    perd,d      
             BR      menu
     
    reste:   DECO    somme,d     
             STRO    rest,d      
             BR      menu
     
    blakjack:DECO    somme,d     
             STRO    black,d     
             BR      menu
             br loop        
    arret:   STOP                
             STOP                
    char:    .BLOCK  1           
    as:      .BLOCK  2           
    tr:      .BLOCK  2           
    mise:    .BLOCK  2           
    somme:   .BLOCK  2           ;
    nombre:  .BLOCK  2           
    ;tab: .BLOCK  10          ; 5 ÈlÈments de 2 octets #2h5a
    num1:    .WORD   0           
    num2:    .WORD   0           
    sum:     .BLOCK  2           
    rep1:    .ASCII  " tiens voila tes carte hypocrite,tricheur\n\x00"
    msg_err: .ASCII  "erreur: mode invalide\x00"
    perd:    .ASCII  " perdu\n\x00"
    rest:    .ASCII  " reste\n\x00"
    black:   .ASCII  " Black Jack\n\x00"
    msg1:    .ASCII  "entrer un nombre compris entre 1 a 10\n\x00"
    msg3:    .ASCII  "perdu\n\x00"
    menuText:.ASCII  "******************\n"
             .ASCII  "*     M E N U    *\n"
             .ASCII  "* t-mode entrainement      *\n"
             .ASCII  "* c-mode casino    *\n"
             .ASCII  "* q-quitter    *\n"
             .ASCII  "******************\n"
             .ASCII  "Votre choix : \x00"
             .END
    Je travaille juste en mode t

  2. #2
    Expert éminent sénior
    Avatar de Kannagi
    Homme Profil pro
    cyber-paléontologue
    Inscrit en
    Mai 2010
    Messages
    3 214
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cyber-paléontologue

    Informations forums :
    Inscription : Mai 2010
    Messages : 3 214
    Points : 10 140
    Points
    10 140
    Par défaut
    Niveau assembleur ça ressemble a du 6502 (mais avec une syntaxe encore plus lourde :/ ).

    L'autre point c'est le style indentation qui est quasiment inexistant (et donc le code source est moyennement lisible du coup), je sais que les vieux code source assembleur (des années 80-90) faisait comme toi niveau style mais bon les gars ne demandai pas de l'aide donc c'est pas grave

    La plupart des codes sources assembleur récent respecte un style indentation par exemple :
    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
     
    	ldx MEM_TEMPFUNC
    	cpx #0
    	beq +
    		lda s_perso+_etat,x
    		cmp #4
    		beq +
    			lda #4
    			sta s_perso+_etat,x
     
    			lda MEM_TEMP+10
    			sta s_perso+_gdirection,x
     
    			rep #$20
    			lda s_perso+_x,x
    			sta s_perso+_dgt,x
    			sep #$20
    	+:
    Pour ton aide j'ai pas non plus trouvé une erreur pour ma part fait comme en C , fout des printf jusqu'a regarder/voir si les valeur sont les bonnes.

    si c'est compris , ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    casino:  DECI    mise,d      ;
             LDA     mise,i      ; if (mise ==0){ menu }
             CPA     0,i         
             BREQ    menu        ; else { erreur}
    Ne va pas au menu ? (parce que si il y allait il additionnerait pas les valeurs).

Discussions similaires

  1. As typewriter qui ne s'arrête pas !
    Par Mirlipili dans le forum ActionScript 1 & ActionScript 2
    Réponses: 4
    Dernier message: 22/06/2007, 11h10
  2. [SQL] une requête qui ne s'arrête pas ou si loin
    Par lodan dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/10/2006, 14h36
  3. Lancer une tâche planifiée qui ne s'arrête pas
    Par bart64 dans le forum Windows Serveur
    Réponses: 12
    Dernier message: 02/10/2006, 19h33
  4. [FLASH MX2004] Clip qui ne s'arrête pas
    Par romain starck dans le forum ActionScript 1 & ActionScript 2
    Réponses: 8
    Dernier message: 10/05/2006, 19h43
  5. [VBA-E]une boucle qui ne s'arrète pas
    Par vivelesgnous dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 15/02/2006, 18h05

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