Example: stock market

CASLⅡプログラミング

Copyright 2004.. EXMPL START BEGIN ; EXMPL . ; . ; BEGIN . BEGIN LD GR1,A ; GR1 (A) . LD GR2,A ; GR2 (A) . SUBA GR1,B ; GR1 (B) . ; (GR1)=(A)-(B) . JPL DONE ; (A)>(B) DONE (GR2)=(A). LD GR2,B ; (A) (B) (GR2) (B) . DONE ST GR2,MAX ; (A),(B) MAX . RET ; . MAX DS 1 ; MAX . A DC 123 ; 123 A . B DC 45 ; 45 B . END.. START .. MAIN START FROMHERE. FROMHERE LD GR0,A.. ADD GR0,B.. 1. ST GR0,C. RET. A DC 123. B DC -15. C DS 1. END. END . END . END . DC (define constant). 10 16 .. DC 12 ; 0000000000001100 10 . DC -12 ; 1111111111110100 10 . DC #A1 ; 0000000010100001 16 . DC #FFFF : 1111111111111111 16 . DC A*2' ; 0000000001000001 1 1 8 . ; 0000000000101010 ( 8 ) . ; 0000000000110010 . COMET JIS X0210 .. 0 @ P. ! 1 A Q. 2 B R. # 3 C S. $ 4 D T. % 5 E U. & 6 F V. 7 G W. ( 8 H X. ) 9 I Y. 2. A * : J Z. B + ; K [. C , < L \. D - = M ].

dc #ffff : 内部表現は 1111111111111111 最大の 16進数 1 文字を 1 語の下位 8 ビットで 表す(上位 8 ビットは0)。文字 数分の語数を使う。 dc ‘a*2’ ; 内部表現は 00 0001 01; 0000000000101010 ; 0000000000110010 cometⅡにおける文字コード(jis x0210) 上位4ビット

Tags:

  1111111111111111

Information

Domain:

Source:

Link to this page:

Please notify us if you found a problem with this document:

Other abuse

Advertisement

Transcription of CASLⅡプログラミング

1 Copyright 2004.. EXMPL START BEGIN ; EXMPL . ; . ; BEGIN . BEGIN LD GR1,A ; GR1 (A) . LD GR2,A ; GR2 (A) . SUBA GR1,B ; GR1 (B) . ; (GR1)=(A)-(B) . JPL DONE ; (A)>(B) DONE (GR2)=(A). LD GR2,B ; (A) (B) (GR2) (B) . DONE ST GR2,MAX ; (A),(B) MAX . RET ; . MAX DS 1 ; MAX . A DC 123 ; 123 A . B DC 45 ; 45 B . END.. START .. MAIN START FROMHERE. FROMHERE LD GR0,A.. ADD GR0,B.. 1. ST GR0,C. RET. A DC 123. B DC -15. C DS 1. END. END . END . END . DC (define constant). 10 16 .. DC 12 ; 0000000000001100 10 . DC -12 ; 1111111111110100 10 . DC #A1 ; 0000000010100001 16 . DC #FFFF : 1111111111111111 16 . DC A*2' ; 0000000001000001 1 1 8 . ; 0000000000101010 ( 8 ) . ; 0000000000110010 . COMET JIS X0210 .. 0 @ P. ! 1 A Q. 2 B R. # 3 C S. $ 4 D T. % 5 E U. & 6 F V. 7 G W. ( 8 H X. ) 9 I Y. 2. A * : J Z. B + ; K [. C , < L \. D - = M ].

2 E . > N ^. F / ? O - . LD GR0,A.. A DC 123. GR0 123 DC . literal . LD GR0,=123. =123 adr . =123 10 . =#A12 16 . ='a' .. CASL .. LD GR1,=0. 0 . immediate data instruction . LD r1,r2 . r2 LDI . LDI GR1,=5 load immediate data . r2 5=(0101)2 . 3. DS (define storage).. A . A DS 3. B DS 0. B1 DS 2 . B B1 B . B2 DS 1 B1 . B2 . 1 16 .. LOOPING START.. LD GR1,=0 ; GR1 0. ; LAD GR1,0 . LOOPTOP CPA GR1,=10 ; (GR1)=10? JZE LOOPEND ; (GR1)=0 .. ADDA GR1,=1 ; GR1 . ; LAD GR1,1,GR1 . JUMP LOOPTOP ; . LOOPEND ; .. RET.. END. 4.. LOOPING START. LD GR1,=10 ; 10 . LOOPTOP ; .. SUBA GR1,=1 ; GR1 1 . CPA GR1,=0 ; (GR1)=0? JPL LOOPTOP ; (GR1)>0 . LOOPEND ; .. RET.. END. LD (load). LD r1,r2 r1 (r2) r2 r1 . LD r,adr[,x] r (adr+(x)) r . LD r,=l r l . ( ) ( ) . adr x adr+(x) .. LAD (load address). LAD r,adr[,x] r r . LAD r,l[,x] r l . l .. 5.

3 LAD R1,5,R2. R1 5+(R2) 5+(R2) .. LAD R1,5,R1. R1 5 LAD .. CASL . A B . X 12 . R3 0 . A B C .. C . CPA (compare arithmetic) CPL (compare logical). CPA r1,r2 (r1) (r2) (r) ( ) . CPA r,adr[,x] FR . CPA r,=l . CPL r1,r2 (r1)>(r2) (r)>( ) SF 0, ZF 0. CPL r,adr[,x] (r1)=(r2) (r)>( ) SF 0, ZF 1. CPL r,=l (r1)<(r2) (r)<( ) SF 1, ZF 0. arithmetical comparison . logical comparison 16 . CPA r1,r2 (r1)-(r2). / SF=0/1 =0 / ZF=1/0 . r1, r2, r . (GR1)=(000A)16, (GR2)=(8003)16 . CPA GR1,GR2 SF=0, ZF=0, OF=0. CPL GR1,GR2 SF=1, ZF=0, OF=0. 6. JPL (jump on plus), JMI (jump on minus), JZE (jump on zero), JNZ (jump on nonzero), JOV (jump on overflow), JUMP. JPL adr[,x] (SF)=0 (ZF)=0 . JMI adr[,x] (SF)=1 . JZE adr[,x] (ZF)=1 . JNZ adr[,x] (ZF)=0 . JOV adr[,x] (OF)=1 . JUMP .. ( ) DATA 100 . SUM . START BGN. BGN IN INAREA,INLEN. SUBA GR1,GR1 ; GR1 ( GR1 ).

4 LAD GR2,0 ; GR2 . ; . ; 0. LOOP ADDA GR1,DATA,GR2 ; GR1 . LAD GR2,1,GR2 ; GR2 . CPL GR2,=100 ; (GR2)=100? JMI LOOP ; 100 . ST GR1,SUM ; SUM . RET. DATA DS 0 ; . INAREA DS 256 ; . INLEN DS 1 ; . SUM DS 1 ; . END. 7. ADDA (add arithmetic), SUBA (subtract arithmetic) . ADDL (add logical) SUBL (subtract logical). ADDA r1,r2 r1 (r1)+(r2) r1 r2 . ADDA r,adr[,x] r (r)+(adr+(x)) r . ADDA r,=l r (r)+l r l . SUBA r1,r2 r1 (r1)-(r2) r1 r2 . SUBA r,adr[,x] r (r)-(adr+(x)) r . SUBA r,=l r (r)- l r l . ADDL r1,r2 r1 (r1)+L(r2) r1 r2 . ADDL r,adr[,x] r (r)+L(adr+(x)) r . ADDL r,=l r (r)+Ll r l . SUBL r1,r2 r1 (r1)-L(r2) r1 r2 . SUBL r,adr[,x] r (r)-L(adr+(x)) r . SUBL r,= l r (r)-Ll r l .. SF=0 & ZF=0, SF=1 & ZF=0, SF=0 & ZF=1 overflow: . OF=1 . OF=0 .. SF,ZF,OF . (GR1)=(000A)16, (GR2)=(FFFA)16 (000A)16 . (10)10 (FFFA)16 (-6)10 . (65530)10.

5 ADDA GR1,GR2 (GR1)=(0004)16, SF=0, ZF=0, OF=0. ADDL GR1,GR2 (GR1)= (0005)16, SF=0, ZF=0, OF=1. SUBA GR1,GR2 (GR1)=(0010)16, SF=0, ZF=0, OF=0. SUBL GR2,GR1 (GR2)=(FFF0)16, SF=0, ZF=0, OF=0. SUBA GR1,GR1 (GR1)=(0000)16, SF=0, ZF=1, OF=0. SUBA GR2,GR1 (GR2)=(FFF0)16, SF=1, ZF=0, OF=0. 8. CASL . 1 n S n N . A, B, C MIN . DATA 100 .. DATA 100 .. macro .. CASL .. IN OUT. IN inarea,lg inarea 256 . lg . OUT outarea,lg outarea lg . IN inarea 256 CASL 256.. 8 8 0 . lg . 256 . inarea 256 257 . 0 .. 9. IN OUT outarea lg . 1 1 8 8 . 256 .. AREA 16 . START DATAIN. DATAIN IN DATA,ILEN ; . LAD GR1,0. CPA GR1,ILEN ; . JNZ DATAIN. ; . LAD GR0,0 ; GR0 . LD GR1,ILEN ; (LEN)>0 . LOOP SUBA GR1,=1 ; GR1 . ; . LD GR2,DATA,GR1 ; 1 GR2 . AND GR2,MASK ; . ; AND GR2,=#000F . ADDA GR0,GR2 ; . CPA GR1,=0 ; . JPL LOOP ; . ST GR0,SUM ; SUM . ; 16 OUTAREA.

6 ; . OUT OUTAREA,OLEN. RET. MASK DC #000F. DATA DS 256. ILEN DS 1. SUM DS 1. OUTAREA DS 4. OLEN DS 1. END. 10. AND, OR, EOR. AND r1,r2 r1 (r1) (r2) (r1) (r2) (r) ( ) . AND r,adr[,x] r (r) (adr+(x)) r1 . AND r,=l r (r) l r . OR r1,r2 r1 (r1) (r2) (r1) (r2) (r) ( ) . OR r,adr[,x] r (r) (adr+(x)) r1 . OR r,l r (r) l r . EOR r1,r2 r1 (r1) (r2) (r1) (r2) (r) ( ) . EOR r,adr[,x] r1 (r1) (r2) r1. EOR r,l r (r) l r . (and) (inclusive or) (exclusive or) .. (GR1)=(0000 1111 1010 1100)2, (GR2)=(1100 1010 1100 0101)2 . AND GR1,GR2 (GR1)=(0000 1010 1000 0100)16. OR GR1,GR2 (GR1)=(1100 1111 1110 1101)16. EOR GR1,GR2 (GR1)=(1100 0101 0110 1001)16. (NOT) 0 .. EOR GR1,GR1 (GR1)=(0000 0000 0000 0000)16 . EOR GR1,=#FFFF GR1 0 1 1 0 . ) .. 0 . AND .. A 1 .. A GR0 .. A B . 11. SLA (shift left arithmetic), SRA (shift right arithmetic), SLL (shift left logical), SRL (shift right logical).

7 SLA r,adr[,x] (r) . SRA r,adr[,x] 0 .. SLL r,adr[,x] (r) . SRL r,adr[,x] 0 . (GR1)=(0000 1111 1010 1100)2, (GR2)=(1100 1010 1100 0101)2, (GR2)=(0000 0000 0000 0100)2 . SLA GR1,4 (GR1)=(1111 1010 1100 0000)16. SRA GR2,4 (GR2)=(1111 1100 1010 1100)16. SRL GR2,4 (GR2)=(0000 1100 1010 1100)16. SLL GR2,4,GR3 (GR2)=(1100 0101 0000 0000)16. SRL GR2,16 (GR2)=(0000 0000 0000 0000)16 . SRA GR2,16 (GR2)=(1111 1111 1111 1111)16 .. k . 2k 2k .. overflow . 2k . underflow . 2k 0 1 . 1 0 .. A B C . A B 0/1 20 215 C . 0 B 2 A . A 1 B 0 . 12. 0 B 1 B 0 .. MULTIPLY START HAJIME. HAJIME LAD GR0,0 ; GR0 GR0 0. LD GR1,A ; . LD GR2,B ; . LOOP CPA GR2,=0 ; 0 . JZE OWARI ; 0 . AND GR2,=#FFF1 ; 2k (k=0 15). JZE NEXT ; 0 . ADDA GR0,GR1 ; A 2k . NEXT SLA GR1,1 ; A 2 (1 ). SRA GR2,1 ; B 2 (1 ). JUMP LOOP ; . OWARI ST GR0,C. RET. A DC 123. B DC 10.

8 C DS 1. END.. subroutine .. CALL .. RET . CALL adr[,x] . RET .. 13. RET .. (data structure) .. pushdown stack . x1 . [x1, x2, .., xn] x2.. xn .. ! top x1 . x1 . [x2, x3, .., xn].. ! . y . [y, x1, x2, .., xn].. ! .. LIFO (last-in first-out) . 14.. first-in last-out FIFO (first-in first-out) .. x1 x2 .. xn .. [x1, x2, .., xn].. ! (front ) x1 . [x2, .., xn].. ! (rear ) xn y . [x1, x2, .., xn, y].. ! . CASL .. PUSH adr[,x] SP SP .. POP r SP r . SP . CALL . SP . PR 2 . SP . (return address) .. adr,[x] . RET . SP CALL .. SP .. 15. PR . CALL . CALL CALL parameter passing PUSH . SP . PUSH . CALL .. EXAMPLE START BGN ; A B AB C D CD . LD GR6,A ; GR6 A . LD GR7,B ; GR7 B . CALL MULTIPLY ; . ST GR0,AB ; GR0 A B . LD GR6,C ; C D . LD GR7,D. CALL MULTIPLY. ST GR0,CD ; GR0 C D . A DC 12. B DC 34. C DC 123. D DC 456. AB DS 1. CD DS 1.

9 END. 16. MULTIPLY START HAJIME. HAJIME LAD GR0,0 ; GR0 GR0 0. LD GR1,GR6 ; . LD GR2,GR7 ; . LOOP CPA GR2,=0 ; 0 . JZE OWARI ; 0 . AND GR2,=#FFF1 ; 2k (k=0 15). JZE NEXT ; 0 . ADDA GR0,GR1 ; A 2k . NEXT SLA GR1,1 ; A 2 (1 ). SRA GR2,1 ; B 2 (1 ). JUMP LOOP ; . OWARI RET ; . END.. (8000)16 (9000)16 . X, Y, Z X,Y,Z . 100 .. GR0 0 . DATABGN DATAEND MAX . DATA 100 .. DATA 100 . A Z .. ( ) . DATA 16 . 10 DATA 100 1 . 11 ADDA .. 12 .. 13 DATA 100 . 17. M . 14 DATA 100 . 15 5 CASL . 2 .. 18.