92 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
	
		
			2.1 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
.sp 1.5i
 | 
						|
.ft B
 | 
						|
Appendix C: An example
 | 
						|
.ft R
 | 
						|
.nh
 | 
						|
.nf
 | 
						|
 | 
						|
 | 
						|
\h'+10u' 1	\fBprogram\fR factorials(input, output);
 | 
						|
\h'+10u' 2	{ This program prints factorials }
 | 
						|
\h'+10u' 3
 | 
						|
\h'+10u' 4	\fBconst\fR
 | 
						|
\h'+10u' 5	        FAC1 = 1;
 | 
						|
\h'+10u' 6	\fBvar\fR
 | 
						|
\h'+10u' 7	        i : integer;
 | 
						|
\h'+10u' 8
 | 
						|
\h'+10u' 9	\fBfunction\fR factorial(n : integer) : integer;
 | 
						|
10	\fBbegin\fR
 | 
						|
11	        \fBif\fR n = FAC1 \fBthen\fR
 | 
						|
12	                factorial := FAC1
 | 
						|
13	        \fBelse\fR
 | 
						|
14	                factorial := n * factorial(n-1);
 | 
						|
15	\fBend\fR;
 | 
						|
16
 | 
						|
17	\fBbegin\fR
 | 
						|
18	        write('Give a number : ');
 | 
						|
19	        readln(i);
 | 
						|
20	        \fBif\fR i < 1 \fBthen\fR
 | 
						|
21	                writeln('No factorial')
 | 
						|
22	        \fBelse\fR
 | 
						|
23	                writeln(factorial(i):1);
 | 
						|
24	\fBend\fR.
 | 
						|
.bp
 | 
						|
.po
 | 
						|
.DS
 | 
						|
 mes 2,4,4					     loc 16
 | 
						|
\&.1						     cal $_wrs
 | 
						|
 rom 'factorials.p\(rs000'				     asp 12
 | 
						|
i						     lin 19
 | 
						|
 bss 4,0,0					     lae input
 | 
						|
output						     cal $_rdi
 | 
						|
 bss 540,0,0					     asp 4
 | 
						|
input						     lfr 4
 | 
						|
 bss 540,0,0					     ste i
 | 
						|
 exp $factorial					     lae input
 | 
						|
 pro $factorial, ?					     cal $_rln
 | 
						|
 mes 9,4					     asp 4
 | 
						|
 lin 11						     lin 20
 | 
						|
 lol 0						     loe i
 | 
						|
 loc 1						     loc 1
 | 
						|
 cmi 4						     cmi 4
 | 
						|
 teq						     tlt
 | 
						|
 zeq *1						     zeq *1
 | 
						|
 lin 12						     lin 21
 | 
						|
 loc 1						    .4
 | 
						|
 stl -4						     rom 'No factorial'
 | 
						|
 bra *2						     lae output
 | 
						|
1						     lae .4
 | 
						|
 lin 14						     loc 12
 | 
						|
 lol 0						     cal $_wrs
 | 
						|
 lol 0						     asp 12
 | 
						|
 loc 1						     lae output
 | 
						|
 sbi 4						     cal $_wln
 | 
						|
 cal $factorial					     asp 4
 | 
						|
 asp 4						     bra *2
 | 
						|
 lfr 4						    1
 | 
						|
 mli 4						     lin 23
 | 
						|
 stl -4						     lae output
 | 
						|
2						     loe i
 | 
						|
 lin 15						     cal $factorial
 | 
						|
 mes 3,0,4,0,0					     asp 4
 | 
						|
 lol -4						     lfr 4
 | 
						|
 ret 4						     loc 1
 | 
						|
 end 4						     cal $_wsi
 | 
						|
 exp $m_a_i_n				     asp 12
 | 
						|
 pro $m_a_i_n, ?				     lae output
 | 
						|
 mes 9,0					     cal $_wln
 | 
						|
 fil .1						     asp 4
 | 
						|
\&.2						    2
 | 
						|
 con input, output				     lin 24
 | 
						|
 lxl 0						     loc 0
 | 
						|
 lae .2						     cal $_hlt
 | 
						|
 loc 2						     end 0
 | 
						|
 lxa 0						     mes 4,24,'factorials.p\(rs000'
 | 
						|
 cal $_ini
 | 
						|
 asp 16
 | 
						|
 lin 18
 | 
						|
\&.3
 | 
						|
 rom 'Give a number : '
 | 
						|
 lae output
 | 
						|
 lae .3
 | 
						|
.DE
 |