MAIN START
LAD GR1,ARG
CALL SEARCH ;副プログラムの呼び出し
RET
ARG DC DATA,'A'
DATA DC 'PROGRAMMING LANGUAGE CASL.'
END
SEARCH START ;文字の検索 [b14.cas]
RPUSH ;汎用レジスタの退避
LD GR2,0,GR1 ;文字列のアドレス [ a ]
LAD GR2,-1,GR2
LAD GR3,NUM
LAD GR4,0 ;カウンタ
LOOP LAD GR2,1,GR2 ;文字列のアドレスアップ
LAD GR4,1,GR4 ;カウンタのアップ
CPA GR4,=10 ;10を越えたか [ b ]
JMI BR
LAD GR3,1,GR3 ;次の桁へ
LAD GR4,0 ;GR4を0に戻す
BR LD GR5,0,GR2
CPA GR5,='.' ;終了?
JZE END
CPA GR5,1,GR1 ;文字の比較 [ c ]
JNZ LOOP
LD GR5,GR4
ADDA GR5,='0' ;文字に変換
ST GR5,OUT1 ;1桁目格納
LD GR5,0,GR3 ;10の桁を取り出す
ST GR5,OUT10 ;10の位を格納 [ d ]
OUT OUT10,LEN
JUMP LOOP
END RPOP ;汎用レジスタの復元
RET
NUM DC ' 12345678'
OUT10 DS 1
OUT1 DS 1
LEN DC 2
END