projects
/
YACASL2.git
/ blob
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
history
|
raw
|
HEAD
SVC 1の動作を、領域が満ちるまで文字が入力されるよう修正。
[YACASL2.git]
/
as
/
yakuwa
/
binout.casl
1
;;; BINOUT: 主プログラムから渡された1語の内容を、
2
;;; ゼロ抑制を行った2進表記で出力する
3
;;; 八鍬幸信『基本情報処理試験 らくらく突破 CASL II』172ページ
4
BINOUT START
5
PUSH 0,GR1 ; レジスタの退避
6
PUSH 0,GR2 ; ↓
7
PUSH 0,GR3 ; ↓
8
PUSH 0,GR4 ; ↓
9
LAD GR2,0 ; 出力ポインタの初期化
10
LAD GR3,15 ; カウンタの初期化
11
LD GR4,GR1 ; 全ビット = 0?
12
JZE OUT1
13
LOOP1 JMI ONE ; 先行するビット処理
14
LAD GR3,-1,GR3 ; ↓
15
SLL GR1,1 ; ↓
16
JUMP LOOP1
17
LOOP2 JMI ONE ; 符号ビットの判定
18
ZERO LAD GR0,48 ; '0'→GR0
19
JUMP STORE
20
ONE LAD GR0,49 ; '1'→GR1
21
STORE ST GR0,OBUF,GR2
22
LAD GR2,1,GR2
23
LAD GR3,-1,GR3
24
CPA GR3,NZERO
25
JMI OUT2 ; 全ビット終了?
26
SLL GR1,1
27
JUMP LOOP2
28
OUT1 LAD GR0,48
29
ST GR0,OBUF,GR2
30
LAD GR2,1,GR2
31
OUT2 ST GR2,OLNG
32
OUT OBUF,OLNG
33
POP GR4 ; レジスタの復元
34
POP GR3 ; ↓
35
POP GR2 ; ↓
36
POP GR1 ; ↓
37
RET
38
OBUF DS 16
39
OLNG DS 1
40
NZERO DC 0
41
END