Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Futur Membre du Club
    Profil pro mouloud jean
    Inscrit en
    septembre 2010
    Messages
    92
    Détails du profil
    Informations personnelles :
    Nom : mouloud jean

    Informations forums :
    Inscription : septembre 2010
    Messages : 92
    Points : 18
    Points
    18

    Par défaut Rectangle avec des étoiles

    Bonjour,
    Je souhaite coder en assembleur un programme qui prend deux valeurs données par l'utilisateur : le nombre de colonnes et de lignes pour créer un rectangle de ces dimensions formé d'étoiles. Mon code ne marche pas, le programme ne saute jamais à la ligne, voilà ce que j'ai fait :

    Code :
    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
     
     
    ldi r1,'l'
    st r1,[r1+255]
    ldi r1,'i'
    st r1,[r1+255]
    ldi r1,'g'
    st r1,[r1+255]
    ldi r1,'n'
    st r1,[r1+255]
    ldi r1,'e'
    st r1,[r1+255]
    ldi r1,'s'
    st r1,[r1+255]
    ldi r1,' '
    st r1,[r1+255]
    ldi r1,'?'
    st r1,[r1+255]
    ldi r1,13
    st r1,[r1+255]
    ld r1,[r1+255]  //on prend la valeur pour les lignes
    st r1,[r1+255]
    ldi r2,13
    st r2,[r2+255]
     
    ldi r2,'c'
    st r2,[r2+255]
    ldi r2,'o'
    st r2,[r2+255]
    ldi r2,'l'
    st r2,[r2+255]
    ldi r2,'o'
    st r2,[r2+255]
    ldi r2,'n'
    st r2,[r2+255]
    ldi r2,'n'
    st r2,[r2+255]
    ldi r2,'e'
    st r2,[r2+255]
    ldi r2,'s'
    st r2,[r2+255]
    ldi r2,' '
    st r2,[r2+255]
    ldi r2,'?'
    st r2,[r2+255]
    ldi r2,13
    st r2,[r2+255]
    ld r2,[r2+255]  //on prends la valeur des colonnes                         
    st r2,[r2+255]
    ldi r3,13
    st r3,[r3+255]
     
    ldi r0,0
    ldi r4,1
    ldi r5,0
     
    loop :  beq r0, r1, end_loop //on compare le nombre de lignes avec un indice qui sera incrémenté jusqu'à valoir le nombre de lignes
    	ldi r5,0
     
    loop2 : beq r5,r2, sautligne  //on compare le nombre de colonnes avec un indice qui sera incrémenté jusqu'à valoir le nombre de colonnes
    	add r5, r5, r4    // on incrémente r5, indice comparé aux nombre de colonnes
    	ldi r3,'*'
    	st r3,[r3+255] // on affiche '*'
    	j loop2
     
    sautligne :	ldi r6,13
    		st r6,[r6+255]  //on fait un saut de ligne
    		add r0, r0, r4 // on incrémente r0, indice comparé aux nombre de lignes
    		j loop
     
    end_loop :
    	j end_loop

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Chercheur d'emploi
    Inscrit en
    septembre 2007
    Messages
    5 311
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Chercheur d'emploi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : septembre 2007
    Messages : 5 311
    Points : 12 273
    Points
    12 273

    Par défaut

    Bonsoir,

    Merci de prendre quelques minutes pour lire la FAQ du forum assembleur avant d'écrire.

    En particulier, on ne sait pas sur quelle architecture tu travailles.

  3. #3
    Nouveau Membre du Club
    Homme Profil pro
    Ingénieur Temps Réel Multitâche
    Inscrit en
    décembre 2007
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur Temps Réel Multitâche
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : décembre 2007
    Messages : 41
    Points : 26
    Points
    26

    Par défaut

    Bonjour. Ton branch equal R0,R1 me semble étrange.
    Tu fais un LOAD immediate de R0 avec 0 mais pour R1 il semble avoir été rechargé par un load relatif loin avant. Cela me semble bizzard!

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •