私はfor-loopの使用を必要とするプログラムを書こうとしています。 他のウェブサイトでこのような基本的なコードの例を見つけようと、ひどい時を過ごしています。68kアセンブリの基本for-loop?
誰かが私に簡単なループを提供してもらえればいいと思います。そして、68k初心者のチュートリアルのための優れたリソースを知っていれば、下記にコメントしてください!
ありがとうございます!
私はfor-loopの使用を必要とするプログラムを書こうとしています。 他のウェブサイトでこのような基本的なコードの例を見つけようと、ひどい時を過ごしています。68kアセンブリの基本for-loop?
誰かが私に簡単なループを提供してもらえればいいと思います。そして、68k初心者のチュートリアルのための優れたリソースを知っていれば、下記にコメントしてください!
ありがとうございます!
は
[編集]リンクから
追加答え
68000が持つクエリ(Google検索での第3回結果 '68000アセンブリ')への答えをhereを参照してください。別個のアドレスレジスタとデータレジスタを持つ珍しい(ユニーク?)特性。 8つのデータレジスタD0〜D7と8つのアドレスレジスタA0〜A7があります。 A7もスタックポインタSPです。これは、68000アセンブリ言語は、どのレジスタがデータを保持し、どのアドレスを保持しているかを容易に知ることができるため、従うのが容易になる傾向があることを意味します。例えば、これは、単語の配列の合計を計算するために68000アセンブリである:EASy68Kヘルプに引用されるように、以下のように
moveq #0, d0
moveq #0, d1
moveq #5, d2
loop:
move.w (a0)+, d0
add.l d0, d1
dbra d2, loop
[/編集]
私はそのページ全体を読んだことがあります(私は先ほど述べたように、私はいくつかの研究をしました)、あなたが指している部分を具体的に指摘できますか?ありがとう。 – Blackbinary
68000の基本では、loop:partは 'for'ループです。 D2レジスタのセットをスキップしますが、DBRAはデクリメントBRAnchが0ではないため、D2が0になるまでD2をデクリメントします。 – KevinDTimm
ありがとうございます。 – Blackbinary
、68Kにおけるforループの構文は次のとおりです。
FOR[.size] op1 = op2 TO op3 [BY op4] DO[.extent]
code
ENDF
または他の言葉で
FOR[.size] op1 = op2 DOWNTO op3 [BY op4] DO[.extent]
code
ENDF
:
for.size counter_location = starting_condition to ending_condition step_size
operations to be executed each loop
end of for loop
step_sizeと.sizeは両方ともオプションです。
実際の例です。
次のコードは、0
lea uppercase, a1 ; points a1 at the start of the uppercase variable
lea $002000, a2 ; points a2 at the start of the destination address
for d1 = #1 to #26 do.s
move.b (a1)+, (a2)+
endf
; Memory locations $002000 - $002019 now contain ABCDEFGHIJKLMNOPQRSTUVYWXYZ
、次の変数 大文字dc.b「ABCDEFGHIJKLMNOPQRSTUVWXYZ」を前提とし、このループは、アドレスから26のバイトを移動させる、A1によって指されたアドレスにA2によって指さ。カウンタはd1に格納されます。ループは1で始まり(#1は10進形式の 'raw number'を示します)、毎回増加して26で終了します。 最初の行の最後にあるdo.sは、フォワードブランチのサイズつかいます。オプションでもありますが、EASy68Kでは警告が表示されます。したがって、以下のforループは、分岐条件を設定する必要がない場合にも機能します。
for d1 = #1 to #26
move.b (a1)+, (a2)+
endf
チュートリアルについては、http://mrjester.hapisan.com/04_MC68/をおすすめします。より高度なコマンドやトピックを扱うのではなく、基本/中間レベルで何が起こっているかをよく理解しています。
68000プロセッサとそのコンパイラ(任意の言語)がありますか? –
私はEasy68k(エミュレータとコンパイラ)を使用しています。 – Blackbinary