MAIN START
LAD GR1,ARG ;引数のセット
CALL SCR ;副プログラムの呼び出し
RET
ARG DC 3,4
END
SCR START ;長方形を出力 [b11.cas]
RPUSH ;汎用レジスタの退避
LD GR4,0,GR1 ;横の長さ
ST GR4,LEN ;横の長さを格納
LAD GR4,-1,GR4
OUT DATA1,LEN ;1行出力
LD GR2,1,GR1 ;縦の長さ
SUBA GR2,=1 ;縦の長さを1引く
JZE FIN
SUBA GR2,=1 ; [ a ]
JZE PRINT
LD GR3,DATA1 ;'*'を入れる
ST GR3,DATA2,GR4 ; [ b ]
LOOP OUT DATA2,LEN ;出力
SUBA GR2,=1 ;縦の長さを1引く
JNZ LOOP ; [ c ]
LD GR4,GR4 ;横の長さは0か?
JZE PRINT
LD GR3,=' ' ; [ d ]
ST GR3,DATA2,GR4 ;空白を格納
PRINT OUT DATA1,LEN ;出力
FIN RPOP ;汎用レジスタの復元
RET
DATA1 DC '********************'
DATA2 DC '* '
LEN DS 1
END