MAIN START LAD GR1,ARG ;パラメタ CALL CHGMJ ;副プログラムの呼び出し RET ARG DC DATA ;文字列 DC #63AD ;キービット DATA DC 'LANGUAGE CASL II' END CHGMJ START ;文字列の変換 [b12.cas] RPUSH ;汎用レジスタの退避 LD GR2,1,GR1 ;キービットの取り出し LD GR1,0,GR1 ;文字列のアドレス LAD GR4,0 ;格納場所の指標レジスタ LAD GR5,16 ;ループカウンタ LOOP LD GR3,0,GR1 ; [ a ] LD GR2,GR2 ;キーの符号判定 JPL L1 ST GR3,OUT,GR4 ;文字の格納 [ b ] LAD GR4,1,GR4 ;指標レジスタの加算 JUMP L2 L1 PUSH 0,GR3 ;スタック領域に格納 L2 SLL GR2,1 ;1ビット左シフト [ c ] LAD GR1,1,GR1 SUBA GR5,=1 ;カウンタの減算 JPL LOOP LAD GR1,15 ;指標レジスタの初期設定 L3 POP GR3 ;スタックから戻す ST GR3,OUT,GR1 ;文字の格納 [ d ] LAD GR1,-1,GR1 CPA GR1,GR4 JMI L4 JUMP L3 L4 OUT OUT,LEN ;出力 RPOP ;汎用レジスタの復元 RET LEN DC 16 OUT DS 16 END