?? sieve.lst
字號:
C51 COMPILER V8.02 SIEVE 02/18/2006 22:10:18 PAGE 1
C51 COMPILER V8.02, COMPILATION OF MODULE SIEVE
OBJECT MODULE PLACED IN Sieve.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE Sieve.c LARGE OPTIMIZE(6,SPEED) BROWSE DEBUG OBJECTEXTEND
line level source
1 /*------------------------------------------------------------------------------
2 SIEVE.C: Eratosthenes Sieve Prime Number Program in C from Byte Jan 1983.
3 ------------------------------------------------------------------------------*/
4
5 #include <intrins.h>
6 #include <stdio.h>
7 #include <reg51.h>
8
9 #define TRUE 1
10 #define FALSE 0
11 #define SIZE 8190
12
13 char xdata flags[SIZE+1];
14
15 /*------------------------------------------------
16 ------------------------------------------------*/
17 void main (void) {
18 1 register int i,k;
19 1 int prime,count,iter;
20 1
21 1 /*------------------------------------------------
22 1 Setup the serial port for 1200 baud at 16MHz.
23 1 ------------------------------------------------*/
24 1 SCON = 0x50; /* SCON: mode 1, 8-bit UART, enable rcvr */
25 1 TMOD |= 0x20; /* TMOD: timer 1, mode 2, 8-bit reload */
26 1 TH1 = 221; /* TH1: reload value for 1200 baud @ 16MHz */
27 1 TR1 = 1; /* TR1: timer 1 run */
28 1 TI = 1; /* TI: set TI to send first char of UART */
29 1
30 1 /*------------------------------------------------
31 1 Th following code is an implementation of the
32 1 Sieve of Eratosthenes.
33 1 ------------------------------------------------*/
34 1 printf("10 iterations\n");
35 1 for (iter = 1; iter <= 10; iter++) /* do program 10 times */
36 1 {
37 2 P1 = iter; /* output iter on P1 */
38 2
39 2 count = 0; /* initialize prime counter */
40 2 for (i = 0; i <= SIZE; i++) /* set all flags true */
41 2 flags[i] = TRUE;
42 2 for (i = 0; i <= SIZE; i++)
43 2 {
44 3 if (flags[i]) /* found a prime */
45 3 {
46 4 prime = i + i + 3; /* twice index + 3 */
47 4 for (k = i + prime; k <= SIZE; k += prime)
48 4 flags[k] = FALSE; /* kill all multiples */
49 4 count++; /* primes found */
50 4 }
51 3 }
52 2 }
53 1 printf("%d primes.\n",count); /* primes found in 10th pass */
54 1
55 1 while (1);
C51 COMPILER V8.02 SIEVE 02/18/2006 22:10:18 PAGE 2
56 1 }
57
58
MODULE INFORMATION: STATIC OVERLAYABLE
CODE SIZE = 226 ----
CONSTANT SIZE = 27 ----
XDATA SIZE = 8191 6
PDATA SIZE = ---- ----
DATA SIZE = ---- ----
IDATA SIZE = ---- ----
BIT SIZE = ---- ----
END OF MODULE INFORMATION.
C51 COMPILATION COMPLETE. 0 WARNING(S), 0 ERROR(S)
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -