⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 primes.s

📁 unix v7是最后一个广泛发布的研究型UNIX版本
💻 S
字号:
ldfps = 170100^tst/	ldfps	$240	clr	argflg	cmp	(sp)+,$2	blt	begin	tst	(sp)+	mov	(sp),r2	jsr	r5,atof; getch1	inc	argflg	br	begin1begin:	tst	argflg	beq 9f; sys exit; 9:	jsr	r5,atof; getchbegin1:	tstf	fr0	cfcc	bpl 9f; jmp ouch; 9:	bne 9f; sys exit; 9:	cmpf	big,fr0	cfcc	bgt 9f; jmp ouch; 9:/	movf	$f100,fr1	cmpf	fr0,fr1	cfcc	bge	1f	mov	$pt,r33:	cmp	r3,$ptend	bhis	1f	movif	(r3)+,fr1	cmpf	fr1,fr0	cfcc	blt	3b	tst	-(r3)3:	movif	(r3),fr0	jsr	r5,ftoa; wrchar	mov	$'\n,r0	jsr	r5,wrchar	tst	(r3)+	cmp	r3,$ptend	blo	3b	movf	$f100,fr0/1:	divf	$two,fr0	modf	$one,fr0	movf	fr1,fr0	mulf	$two,fr0	addf	$one,fr0	movif	$tsiz8,fr1	movf	fr1,fr5	movf	fr0,nn////	clear the sieve table/2:	mov	$table,r33:	cmp	r3,$table+tabsiz	bhis	3f	clrb	(r3)+	br	3b//	run the sieve/3:	movf	nn,fr0	addf	fr5,fr0	jsr	r5,sqrt	movf	fr0,v/	movf	nn,fr0	movif	$3.,fr1	jsr	pc,5f	movif	$5.,fr1	jsr	pc,5f	movif	$7.,fr1	jsr	pc,5f	movif	$11.,fr1	mov	$factab+2,r44:	jsr	pc,5f	mov	(r4)+,kazookazoo	=.+2	addf	$kazoo,fr1	cmp	r4,$ftabend	blo	3f	mov	$factab,r43:	cmpf	v,fr1	cfcc	bge	4b	br	1f//5:	movf	fr0,fr2	divf	fr1,fr2	modf	$one,fr2	mulf	fr1,fr3	subf	fr0,fr3	cfcc	bpl	3f	addf	fr1,fr33:	cmpf	fr5,fr3	cfcc	ble	3f	movfi	fr3,r0	ashc	$-3.,r0	ash	$-13.,r1	bic	$177770,r1	bisb	bittab(r1),table(r0)	addf	fr1,fr3	br	3b3:	rts	pc///	get one character form the argument string.getch1:	movb	(r2)+,r0	rts	r5//	now get the primes from the table/	and print them./1:/	movf	nn,fr0	clr	r3	br	4f/1:	inc	r3	inc	r3	cmp	r3,$tsiz8	bge	2b/4:/	jsr	pc,prime	bec	3f	movf	nn,fr0	jsr	r5,ftoa; wrchar	mov	$'\n,r0	jsr	r5,wrchar3:	movf	nn,fr0	addf	$two,fr0	movf	fr0,nn	br	1b////prime:	mov	r3,r4	ashc	$-3.,r4	ash	$-13.,r5	bic	$177770,r5	bitb	bittab(r5),table(r4)	bne	1f	sec1:	rts	pc////one	= 40200half	= 40000opower	= 34400power	= 44000f100	= 41710//	get one character from the console./	called from atof./getch:	clr	r0	sys	read; ch; 1	bec 9f; sys exit; 9:	tst r0; bne 9f; sys exit; 9:	mov	ch,r0	rts	r5///	write one character on the console/	called from ftoa./wrchar:	tst	iobuf	bne	1f	mov	$iobuf+2,iobuf1:	movb	r0,*iobuf	inc	iobuf	cmp	iobuf,$iobuf+514.	blo	1f	mov	$1,r0	sys	write; iobuf+2; 512.	mov	$iobuf+2,iobuf1:	rts	r5/	.bssiobuf:	.=.+518.	.text///	read and convert a line from the console into fr0./atof:	mov	r1,-(sp)	movif	$10.,r3	clrf	r01:	jsr	r5,*(r5)	sub	$'0,r0	cmp	r0,$9.	bhi	2f	mulf	r3,r0	movif	r0,r1	addf	r1,r0	br	1b2:	cmp	r0,$' -'0	beq	1b/	mov	(sp)+,r1	tst	(r5)+	rts	r5//ftoa:	mov	$ebuf,r21:	movf	fr0,fr1	divf	$ten,fr1	movf	fr1,fr2	modf	$one,fr2	movf	fr3,-(sp)	mulf	$ten,fr3	negf	fr3	addf	fr0,fr3	movfi	fr3,-(r2)	movf	(sp)+,fr0	tstf	fr0	cfcc	bne	1b1:	mov	(r2)+,r0	add	$60,r0	jsr	r5,*(r5)	cmp	r2,$ebuf	blo	1b	tst	(r5)+	rts	r5////	replace the f.p. number in fr0 by its square root/sqrt:	movf	r0,r1		/ a	tstf	fr0	cfcc	beq	2f	bgt	1f	sec	rts	r5		/ sqrt(-a)1:	seti	movf	fr0,-(sp)	asr	(sp)	add	$20100,(sp)	movf	(sp)+,fr0	movif	$2,r3		/ constant 2	mov	$4,r01:	movf	r1,r2	divf	r0,r2	addf	r2,r0	divf	r3,r0		/ x = (x+a/x)/2	dec	r0	bgt	1b2:	clc	rts	r5//buf:	.=.+38.ebuf:////	complain about a number which the program/	is unable to digestouch:	mov	$2,r0	sys	write; 1f; 2f-1f	jmp	begin/1:	<Ouch.\n>2:	.even//one	= 40200two	= 40400four	= 40600six	= 40700ten	= 41040/	.databittab:	.byte	1, 2, 4, 10, 20, 40, 100, 200big:	056177; 177777; 177777; 177777/pt:	2.; 3.; 5.; 7.; 11.; 13.; 17.; 19.; 23.; 29.; 31.; 37.; 41.; 43.	47.; 53.; 59.; 61.; 67.; 71.; 73.; 79.; 83.; 89.; 97.ptend:nl:	<\n>sp5:	<     >	.even//factab:	41040; 40400; 40600; 40400; 40600; 40700; 40400; 40700	40600; 40400; 40600; 40700; 40700; 40400; 40700; 40600	40400; 40700; 40600; 40700; 41000; 40600; 40400; 40600	40400; 40600; 41000; 40700; 40600; 40700; 40400; 40600	40700; 40400; 40700; 40700; 40600; 40400; 40600; 40700	40400; 40700; 40600; 40400; 40600; 40400; 41040; 40400ftabend:/	.bssch:	.=.+2t:	.=.+8n:	.=.+8v:	.=.+8nn:	.=.+8place:	.=.+8/tabsiz	= 1000.tsiz8	= 8000.table:	.=.+tabsizargflg:	.=.+2	.text

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -