CASL U - プログラミングの基礎(命令)
 前へ 目次へ 次へ

CASLU プログラミングの基礎

 CALSUの命令

 命令は、4種類のアセンブラ命令(START,END,DS,DC)、4種類のマクロ命令(IN,OUT,RPUSH,RPOP)及び機械語命令(COMETUの命令)からなる。ここではそれらの命令の書式を示す。プログラムは次のページから。

 書式で使用されている記号等の意味は次のとおりである。
r, r1, r2  いずれもGRを示す。GRは、記号GR0〜GR7で指定する。
x  指標レジスタとして用いるGRを示す。指定できるGRはGR1 〜 GR7である。
adr  アドレスを示す。アドレスは、10 進定数、16 進定数、アドレス定数又はリテラルで指定する。
 リテラルは、一つの10進定数、16進定数又は文字定数の前に等号(=)を付けて記述する。CASLUは、等号の後の定数をオペランドとするDC命令を生成し、そのアドレスをadrの値とする。
[ ]  [ ]内の指定は省略できることを示す。
( )  ( )内のレジスタまたはアドレスに格納されている内容を示す。
実効アドレス  adrとxの内容との論理加算値またはその値が示す番地である。
 演算結果を、左辺のレジスタ又はアドレスに格納することを示す。
L ,−L  論理加算、論理減算を示す。
FRの設定 ○: 設定されることを示す。
○*1: 設定されることを示す。ただし、OFには0 が設定される。
○*2: 設定されることを示す。ただし、OFにはレジスタから最後に送り出されたビットの値が設定される。
−: 実行前の値が保持されることを示す。

 

ラベル 命令コード オペランド 機能 FRの設定
アセンブラ命令
ラベル START [実行開始番地] プログラムの先頭を定義
プログラムの実行開始番地を定義
他のプログラムで参照する入口名を定義
 
  END   プログラムの終わりを明示  
[ラベル] DS 語数 領域を確保  
[ラベル] DC 定数[,定数]… 定数を定義  
機械語命令
(1)ロード,ストア,ロードアドレス命令
[ラベル] LD r1, r2
r, adr [,x]
r1 ←(r2)
r ←(実効アドレス)
○*1
[ラベル] ST r, adr [,x] 実効アドレス←(r)
[ラベル] LAD r, adr [,x] r ← 実効アドレス
(2)算術,論理演算命令
[ラベル] ADDA r1, r2
r, adr [,x]
r1 ←(r1)+(r2)
r ←(r)+(実効アドレス)
算術加算
[ラベル] ADDL r1, r2
r, adr [,x]
r1 ←(r1)+L(r2)
r ←(r)+L(実効アドレス)
論理加算
[ラベル] SUBA r1, r2
r, adr [,x]
r1 ←(r1)−(r2)
r ←(r)−(実効アドレス)
算術減算
[ラベル] SUBL r1, r2
r, adr [,x]
r1 ←(r1)−L(r2)
r ←(r)−L(実効アドレス)
論理減算
[ラベル] AND r1, r2
r, adr [,x]
r1 ←(r1) AND (r2)
r ←(r) AND (実効アドレス)
論理積 ○*1
[ラベル] OR r1, r2
r, adr [,x]
r1 ←(r1) OR (r2)
r ←(r) OR (実効アドレス)
論理和 ○*1
[ラベル] XOR r1, r2
r, adr [,x]
r1 ←(r1) XOR (r2)
r ←(r) XOR (実効アドレス)
排他的論理和 ○*1
(3)比較演算命令
[ラベル] CPA r1, r2
r, adr [,x]
(r1)と(r2)または(r)と(実効アドレス)の算術比較又は論理比較を行い、比較結果によって、FR に次の値を設定する。
比較結果 FRの値
SF ZF
(r1)>(r2)
(r)>(実効アドレス)
0 0
(r1)=(r2)
(r)=(実効アドレス)
0 1
(r1)<(r2)
(r)<(実効アドレス)
1 0
○*1
[ラベル] CPL r1, r2
r, adr [,x]
(4)シフト演算命令
[ラベル] SLA r, adr [,x]  符号を除き(r)を実効アドレスで指定したビット数だけ左または右にシフトする。
 シフトの結果、空いたビット位置には、左シフトのときは0、右シフトのときは符号と同じものが入る。
○*2
[ラベル] SRA r, adr [,x]
[ラベル] SLL r, adr [,x]  符号を含み(r)を実効アドレスで指定したビット数だけ左または右にシフトする。
 シフトの結果、空いたビット位置には0が入る。
[ラベル] SRL r, adr [,x]
(5)分岐命令
[ラベル] JPL adr [,x]  FR の値によって、実効アドレスに分岐する。分岐しないときは、次の命令に進む。
命令 分岐するときのFRの値
OF SF ZF
JPL 0 0   
JMI   1  
JNZ     0
JZE     1
JOV 1    
[ラベル] JMI adr [,x]
[ラベル] JNZ adr [,x]
[ラベル] JZE adr [,x]
[ラベル] JOV adr [,x]
[ラベル] JUMP adr [,x]  無条件に実効アドレスに分岐する。
(6)スタック操作命令
[ラベル] PUSH adr [,x] SP ←(SP)−L 1 , (SP)← 実効アドレス
[ラベル] POP r r ←((SP)), SP ←(SP)+L 1
(7)コール,リターン命令
[ラベル] CALL adr [,x] SP ←(SP)−L 1 , (SP)←(PR), PR ← 実効アドレス
[ラベル] RET   PR ←((SP)), SP ←(SP)+L 1
(8)その他
[ラベル] SVC adr [,x]  実効アドレスを引数として割出しを行う。実行後のGRとFRは不定となる。
[ラベル] NOP   何もしない。
(9)マクロ命令
[ラベル] IN 入力領域,入力文字長領域  入力装置から文字データを入力する。 不定
[ラベル] OUT 出力領域,出力文字長領域  出力装置へ文字データを出力する。
[ラベル] RPUSH    GRの内容をGR1,GR2,…,GR7の順でスタックに格納する。  
[ラベル] RPOP    スタックの内容を取り出し、GR7,GR6,…,GR1の順でGRに格納する。  


 前へ 目次へ 次へ
 CASL U Copyright © 2003,2017  Hiroshi Masuda

 

 

inserted by FC2 system