+++ /dev/null
-『らくらく突破 CASL2―基本情報技術者試験 (情報処理技術者試験) 』
-(技術評論社)掲載のプログラム
-
-http://www.amazon.co.jp/dp/4774116068/
+++ /dev/null
-;;; BINOUT: 主プログラムから渡された1語の内容を、
-;;; ゼロ抑制を行った2進表記で出力する
-;;; 八鍬幸信『基本情報処理試験 らくらく突破 CASL II』172ページ
-BINOUT START
- PUSH 0,GR1 ; レジスタの退避
- PUSH 0,GR2 ; ↓
- PUSH 0,GR3 ; ↓
- PUSH 0,GR4 ; ↓
- LAD GR2,0 ; 出力ポインタの初期化
- LAD GR3,15 ; カウンタの初期化
- LD GR4,GR1 ; 全ビット = 0?
- JZE OUT1
-LOOP1 JMI ONE ; 先行するビット処理
- LAD GR3,-1,GR3 ; ↓
- SLL GR1,1 ; ↓
- JUMP LOOP1
-LOOP2 JMI ONE ; 符号ビットの判定
-ZERO LAD GR0,48 ; '0'→GR0
- JUMP STORE
-ONE LAD GR0,49 ; '1'→GR1
-STORE ST GR0,OBUF,GR2
- LAD GR2,1,GR2
- LAD GR3,-1,GR3
- CPA GR3,NZERO
- JMI OUT2 ; 全ビット終了?
- SLL GR1,1
- JUMP LOOP2
-OUT1 LAD GR0,48
- ST GR0,OBUF,GR2
- LAD GR2,1,GR2
-OUT2 ST GR2,OLNG
- OUT OBUF,OLNG
- POP GR4 ; レジスタの復元
- POP GR3 ; ↓
- POP GR2 ; ↓
- POP GR1 ; ↓
- RET
-OBUF DS 16
-OLNG DS 1
-NZERO DC 0
- END
+++ /dev/null
-EDIT START
-RETRY IN INAREA,INLENG
- LAD GR1,0
- OR GR1,INLENG
- JZE FINISH
- CPA GR1,TEN
- JZE BEGIN
- OUT ERRMSG,MSGLNG
- JUMP RETRY
-BEGIN LAD GR0,1
- ST GR0,ZSFLAG
- LAD GR1,0
- LAD GR2,-1
- LAD GR3,0
-LOOP LD GR0,MASK,GR3
- PUSH 1,GR3
- LD GR3,INAREA,GR1
- LAD GR1,1,GR1
- CPL GR0,DIGIT0
- JZE ENDSPR
- CPL GR0,DIGIT9
- JNZ NONDGT
- CPL GR3,DIGIT0
- JNZ ENDSPR
- LAD GR0,0
- OR GR0,ZSFLAG
- JNZ SUPPRS
-ENDSPR LD GR0,OTAREA,GR2
- CPL GR0,SPACE
- JNZ NOT1ST
- LD GR0,MASK
- ST GR0,OTAREA,GR2
- LAD GR0,0
- ST GR0,ZSFLAG
-NOT1ST LAD GR0,0,GR3
- JUMP STORE
-NONDGT LAD GR1,-1,GR1
- LAD GR3,0
- OR GR3,ZSFLAG
- JZE STORE
-SUPPRS LD GR0,SPACE
-STORE LAD GR2,1,GR2
- ST GR0,OTAREA,GR2
- POP GR3
- CPA GR1,INLENG
- JNZ LOOP
- LAD GR2,1,GR2
- ST GR2,OTLENG
- OUT OTAREA,OTLENG
- JUMP RETRY
-FINISH RET
-MASK DC '\99,999,990.99'
-SPACE DC ' '
-DIGIT0 DC '0'
-DIGIT9 DC '9'
-TEN DC 10
-ERRMSG DC 'input error!'
-MSGLNG DC 12
-INAREA DS 80
-INLENG DS 1
-OTAREA DS 80
-OTLENG DS 1
-ZSFLAG DS 1
- END
+++ /dev/null
-../../../casl2 testbinout.casl ../binout.casl
-0
-1
-100111001101
-1000000000000001
+++ /dev/null
-YACASL2DIR= ../../..
-CASL2 = $(YACASL2DIR)/casl2
-ASFILE = testbinout.casl ../binout.casl
-CMD = $(CASL2) $(ASFILE)
-include $(YACASL2DIR)/test/TEST.mk
+++ /dev/null
-;;; BINOUTを呼び出す
-MAIN START
- LAD GR2,0
-MLOOP CPA GR2,MLEN
- JZE MFIN
- LD GR1,MWORD,GR2
- CALL BINOUT
- LAD GR2,1,GR2
- JUMP MLOOP
-MFIN RET
-MWORD DC #0000,#0001,#09CD,#8001
-MLEN DC 4
- END
+++ /dev/null
-../../../casl2 ../floatedit.casl
-input error!
-input error!
-input error!
-\12,345,678.90
-\12,345,678.09
- \2,234,568.19
- \2,234,068.19
- \0.01
+++ /dev/null
-YACASL2DIR= ../../..
-CASL2 = $(YACASL2DIR)/casl2
-ASFILE = ../floatedit.casl
-INFILE = teststr.txt
-CMD = $(CASL2) $(ASFILE) <$(INFILE)
-include $(YACASL2DIR)/test/TEST.mk
+++ /dev/null
-01
-010
-11111111111
-1234567890
-1234567809
-0223456819
-0223406819
-0000000001