演習課題「インデックス修飾」
右の環境には、CASLでメモリからレジスタにデータを読み込むプログラムを作成してあります。このファイルを修正して、以下の動作をするように修正してください。
採点して、すべてのジャッジに正解すれば、演習課題クリアです!
ラベルAの次にあるアドレスの値をGR2に読み込む
※ 採点前に下記のコマンドを実行してください。
$ pycasl calc.cas
$ pycomet -d calc.com
$ s
…
#03:アドレスの指定方法を理解しよう
LD命令とLAD命令を例にして、アドレスの指定方法を学習します。CASLⅡには、汎用レジスタでアドレスを指定するインデックス修飾という方式があります。
「X」には、GR1 ~ GR7のどれかを指定します。指定すると、adrで指定したラベルに、指定したレジスタの値を足し算して、その計算結果のアドレスから、値をレジスタに読み込みます。命令 書き方(命令コード、オペランド) 説明
ロード: LoaD LD r,adr[,x] r ← (実効アドレス)
※ Xは、GR1 ~ GR7
インデックス修飾: アドレス計算にレジスタを利用する方式
インデックスレジスタ: アドレス計算に利用するレジスタ
実効アドレス: インデックス修飾で計算したアドレス
; レジスタに値を読み込む
MAIN START
LAD GR1, 1
LD GR0, A, GR1
RET
A DC 05
DC 03
END
; レジスタに値を読み込む
MAIN START
LAD GR1, 1
LD GR0, A, GR1
LAD GR2, A, GR1
RET
A DC 05
DC 03
END
CASLIIアセンブラ & シミュレータ PyCASL2 & PyCOMET2
http://www.image.med.osaka-u.ac.jp/member/nakamoto/pycasl2/index.html
CASL - Wikipedia
https://ja.wikipedia.org/wiki/CASL
アセンブラ言語CASL2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/CASL2spec.html#2-3
システムCOMET2の仕様
https://www.chiba-fjb.ac.jp/fjb_labo/casl/COMET2spec.html
CPU - コンピュータの基礎知識 | ++C++; // 未確認飛行 C
https://ufcpp.net/study/computer/CPU.html