10.マクロ命令

  

機械語命令を組み合わせて、あらかじめ定義されている命令をマクロ命令といいます。
CASLでは入出力命令は機械語としては存在しません。SVC命令などを組み合わせたマクロ命令として定義されています。その他いくつかマクロ命令があります。

 

(1)IN命令 入力命令

記述方法

ラベル

IN

入力データ格納アドレス,入力文字数格納アドレス

入力する命令です。CASL2000ではキーボードから入力します。
使用するシミュレータによって入力方法が異なってきますので注意してください。

1つ目のアドレスから入力文字が格納されていきます。
2つ目のアドレスには入力した文字数が格納されます。

数を入力した場合には、数字(文字)として取り扱われますので注意が必要です。
入力した「数」をたとえば足し算などの計算を行いたい場合には、数値に変換する必要があります。

 例.入力した1桁の数字を数値に変換する。

PROG_IN

START

 

 

IN

DATA,SUU ;文字を入力

 

LD

GR0,DATA

 

SUBA

GR0,HENKAN ;数字から数値へ変換

 

ST

GR0,ANS

 

RET

 

DATA

DS

1

SUU

DS

1

ANS

DS

1

HENKAN

DC

#0030 ;変換用データ

 

END

 

 メニューへ戻る

 

(2)OUT命令 出力命令。

記述方法

ラベル

OUT

 出力データ格納アドレス,出力文字数

出力する命令です。

出力データ格納アドレスから格納されているデータを出力文字数で指定した数分出力します。

例.入力した文字列を出力する。

PROG_OUT

START

 

 

IN

DATA,SUU ;入力

 

OUT

DATA,SUU ;入力したデータをそのまま出力

 

RET

 

DATA

DS

20

SUU

DS

1

 

END

 

 メニューへ戻る

 

(3)RPUSH命令 GRの中身をスタックへ格納する命令。

記述方法

ラベル

RPUSH

 

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

 メニューへ戻る

(4)RPOP命令 スタックの内容をGRへ格納する命令。

記述方法

ラベル

RPOP

 

スタックの内容を、GR7,GR6,…,GR1の順序で格納していく命令です。

例.レジスタの内容を一時的に待避させ、元に戻す。

RPUSHPOP

START

 

 

RPUSH

 

 

RPOP

 

 

RET

 

 

END

 

 メニューへ戻る

 

 

 

 

---

トップページWhatsNewCASL2000CASL入門コーナーメール