お世話になっております。
CASLでLDの考えた方が良く整理できておりません。
アドバイスをいただければと思います。
◎処理フローの概要に関して
処理フロー概要は以下の通りです。
(1)GR1に文字列"1","2","3"の先頭アドレスを格納する。
(2)GR1から"1"をGR2に格納する。
◎不明点に関して(文中に疑問点あり)
上記の(2)を実現するためには、下記ロジックが必要と
なるようです。
LD GR2,0,GR1
ここで不明なのは、上記ロジックに"0"がなぜ、
必要であるかです。
LD GR2,GR0 でも良いのではないかと考えました。
そこで、下記について教えていただけないでしょうか。
・なぜ、"0"が必要になるか。
・LD GR2,GR0では、GR2に"1"が格納されない理由について。
以上、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
LD の機能は次の2つに大別できる。
(1) 汎用レジスタ←汎用レジスタ,というデータのコピー
(2) 汎用レジスタ←番地の指す内容,というデータのコピー
(1) LD GR2,GR0
これは「汎用レジスタGR0の中身を,汎用レジスタGR2にコピーする」
質問文においてGR0に何が格納されているかはまったく指定されていないので,
>・LD GR2,GR0では、GR2に"1"が格納されない
のは当然。
(2a) LD GR2,A
(2b) LD GR2,0
前者は「ラベルAが指す番地の一語分の内容を,GR2にコピーする」
後者は「0番地の一語分の内容を,GR2にコピーする」
第3パラメタに汎用レジスタが現れる書式は,指標レジスタ(第2パラメタで示された番地からの変位)を表すので,
(2c) LD GR2,TBL,GR1
(2d) LD GR2,0,GR1
前者は「ラベルTBLからGR1(の中身)だけ離れた番地の一語分の内容を,GR2にコピーする」,いわゆる高級言語における配列名と添字の関係になる。
後者は「0番地からGR1だけ離れた番地,すなわち0+GR1で示される番地,すなわちGR1(の中身)が指す番地の一語分の内容を,GR2にコピーする」
よって,
>GR1に文字列"1","2","3"の先頭アドレスを格納する。
のであれば,上記の"1"をGR2に取り出す命令は「LD GR2,0,GR1」
+―+
|1|←GR1
+―+
|2|
+―+
|3|
+―+
この回答への補足
質問対象となったプログラムです。
MAIN1 START
LAD GR1,DATA ←《GR1に先頭アドレス格納》
CALL CONVRT
RET
DATA DC '1'
DC '2'
DC '3'
DC '4'
DC 0
END
;
CONVRT START
PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
LD GR2,0,GR1 ←《不明点》
JZE ERROR
LAD GR3,4
LAD GR0,0
LOOP CPL GR2,='0'
JMI ERROR
CPL GR2,='9'
JPL ERROR
AND GR2,MASK
SLL GR0,1
LD GR4,GR0
SLL GR4,2
ADDA GR0,GR4
ADDA GR0,GR2
LAD GR1,1,GR1
LD GR2,0,GR1
JZE FIN
SUBA GR3,=1
ERROR LAD GR0,-1
FIN POP GR4
POP GR3
POP GR2
POP GR1
RET
MASK DC #000F
END
わかりやすいご回答、有難うございました。
質問文に記述ミスがあったことをお許し下さい。
誤:LD GR2,GR0
正:LD GR2,GR1
もう少々、確認させて下さい。
いただいたアドバイスは、LD GR2,0,GR1は0番地からGR1はなれた番地の値をGR2に格納するロジックだと思います。
そうすると、疑問が発生します。
GR1に格納されていた先頭アドレスは、「0番地からGR1離れた番地」と同じなのでしょうか。
また、上記の通りである場合、どのような手順で先頭アドレスが「0番地からGR1離れた番地」とイコールになるのでしょうか。
なお、今回の質問対象となったプログラムは以下の通りです。
------------------------------------------------------------
MAIN1 START
LAD GR1,DATA ←GR1に先頭アドレス格納
CALL CONVRT
RET
DATA DC '1'
DC '2'
DC '3'
DC '4'
DC 0
END
;
CONVRT START
PUSH 0,GR1
PUSH 0,GR2
PUSH 0,GR3
PUSH 0,GR4
LD GR2,0,GR1 ←不明点
JZE ERROR
LAD GR3,4
LAD GR0,0
LOOP CPL GR2,='0'
JMI ERROR
CPL GR2,='9'
JPL ERROR
AND GR2,MASK
SLL GR0,1
LD GR4,GR0
SLL GR4,2
ADDA GR0,GR4
ADDA GR0,GR2
LAD GR1,1,GR1
LD GR2,0,GR1
JZE FIN
SUBA GR3,=1
JNZ LOOP
ERROR LAD GR0,-1
FIN POP GR4
POP GR3
POP GR2
POP GR1
RET
MASK DC #000F
END
------------------------------------------------------------
最初からもっと具体的に質問すべきでした。すみません。
No.3
- 回答日時:
>これにより、LD GR2,GR1でもよいのでは無いかと思ってしまいます。
すでにNo.1で回答しました。質問者が誤記したGR0という表記をGR1に置き換えて,以下,そのまま繰り返します。
>(1) LD GR2,GR1
>これは「汎用レジスタGR1の中身を,汎用レジスタGR2にコピーする」
>
>(2d) LD GR2,0,GR1
>「0番地からGR1だけ離れた番地,すなわち0+GR1で示される番地,
>すなわちGR1(の中身)が指す番地の一語分の内容を,GR2にコピーする」
GR1に格納されているのが1000なら,
前者を実行してGR2に格納されるのは1000という値そのもの,
後者を実行してGR2に格納されるのは「1000番地の指す内容」です。
>今回のようにCASLを勉強する上でこの考えかたには注意すべき
>というものがあれば教えていただけないでしょうか。
CASLIIの研修講座があるとしたなら,今回のご質問はその講座が始まって3時間以内に登場するような基本的な内容だと思います。
情報処理技術者試験センターから公表されている「アセンブラ言語の仕様」をよく読んで,実効アドレスについて完璧に理解するか,
http://www.jitec.jp/1_00topic/topic_20081027_han …
上記の仕様書が抽象的で難しく感じるのなら,カネを出すことを惜しまず,CASLIIの解説本を購入して勉強なさることをお勧めします。Amazonなどの書籍購入サイトや情報処理技術者試験の話題のサイトで,読者のレビューをいくらでも見つけることができるでしょう。
回答が遅くなってしまい、申し訳ありません。
教えていただいたおかげで動きがわかってきました。
現状は実際の問題に入っているのですが、
なかなかうまくいきません。
なんとか頑張ります。
有難うございました。
No.2
- 回答日時:
>LD GR2,0,GR1 ←《不明点》
以降のコードはいっさい見ていません。このご質問にお答えするためには不要ですから。
分かりづらければ,具体的な番地の値を仮定すればどうでしょう。例えば,10進数で1000番地から1004番地までの連続した5語にデータが格納されている,と。
+―+
|1|1000 :ラベル名DATA
+―+
|2|1001
+―+
|3|1002
+―+
|4|1003
+―+
|0|1004
+―+
であるなら,
> LAD GR1,DATA ←《GR1に先頭アドレス格納》
というロードアドレス命令でGR1に格納される値は 1000 です。
>そうすると、疑問が発生します。
>GR1に格納されていた先頭アドレスは、
>「0番地からGR1離れた番地」と同じなのでしょうか。
GR1に格納されている先頭アドレス(=1000)と,
0番地からGR1離れた番地(=0+1000=1000)は同じ値です。
何度もご回答、有難うございます。
おかげ様で、少しずつですが、
いろいろ見えてきた気がします。
もう一点、確認させて下さい。
>GR1に格納されている先頭アドレス(=1000)と,
>0番地からGR1離れた番地(=0+1000=1000)は同じ値です。
これにより、LD GR2,GR1でもよいのでは無いかと思ってしまいます。
GR1に"1","2","3"の先頭アドレスを格納していたとき、
なぜ、LD GR2,GR1では"1"をGR2に格納できないのでしょうか。
"1"を格納するのであれば、LD GR2,0,GR1となんら変わりがないように思えます。
(シュミレータ等で実施しても自分が想定するような値はGR2に入ってきません)
また、今回のようにCASLを勉強する上でこの考えかたには注意すべきというものがあれば教えていただけないでしょうか。
申し訳ありませんが、よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
医師・看護師・助産師
薬剤師・登録販売者・MR
医療事務・調剤薬局事務
歯科衛生士・歯科助手
臨床検査技師・臨床工学技士
理学療法士・作業療法士・言語聴覚士
臨床心理士・心理カウンセラー・ソーシャルワーカー
介護福祉士・ケアマネージャー・社会福祉士
弁護士・行政書士・司法書士・社会保険労務士
フィナンシャルプランナー(FP)
中小企業診断士
公認会計士・税理士
簿記検定・漢字検定・秘書検定
情報処理技術者・Microsoft認定資格
TOEFL・TOEIC・英語検定
建築士
インテリアコーディネーター
宅地建物取引主任者(宅建)
不動産鑑定士・土地家屋調査士
マンション管理士
電気工事士
美容師・理容師
調理師・管理栄養士・パティシエ
シェフ
保育士・幼稚園教諭
教師・教員
国家公務員・地方公務員
警察官・消防士
その他(職業・資格)
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
基本情報技術者試験(FE)と日...
-
ITパスポート試験と危険物取扱...
-
Excelの「アクセシビリティ 検...
-
ITパスポート試験が受からない
-
8ビットのグレイ符号10110110お...
-
8進数55はどうやって2進数に変...
-
基本情報技術者や応用情報技術...
-
基本情報技術者試験と簿記2級で...
-
MOS Excelスペシャリストをパソ...
-
至急回答お願いいたします。 1...
-
「基本情報技術者試験」について
-
浮動小数点数の形式について あ...
-
資格に合格したら給与を上げる...
-
ITパスポートの過去問について...
-
情報セキュリティマネジメント...
-
ITパスポートに合格している場...
-
ITパスポートと情報セキュリテ...
-
情報セキュリティマネジメント...
-
パソコンの資格
-
MOS Excelに出てくるtextやcsv...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
レジストってなんですか?
-
専用レジスタ 汎用レジスタ
-
シーケンサのデータレジスタD...
-
レジスタの数
-
CPUのビット数と、メモリ(主記...
-
SRAMとレジスタの違いは何でし...
-
CPUは何故、16bit→32bit→64bit...
-
トリムレジスタ
-
PC-G830
-
Z80、6502、i8086、MC68000につ...
-
PIC16F1シリーズマイコンのNCO...
-
レジスタとメモリについて
-
インデックスレジスタについて。
-
biosとは人の体でいえば脳のよ...
-
キャッシュメモリとレジスタの...
-
アキュムレータとインデックス...
-
0xffffとは?
-
8ビットのデータの、先頭ビット...
-
ライン数とステップ数の違いは?
-
アセンブラからC言語に変換する...
おすすめ情報