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?