goo blog サービス終了のお知らせ 

真・女神転生imagine-JZ13(バックアップ)

Broachで投稿していた記事のバックアップです。

ママン これわかんないよ…

2010-07-08 19:24:04 | C言語教室での出来事
お題はこちら。
------------------
;ASM課題8:固定バイト数の転送
;
;BUF1の10バイト領域のデータをBUF2の10バイト
;領域に転送するプログラムの作成
;BUF1の先頭アドレスを200H番地、BUF2の先頭アドレスを210H番地とする。
;当該プログラムの開始番地は100Hからスタートする。
;擬似命令(ORG、DB)を使用すること。
;・input: なし
;・output: なし
------------------

途中は判るんです。途中は。

-----判るとこだけ書いてみた------
ORG 100H
  ;100H番地からスタート
(ここにメインプログラムが入るハズ)

DATA: ORG 200H
  ;ラベル「DATA」として200番地から開始
DB 1,100,255,26,64,124,8,95,98,224
  ;テストの為のサンプル数値10バイト分を書きこむ

BUF1: ORG 200H
  ;ラベル「BUF1」として200番地から開始
DS 10
  ;10バイト分確保
BUF2: ORG 210H
  ;ラベル「BUF2」として210番地から開始
DS 10
  ;10バイト分確保

END
----------------------------

あとは
・メインプログラムでどうやってBUF1(200番地)にDATAの内容を書き込むのかの開始部分。
(LDなにになる?)
・どうやってそれをBUF2に移動させるのか。
が判らなくて止まってます。

最初、
LD A,DATA
て書いてたんだけど、LDのオペランドってレジスタ名か数値だけよね?
しかも、範囲が200~209番地まであるんだから、そんな指定の仕方しちゃいけないハズ…だと思うのです。

とりま今の内容だけだと、
○200~209番地までは「BUF1」って名前ね。他に使わないでね。
○210~219番地までは「BUF2」って名前ね。他に使わないでね。
○200~209番地を1,100,255,26,64,124,8,95,98,224って数値で埋めるよ。
になってると思うんです。たぶん。

しかし、「BUF1」領域に勝手に「DATA」が入り込めるのかどうかも不明…。
もしかして勝手に「DATA」なんてつけちゃダメで、「BUF1をDB(書き込み)してね」という命令にしなきゃいけない?
そうするとすでに「BUF1」には数字が入ってるから、あとは番地を増やしたり減らしたりしながら移動させるだけ?

アドレスとレジスタの位置関係がいまだによく判ってなかったりします…。(´;ω;`)ブワッ
今さら聞けるような雰囲気でもないしなぁ…。

今日は失業認定日だったのでついでにハローワークで
「ここの講師なにも教えてくれないよ!ヽ(`Д´)ノウワァァァン!!」
と訴えてみましたがどうなることやら。