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