公開前の編集:それで、私は、私が全体の気紛れな質問をタイプアウトして、きちんと整理した後でのみ、それを自分でかなり理解しました。何の役にも立たないように、とにかくこれを投稿し、これが実際に正しいかどうかを尋ね、提案/コメントを求めています。私はまだ一つのことについて確信が持てません。
了解しました。私はコンピュータサイエンスの初心者です。今、私はアセンブリ言語と機械語のプログラミングについて学んでいます。これは宿題の質問ですので、私が理解するのを手伝ってください、私の顔に答えを投げないでください。条件付き分岐(ループ)を使用して、1から20までの数値の合計(答えは210)を取得するプログラムを作成しようとしています。
使用されるニーモニックは次のとおりです。
L for load
A for Add
St for store
BC for branch on condition
C for compare
CH for channel
ものを入れるための10個のレジスタがあります。
したがって、基本的に2つのことを行う必要があります。1)1から20(1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + ... + 20)までのすべての数値を合計する方法を見つけます。ループの作成を含み、2)カウンターを作成して、20に達したときに停止することを認識します。これは正しいですか??
START L R1,COUNT
A R1,ONE
ST R1,COUNT
A R2,COUNT
C R1,TWENTY
BC 3,???
ST R2,SUM
CH SUM
STOP
COUNT DC F'0'
ONE DC F'1'
TWENTY DC F'20'
END START
これはすべて、次のように言っています。COUNTの内容(最初は0)をRegister1にロードします。ONE(1)の内容をRegister1に追加します。Register1にあるこの新しい番号をCOUNTに格納します。この新しい番号をRegister2に追加します。COUNTの内容をTWENTY(20)の内容と比較します。COUNT内の数が20以下の場合は分岐(/ repeat)します(3は条件コードです)。カウンターが20に達すると、条件が破られ、命令は次の行に進みます。レジスタ2にある数値(現在は210)を変数SUMに格納します。次に、CHannelを呼び出して、I/OデバイスにSUMの内容を表示します。その後、停止します。
さて...最初に分岐/戻るように指定する方法がわからないので、カウンターが20に達するまでこのプロセスを繰り返します。COUNTを0として指定する必要があるかどうかもわかりません。
助けてくれてありがとう。