ニャオニャオ21世紀

雑記と、MSXぽいアプリ開発と、ゲーム関係、身体(身体意識など)、ライフハックほか雑記を綴っています

MSXマシン語入門(Z80 アセンブラ・機械語) 勉強レポート 第11回  引数を渡す

MSXマシン語勉強レポート 第11回は、

引数を使って、BASICからマシン語のプログラムに値を渡します。

 

使うのはUSR関数の引数です。

 

USR関数に引数をつけてマシン語をコール

         ⬇︎ 

HLレジスタに入っているアドレスの2バイト先に、引数として渡した数が入る

 

む?よくわからないなぁ?

引数がメモリのどこかに入るんですね。

それがどこか?

HLレジスタの値->(アドレスが入っているですね)

そのアドレス +  2バイト先(2バイト先と3バイト先に) 

 

なぜHLが示すアドレスの値をそのまま使わないのかなぁ。怒!

 

                                                               メモリ

HLレジスタ(アドレス) ーーーー>|  0          |     1     |      2     |     3      |

                                                              | HLのアドレス |            |      値が入る       |

 

2バイト先には、その引数の値(整数)の  下位8ビット

その次のアドレスの、3バイト先には、その引数の値(整数)の 上位8ビットが

入るそうです。

 

マシン語の方でHLの値を+2してやって、そのアドレスに入っている値を、

どこかのレジスタにいれてやって使えばいいんですね!

 

サンプルでは、

INC   HL

INC   HL

LD    C  ,  (HL)

ってやっています。

 

ちなみにINCって、インクリメントの意味で、1増やすってことです。

マシン語の命令は、LDしかやっていませんでしたね。

近いうちに他の命令もやらないといけないなぁ。

 

この引数渡しも、一度理解すれば簡単ですね。

この引数渡しを何に使うかですが、

例えば画面をスクロールさせたい時に、

メモリ内のマップデータをVRAMに転送する時に必要です。

(マップデータが入っている、最初のアドレスをマシン語に送ってやる)

 

MSX FANにもこの引数渡しが書いてありました。

 

中古ゲーム雑誌MSX・FAN 1991年6月号 

<駿河屋>

(この号にメモリからVRAMへのブロック転送が書かれていて、そこに出てくる)

 

でも今日やった本と少しちがうような?

USR関数の引数は、

メモリのアドレス &HF7F8

に入っているとあります。はて?

どちらが正しいのか?

実際にやってみないとわからないですねぇ;

 

こういうの困るな〜。

 

試行錯誤しながらやっていきます!

では〜。

 

 中古MSXハードMSX2本体 FS-A1F(黒)

      <駿河屋>

 

 

www.nyaonyao21.com

 

          

「ニャオニャオ21世紀は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイト宣伝プログラムである、Amazonアソシエイト・プログラムの参加者です。」

当サイトは第三者配信の広告サービス「Google Adsense グーグルアドセンス」を利用しています。 広告配信事業者は、ユーザーの興味に応じた広告を表示するためにCookie(クッキー)を使用することがあります。 Cookie(クッキー)を無効にする設定およびGoogleアドセンスに関する詳細は「広告 – ポリシーと規約 – Google」をご覧ください