home *** CD-ROM | disk | FTP | other *** search
File List | 1991-01-05 | 4.8 KB | 138 lines |
-
-
- Stony Brook Modula-2 MOD\SIEVESTO.MOD
-
-
-
- 1 MODULE SieveFitted;
- 2
- 3 FROM InOut IMPORT Read, Write, WriteString, WriteCard, WriteLn;
- 4
- 5 CONST
- 6 Size = 8190;
- 7 ITER = 2000;
- 8
- 9 VAR
- 10 flag :ARRAY [0..Size] OF BOOLEAN;
- 11 ch :CHAR;
- 12 count :CARDINAL;
- 13
- 14 PROCEDURE SieveTest;
- 15 VAR i, j, k, prime :CARDINAL;
- 16 BEGIN
- 17 FOR i := 1 TO ITER DO
- 18 count := 0;
- 19 FOR j := 0 TO Size DO
- 20 flag[j] := TRUE;
- 21 END;
- 22 FOR j := 0 TO Size DO
- 23 IF flag[j] THEN
- 24 prime := j+j+3;
- 25 k := j+prime;
- 26 WHILE k <= Size DO
- 27 flag[k] := FALSE;
- 28 INC(k,prime);
- 29 END;
- 30 INC(count);
- 31 END;
- 32 END;
- 33 END;
- 34 END SieveTest;
- 35
- 36 BEGIN
-
- 0000
- 0000 31 ED XOR BP, BP
- 0002 55 PUSH BP
- 0003 89 E5 MOV BP, SP
- 0005 9A 00000000 CALL FAR SYSTEM_StartSmall
- 000A 83 EC 02 SUB SP, 0002
- 000D
- 000D 9A 00000000 CALL FAR InOut
-
- 37 WriteString("Hit a key to start 2000 ITERATIONS");
-
- 0012 B8 0022 MOV AX, 0022
- 0015 50 PUSH AX
- 0016 B8 0000 MOV AX, OFFSET _CONST+0000
- 0019 1E PUSH DS
- 001A 50 PUSH AX
- 001B 9A 00000000 CALL FAR InOut_WriteString
-
- Stony Brook Modula-2 MOD\SIEVESTO.MOD
-
-
-
- 38 Read(ch); WriteLn;
-
- 0020 8D 46 FF LEA AX, WORD PTR FFFF[BP]
- 0023 16 PUSH SS
- 0024 50 PUSH AX
- 0025 9A 00000000 CALL FAR InOut_Read
- 002A 9A 00000000 CALL FAR InOut_WriteLn
-
- 39 SieveTest;
-
- 002F BE 0001 MOV SI, 0001
- 0032 EVEN
- 0032 L0010
- 0032 C7 06 00000000 MOV WORD PTR _BSS+0000, 0000
- 0038 BF 0002 MOV DI, OFFSET _BSS+0002
- 003B 1E PUSH DS
- 003C 07 POP ES
- 003D B8 0101 MOV AX, 0101
- 0040 FC CLD
- 0041 B9 0FFF MOV CX, 0FFF
- 0044 F2 REP
- 0045 AB STOSW
- 0046 AA STOSB
- 0047 31 FF XOR DI, DI
- 0049 90 EVEN
- 004A L0016
- 004A 80 BD 000200 CMP BYTE PTR _BSS+0002[DI], 0000
- 004F 74 22 JE L0019
- 0051 89 FA MOV DX, DI
- 0053 01 D2 ADD DX, DX
- 0055 83 C2 03 ADD DX, 0003
- 0058 89 FB MOV BX, DI
- 005A 01 D3 ADD BX, DX
- 005C 81 FB 1FFE CMP BX, 1FFE
- 0060 77 0D JA L001B
- 0062 EVEN
- 0062 L001A
- 0062 C6 87 000200 MOV BYTE PTR _BSS+0002[BX], 0000
- 0067 01 D3 ADD BX, DX
- 0069 81 FB 1FFE CMP BX, 1FFE
- 006D 76 F3 JBE L001A
- 006F L001B
- 006F FF 06 0000 INC WORD PTR _BSS+0000
- 0073 L0019
- 0073 47 INC DI
- 0074 81 FF 1FFE CMP DI, 1FFE
- 0078 76 D0 JBE L0016
- 007A 46 INC SI
- 007B 81 FE 07D0 CMP SI, 07D0
- 007F 76 B1 JBE L0010
-
- 40 Write(7C); WriteCard(count,5);
-
- 0081 B8 0007 MOV AX, 0007
-
- Stony Brook Modula-2 MOD\SIEVESTO.MOD
-
-
- 0084 50 PUSH AX
- 0085 9A 00000000 CALL FAR InOut_Write
- 008A FF 36 0000 PUSH WORD PTR _BSS+0000
- 008E B8 0005 MOV AX, 0005
- 0091 50 PUSH AX
- 0092 9A 00000000 CALL FAR InOut_WriteCard
-
- 41 END SieveFitted.
-
- 0097 L000F
- 0097
- 0097 31 C0 XOR AX, AX
- 0099 50 PUSH AX
- 009A 9A 00000000 CALL FAR SYSTEM_HALT
-