Domanda

Così come esercizio dal mio libro di testo, sto cercando di codificare un programma in Assembly per Intel 8080 che stampierà un'immagine scalabile di tre triangoli rivolti verso il basso nella riga superiore e due rivolti verso l'alto nella riga in basso. Qualcosa del genere, per essere preciso:

*****************************
 *******   *******   *******
  *****     *****     *****
   ***   *   ***   *   ***
    *   ***   *   ***   *
       *****     *****
      *******   *******
     *******************
(when user selects the height variable = 5)
.

E:

*****************************************  
 ***********   ***********   ***********
  *********     *********     *********  
   *******   *   *******   *   *******
    *****   ***   *****   ***   ***** 
     ***   *****   ***   *****   ***
      *   *******   *   *******   *
         *********     *********
        ***********   ***********
       ****************************
(when user selects the height variable = 7)
.

Come assemblaggio-novizio, però, sto avendo un momento molto difficile immaginando l'implementazione di qualcosa come questo usando solo sei registri e tenendo presente anche la scortesia della lingua stessa. Il meglio che potrei inventare è:

Sappiamo che la prima riga è 6 * altezza-1 quindi nessun problema con quello. Il problema inizia in seguito, però: sembra che dobbiamo tenere traccia (darò loro alcuni nomi per semplicità):
- outer_margin: il numero di spazi a sinistra e a destra dei triangoli esterni. Incrementa con ogni riga ma quindi non funzionerà dopo aver disegnato i triangoli superiori, quindi avremmo bisogno di un nuovo valore nel registro
- inner_spaces - spazi tra i triangoli. Innanzitutto, sarebbero stati 3, 5 e poi tre finché non arriviamo al fondo dei triangoli inferiori: il problema è che dovrebbero apparire più spesso dopo le prime due linee - up_star_counter - Biscia che acuta delle stelle da stampare per ciascuno dei triangoli superiori della linea - down_star_counter - Stesso ma per i triangoli nella riga in basso - row - Tenere traccia della riga in modo che so quando iniziare a utilizzare un set di etichette che stampiranno anche i triangoli inferiori - height - La variabile che tiene l'altezza di ciascun triangolo, come immesso dall'utente

Ciò ci dà sei valori per sei registri (e accumulatore gratuito) che non sembra troppo ottimista. Anche l'implementazione di questo sembra essere un incubo. C'è qualcosa che mi manca che in qualche modo semplificherebbe il compito o è altrettanto difficile come sembra?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top