Skin:
[NORMAL]
[BLUE] [DOS] [LIGHT]  / コピーするための表示 / 実行
このファイル: /home/web6047/www/cgi-bin/prj/20190429-CASLII/20190429-WCASL-II 1.08/_work/20190502-P276-1.cas
1 ;練習問題 キーボードから入力した数字の列を数値に変換するプログラムを書きなさい。
2
3 SAMPLE START
4 IN BUFF,SIZE
5 XOR GR1,GR1 ;結果
6 XOR GR2,GR2 ;カウントアップ
7 LD GR4,SIZE
8 SUBA GR4,=1 ;2,1,0
9 LOOP LD GR0,BUFF,GR2 ;1桁取り出す
10 SUBA GR0,=48
11 CALL JTAISU ;GR0を10^GR4倍する
12 ADDA GR1,GR0 ;結果へ加算
13 SUBA GR4,=1 ;カウントダウン
14 ADDA GR2,=1 ;カウントアップ
15 CPA GR2,SIZE
16 JNZ LOOP
17 LD GR0,GR1 ;オーバーフローならOVフラグを立てる
18 SLL GR0,1
19 RET
20 BUFF DS 256
21 SIZE DS 1
22 END
23 JTAISU START ;IN:GR0, GR4 OUT:GR0
24 PUSH 0,GR1 ;雑用
25 PUSH 0,GR4 ;指数部(カウントダウン)
26 LOOP CPA GR4,=0
27 JZE FINISH
28 LD GR1,GR0
29 SLA GR0,3 ;8倍
30 SLA GR1,1 ;2倍
31 ADDA GR0,GR1 ;8倍+2倍で10倍
32 SUBA GR4,=1
33 JUMP LOOP
34 FINISH POP GR4
35 POP GR1
36 RET
37 END