2008年度 情報科学序論 ~ 内部構造と動作の仕組み(2) ~
機械語とアセンブラ言語 高級言語 (ソフトウェア) C言語など 機械語 アセンブラ語 (ソフトウェア) (ソフトウェア) 1対1 ・最終的には、機械語に変換される ・人間が扱いやすい 機械語 (ソフトウェア) アセンブラ語 (ソフトウェア) 1対1 コンピュータ (ハードウェア) ・コンピュータの本質的命令 ・人間に比較的わかりやすい
COMETⅡとCASLⅡ COMETⅡ(コンピュータ) COMETⅡは、実在しないコンピュータだが、コンピュータとしての五大機能を備えた仮想のコンピュータである。 CASLⅡ(アセンブラ言語) CASLⅡは、COMETⅡ上で動作する機械語に対応するアセンブラ言語である。 注意:CASLⅡの仕様書は、情報処理技術者試験を実施いている情報処理推進機構から入手できるほか、情報処理技術者試験の「案内書・願書」の巻末に記載されている。 また、CASLⅡのプログラミングを体験できるシミュレータも提供されている。 その他、多くの有志によってCASLⅡを学習できる教材がインターネット上で提供されているので、必要に応じて学習してもらいたい。
COMETⅡの主な仕様 1語は16ビット 主記憶の容量は65536語で0~65535番地 逐次制御 汎用レジスタは8つ(GR0~GR7) その他のレジスタとして、スタックポインタ(SP)とプログラムレジスタ(PR) 演算結果により設定されるフラグレジスタ(FR) OF SF ZF
機械語の構造 OP GR XR Adr OP(8ビット):命令コード(回路指定) GR(4ビット):レジスタ(出力) 出力先(レジスタ) OP GR XR Adr 回路指定 入力先(レジスタまたは実効アドレス) OP(8ビット):命令コード(回路指定) GR(4ビット):レジスタ(出力) XR(4ビット):レジスタ(入力) Adr=0 ⇒ GR[XR]の値 Adr≠0かつXR=0 ⇒ 「Adr+0」が実効アドレス Adr≠0かつXR≠0 ⇒ 「Adr+(GR[XR])」が実効アドレス Adr(16ビット):主記憶の番地(入力)
アセンブラ言語(機械語命令)の例 ラベル 命令コード オペランド ADDA GR1,GR2 ADDA 1 2 0 ラベル 命令コード ■レジスタGR1の値にレジスタGR2の値を加える ラベル 命令コード オペランド ADDA GR1,GR2 ADDA 1 2 0 ■レジスタGR1の値に実効アドレス(DATA)の値(#01FA)を加える ラベル 命令コード オペランド ADDA GR1,DATA DATA DC #01FA ADDA 1 0 実効アドレス(DATA)
アセンブラ言語のプログラミングの例 ■1+2を計算する(実効アドレス(ANS)に答え3が記憶される) ラベル 命令コード オペランド EXAM START LD GR0,DATA1 ADDA GR0,DATA2 ST GR0,ANS RET DATA1 DC #0001 DATA2 #0002 ANS DS 1 END 命令領域 データ領域
プログラムの実行 アドレス 値 #0000 **** ~ #002D #002E PUSH 0 * #002F #0030 LD #0031 #0100 #0032 ADDA #0033 #0101 #0034 ST #0035 #0102 #0036 POP #0037 アドレス 値 #0038 **** ~ #00FF #0100(DATA1) #0001 #0101(DATA2) #0002 #0102(ANS) ****(実行後、#0003が入る) #0103 #FFFF まず、OSによってプログラムがメモリ上に書き込まれる