MAIN START LAD GR1,DATA CALL BUS ;副プログラムの呼び出し RET DATA DC MONEY ;+0 DC 3 ;+1 乗車停留所番号 DC 1 ;+2 下車停留所番号 TOTAL DS 1 ;+3 料金の合計 MONEY DC 100,120,150,130,100,0 END BUS START ;バスの料金 [b06.cas] RPUSH ;汎用レジスタの保存 LAD GR0,0 ;合計料金 LD GR2,0,GR1 ;料金のアドレス LD GR3,1,GR1 ;乗車停留所番号 [ a ] LD GR4,2,GR1 ;下車停留所番号 ADDL GR2,GR3 ;乗車位置のアドレス LB1 LD GR5,0,GR2 ;料金の取り出し ADDA GR0,GR5 ;金額の合計 LAD GR2,1,GR2 ;料金のアドレスのアップ LAD GR3,1,GR3 ;位置の加算 LD GR5,0,GR2 ;次の位置の料金 JZE LAST ;最後の料金? [ b ] LB2 CPA GR3,GR4 ;下車停留所番号と比較 JZE FIN JUMP LB1 LAST LD GR2,0,GR1 ;最初の料金 [ c ] LAD GR3,0 ;位置の更新 JUMP LB2 FIN ST GR0,3,GR1 ;合計料金の格納 RPOP ;汎用レジスタの復元 RET END