課題8の上にまたがる課題9 | タイトルが決まらぬ

タイトルが決まらぬ

ゲーム→ピクミンブルーム、FGO、真・女神転生各種
アニメ→まどまぎ(神)、勇気爆発バーンブレイバーン、メイドインアビス、がっこうぐらし、DRIFTERS他なんでも好き
音楽→へびめた、Kate Bush

8が出来たと思ったら、9は「8を踏まえて…」という問題でした。(´;ω;`)ブワッ
 

;ASM課題9:指定バイトを指定番地への転送
;
;入力としてDEレジスタにソースアドレスが設定され、
;HLレジスタにディスティネーションアドレスが定さている。
;又データ転送数をCレジスタに設定されているものとして、
;ソースアドレスからディスティネーションアドレスに
;指定バイト数分転送するプログラムの作成。
;・サブルーチン名:TRANS
;・input: DEレジスタ
;・input: Cレジスタ
;・input: HLレジスタ
;・使用レジスタは全て保障されること。



キタキタ来ました踏み台昇降。
8が出来ないと9は出来ません。
「これ、コピーするだけでいいんじゃ?」と思ったものの
8を番地降順(バックからヤる)で作ってしまった為、全部書き直すハメにw
素直に正常位…もとい、普通に組んでれば良かったね。

------------------------------
BUF1 EQU 200H
  ;BUF1というラベルの部分は全て200Hに置き換える(あとから番地変更する場合はココだけ書きかえればOK)
BUF2 EQU 220H

ORG 100H
  ;100H番地からスタート
LD DE,BUF1
  ;DEにソースアドレス格納
LD HL,BUF2
  ;HLにディスティネーションアドレス格納
LD C,10
  ;Cに指定バイト数回格納
CALL TRANS
  ;TRANSへジャンプ

HALT
  ;停止
NOP
  ;待機


TRANS:
LD A,(DE)
  ;AにDEの内容を格納
LD (HL),A
  ;HLのアドレスにAの内容を格納

INC DE
  ;DEのアドレスを1増やす
INC HL
  ;HLのアドレスを1増やす
DEC C
  ;Bの回数を1減らす

JR NZ,TRANS
  ;0でなければ繰り返し
RET

ORG 200H
  ;200Hから始める
;BUF1 DS 10
  ;10バイト確保
BUF1: DB 1,100,255,26,64,124,8,95,98,224
  ;サンプル値で埋める

ORG 220H
  ;220Hから始める
BUF2 DS 10
  ;10バイト確保

END
-------------------------------
まだデバグしてないよ♪らららん。
てか、今ここに書いてて気づいたが、恐らく講師が添削入力したままで書き直してなかった部分が…w
私はクセでラベルのあとに「:(コロン)」を入れるのですが、スペース入れときゃいいらしいです。
恐らくCSSでのクセですね。^^

とゆーかですよ。
このデバッグという作業。
なんでか知らんがフロッピーベースの作業なんです。

デバッガー(エミュレータ?)がフロッピーに入ってて、説明書もなぜかフロッピーベースの処理方法のみ。
しかもUSBフロッピードライブが2台しかなく、とてもじゃないけど気軽にデバッグができないんです。
(なのでドライブが空くまで~と思ってたら1日終わることもw)
このプログラム、勝手にフラッシュメモリに入れたらアカンの?
動かないのかなぁ…。ドライブ指定をFとかにすりゃいいだけだと思うんだけど…。
まあ、フロッピーに入ってるプログラムがカチャカチャいいながら動くのって懐かしくて好きですけどね。^^