このファイル: /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