Witam, mam problem dotyczący programu napisanego w Assemblerze dla procesora DLX.

; WINDLX Ex.3: Factorial		
; (c) 1991 Guenther Raidl		
; Modified: 1992 Maziar Khosravipour 
; Program begin at symbol main
; requires module INPUT
; read a number from stdin and calculate the factorial (type: double)
; the result is written to stdout
;---
		.data
Prompt: 	.asciiz 	"An integer value >1 : "

PrintfFormat:	.asciiz 	"Factorial = %g\n\n"
		.align		2
PrintfPar:	.word		PrintfFormat
PrintfValue:.space		8

		.text
		.global	main
main:
		;--- Read value from stdin into R1
		addi		r1,r0,Prompt
		jal		InputUnsigned
		;--- init values
		movi2fp 	f10,r1	;R1 -> D0	D0..Count register
		cvti2d	f0,f10
		addi		r2,r0,1 	;1 -> D2	D2..result
		movi2fp	f11,r2
		cvti2d	f2,f11
		movd		f4,f2		;1-> D4 	D4..Constant 1
		;--- Break loop if D0 = 1
Loop:		led		f0,f4		;D0<=1 ?
		bfpt		Finish
		;--- Multiplication and next loop
		multd		f2,f2,f0
		subd		f0,f0,f4
		j		Loop
Finish: 	;--- write result to stdout
		sd		PrintfValue,f2
		addi		r14,r0,PrintfPar
		trap		5
		;--- end
		trap		0

Oto programik, który jest przykładem dołączonym do symulatora proceroza DLX: WINDLX
Liczy on silnie z podanej liczby.
Sprawa jest taka że maksymalną liczbę jaką można podać jest 170.

Mam zadanie takie, żeby go przerobić tak, żęby program przyjmował większą liczbę niż 170.

Czy może mi ktoś pomóc?