質問

私の教科書からの練習として、私はインテル8080の組み立てでプログラムをコーディングしようとしています。そのようなもの、正確なこと:

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

と:

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

アセンブリ初心者として、しかし、6つのレジスタのみを使用して、そしてまた言語自体の不親切さを念頭に置いて、このような何かの実装を想像する本当に苦労しています。私が思い付くことができる最高のものは:

最初の行は6 * height-1であることが問題ありません。問題は後で始まりますが、それは私たちが追跡しなければならないようです(私は彼らに単純さのためにいくつかの名前を与えるでしょう):
- outer_margin - 外側の三角形の左右のスペースの数。それは各行で増加しますが、上の三角形を描いた後は機能しませんので、登録に新しい値が必要です。 - inner_spaces - 三角形間のスペース。最初に、彼らは3,5、その後3人の三角形の底に達するまで3人になるでしょう - 問題は最初の2行の後にもっと頻繁に現れる必要があるということです。 - up_star_counter - ライン内の上の上の三角形のそれぞれに印刷する星の追跡トラック
- down_star_counter - 同じですが、下の行の三角形のために
- row - 底の三角形を印刷するラベルのセットを使用し始めるときに行を知っているように、行を追跡する
- height - ユーザーが入力したときの各三角形の高さを保持する変数

それは6つのレジスタ(そしてフリーアキュムレータ)のための6つの値を与え、楽観的ではありません。またその実施は悪夢のようです。どういうわけかタスクを簡素化するか、それが見えるのと同じくらい一生懸命になっているのでしょうか。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top