基本情報技術者過去問

アセンブラ言語の仕様

最終更新日 2006/02/01
webmaster@tomnetwork.net

Tomのネットワーク勉強ノート
 過去問
  基本情報技術者過去問(午前・午後)
   アセンブラ言語の仕様

■アセンブラ言語の仕様

1,システムCOMET U の仕様
1.1 ハードウェアの仕様

(1) 1語は16ビットで,そのビット構成は,次のとおりである。

    

(2) 主記憶の容量は65536語で,そのアドレスは0〜 65535番地である。

(3) 数値は,16ビットの2進数で表現する。負数は,2の補数で表現する。

(4) 制御方式は逐次制御で,命令語は1語長又は2語長である。

(5) レジスタとして,GR(16ビット),SP(16ビット),PR(16ビット),FR(3ビッ)の4種類がある。

 GR(汎用レジスタ,General Register)は,GR0〜 GR7の8個があり,算術,論理,比較,シフトなどの演算に用いる。このうち,GR1〜 GR7のレジスタは,指標レジスタ(index register)しとてアドレスの修飾にも用いる。

 SP(スタックポインタ,Stack Pointer,)スはタックの最上段のアドレスを保持している。

 PR(プログラムレジスタ,Program Register)は,次に実行すべき命令語の先頭アドレスを保持している。

 FR(フラグレジスタ,Flag Register)は,OF(Overflow Flag),SF(Sign Flag),ZF(Zero Flag)と呼ぶ3個のビットからなり,演算命令などの実行によって次の値が設定され
る。これらの値は,条件付き分1岐命令で参照される。

   _
OF 算術演算命令の場合は,演算結果が-32768〜 32767に収まらなくなったとき1 にな
り,それ以外のとき0になる。論理演算命令の場合は,演算結果が0 〜 65535に収まら
なくなったとき1になり,それ以外のとき0になる。
SF 演算結果の符号が負(ビット番号15が1)のとき1,それ以外のとき0になる。
ZF 演算結果が零(全部のビットが0)のとき1,それ以外のとき0になる。

(6)論理加算又は論理減算は,被演算データを符号のない数値とみなして,加算又は減算する。

1.2 命令

命令の形式及びその機能を示す。ここで,一つの命令コードに対し2種類のオペランド
がある場合,上段はレジスタ間の命令,下段はレジスタと主記憶間の命令を表す。

  
 
  

   (注) r, r1, r2    いずれもGR を示す。指定できるGRはGR0 〜 GR7
      adr       アドレスを示す。指定できる値の範囲は0〜 65535
      x        指標レジスタとして用いるGRを示す。指定できるGRはGR1〜 GR7
      [  ]     [   ]内の指定は省略できることを示す。
      (  )     ( )内のレジスタ又はアドレスに格納されている内容を示す。
      実効アドレス adrとxの内容との論理加算値又はその値が示す番地
      ←       演算結果を,左辺のレジスタ又はアドレスに格納することを示す。
      +L, −L   論理加算,論理減算を示す。
      FRの設定  ○    :設定されることを示す。
              ○★1 :設定されることを示す。ただし,OFには0が設定される。
              ○★2 :設定されることを示す。ただし,OFにはレジスタから最後に送り出されたビットの値が設定される。
              −    :実行前の値が保持されることを示す。

1.3 文字の符号表

(1)JIS X 0201ラテン文字・片仮名用8ビット符号で規定する文字の符号表を使用する。

(2)右に符号表の一部を示す。1文字は8ビットからなり,上位4ビットを列で,下位4ビットを行で示す。
  例えば,間隔,4,H,\のビット構成は,16進表示で,それぞれ20,34,48,5Cである。
  16進表示で,ビット構成が21〜 7E(及び表では省略しているA1〜 DF)に対応する文字を図形文字という。
  図形文字は,表示(印刷)装置で,文字として表示(印字)できる。

(3)この表にない文字とそのビット構成が必要な場合は,問題中で与える。

    


2.アセンプラ言語CASLU の仕様
2.1 言語の仕様

(1)CASLUは,COMETUのためのアセンブラ言語である。

(2)プログラムは,命令行および注釈行からなる。

(3)1命令は1命令行で記述し,次の行へ継続できない。

(4)命令行および注釈行は,次に示す記述の形式で,行の1文字目から記述する。

   

2.2 命令の種類

命令は,4種類のアセンブラ命令(START ,END, DS ,DC), 4種類のその命令( IN ,OUT,RPUSH,RPOP)及び機械語命令(COMETUの命令)からなる。マクロ仕様を次に示す。

    

2.3 アセンブラ命令

アセンブラ命令は,アセンブラの制御などを行う。

(1)   _
START   [ 実行開始番地 ]     

 START命令は,プログラムの先頭を定義する。
 実行開始番地は,そのプログラム内で定義されたラベルで指定する。指定がある場合は
その番地から,省略した場合はSTART命令の次の命令から,実行を開始する。
 また,この命令につけられたラベルは,他のプログラムから入口名として参照できる。

(2)   _
END                     

 END命令は,プログラムの終わりを定義する。
 

(3)   _
DS   語数                

 DS命令は,指定した語数の領域を確保する。
語数は,10進定数(≧0)で指定する。語数を0とした場合,領域は確保しないが,ラベルは有効である。

(4)   _
DC   定数 [,定数] ・・・       

 DC命令は,定数で指定したデータを(連続する)語に格納する。
定数には,10進定数,16進定数,文字定数,アドレス定数の4種類がある。

(4)   _
定数の種類  書き方  命令の説明
10進定数 n nで指定した10進数値を,1語の2進数データとして格納する。ただし,n
が-32768〜 32767の範囲にないときは,その下位16ビットを格納する。
16進定数 #h hは4けたの16進数(16進数字は0〜 9,A〜 F)とする。hで指定した
16進数値を1語の2進数データとして格納する(0000≦h≦ FFFF)。
文字定数 文字列  文字列の文字数(>0)分の連続する領域を確保し,最初の文字は第1語
の下位8ビットに,2番目の文字は第2語の下位8ビットに,… と順次文
字データとして格納する。各語の上位8ビットには0のビットが入る。
文字列には,間隔及び任意の図形文字を書くことができる。ただし,アポ
ストロフィ(’)は2個続けて書く。
アドレス定数 ラベル ラベルに対応するアドレスを1語の2進数データとして格納する。      

2.4 マクロ命令

マクロ命令は,あらかじめ定義された命令群とオペランドの情報によって, 目的の機能
を果たす命令群を生成する(語数は不定)。

(1)   _
 IN    [ 入力領域,入力文字長領域 ]     

 IN命令は,あらかじめ割り当てた入力装置から,1レコードの文字データを読み込む。
入力領域は,256語長の作業域のラベルであり, この領域の先頭から,1文字を1語に
対応させて順次入力される。レコードの区切り符号(キーボード入力の復帰符号など)は,
格納しない。格納の形式は,DC命令の文字定数と同じである。入カデータが256文字に
満たない場合,入力領域の残りの部分は実行前のデータを保持する。入カデータが256文
字を超える場合,以降の文字は無視される。

 入力文字長領域は,1語長の領域のラベルであり,入力された文字の長さ(≧0)が2
進数で格納される。ファイルの終わり(end of file)を検出した場合は,-1が格納される。

 IN命令を実行すると,GRの内容は保存されるが,FRの内容は不定となる。

(2)   _
 OUT    [ 出力領域,出力文字長領域 ]     

 OUT命令は,あらかじめ害Jり当てた出力装置に,文字データを,1レコードとして書き出す。

 出力領域は,出力しようとするデータが1文字1語で格納されている領域のラベルであ
る。格納の形式は,DC命令の文字定数と同じであるが,上位8ビットは,OSが無視する
ので0でなくてもよい。

 出力文字長領域は,1語長の領域のラベルであり,出力しようとする文字の長さ(≧0)
を2進数で格納しておく。

 OUT命令を実行すると,GRの内容は保存されるが,FRの内容は不定となる。

(3)   _
 RPUSH                          

 RPUSH命令は,GRの内容を,GR1,GR2,… ,GR7の順序でスタックに格納する。

(4)   _
 RPOP                          

 RPOP命令は,スタックの内容を順次取り出し,GR7, GR6,… ,GR1の順序でGRに
格納する。

2.5 機械語命令

 機械語命令のオペランドは,次の形式で記述する。

 r,r1,r2  GRは,記号GR0〜 GR7で指定する。
 x       指標レジスタとして用いるGRは,記号GR1〜 GR7で指定する。
 adr     アドレスは,10進定数,16進定数,アドレス定数又はリテラルで指定する。
        リテラルは,一つの10進定数,16進定数又は文字定数の前に等号(=)を付けて
        記述する。CASLUは,等号の後の定数をオペランドとするDC命令を生成し,そ
        のアドレスをadrの値とする。

2.6 その他

(1)アセンブラによって生成される命令語や領域の相対位置は,アセンブラ言語での記述
 順序とする。ただし, リテラルから生成されるDC命令は,END命令の直前にまとめて配置される。

(2)生成された命令語,領域は,主記憶上で連続した領域を占める。

3.プログラム実行の手引

3.1OS

 プログラムの実行に関して,次の取決めがある。

(1)アセンブラは,未定義ラベル(オペランド欄に記述されたラベルのうち,そのプログ
 ラム内で定義されていないラベル)を,他のプログラムの入口名(START命令のラベ
 ル)と解釈する。この場合,アセンブラはアドレスの決定を保留し,その決定をOSに任
 せる。OSは,実行に先立って他のプログラムの入口名との連係処理を行いアドレスを決
 定する(プログラムの連係)。

(2)プログラムは,OSによって起動される。プログラムがロードされる主記憶の領域は不
 定とするが,プログラム中のラベルに対応するアドレス値は,OSによって実アドレスに
 補正されるものとする。

(3)プログラムの起動時に,OSはプログラム用に十分な容量のスタック領域を確保し,そ
 の最後のアドレスに1を加算した値をSPに設定する。

(4)OSは,CALL命令でプログラムに制御を渡す。プログラムを終了しOSに制御を戻す
 ときは,RET命令を使用する。

(5)IN命令に対応する入力装置,OUT命令に対応する出力装置の割当ては,プログラムの
 実行に先立って利用者が行う。

(6)OSは,入出力装置や媒体による入出力手続の違いを吸収し,システムでの標準の形式
 及び手続(異常処理を含む)で入出力を行う。したがって,IN,OUT命令では,入出力
 装置の違いを意識する必要はない。

3.2 未定義事項

 プログラムの実行等に関し, この仕様で定義しない事項は,処理系によるものとする。

Tomのネットワーク勉強ノート
 過去問
  基本情報技術者過去問(午前・午後)
   アセンブラ言語の仕様