![]() ![]() |
; Systemnahe Informatik 2004 1.Klausur Aufgabe 1 ; berechnet (n über k)=n!/((n-k)!*k!) .data nPrompt:.asciiz "n = " kPrompt:.asciiz "k = " Format: .asciiz "%d über %d = %f" .align 2 Output: .word Format n: .space 4 k: .space 4 nüberk: .space 8 .text .global Main Main: addi r1,r0,nPrompt jal InputUnsigned sw n,r1 add r10,r1,r0 addi r1,r0,kPrompt jal InputUnsigned sw k,r1 add r11,r1,r0 add r2,r10,r0 add r1,r10,r0 addi r1,r1,1 sub r1,r1,r11 jal Produkt add r12,r1,r0 ; r12=(n-k+1)*..*(n-1)*n=Zähler addi r1,r0,1 add r2,r11,r0 jal Produkt ; r1=k!=Nenner movi2fp f0,r12 movi2fp f2,r1 cvti2d f0,f0 cvti2d f2,f2 divd f0,f0,f2 sd nüberk,f0 addi r14,r0,Output trap 5 trap 0 ; Produkt berechnet r1*(r1+1)*...*(r2-1)*r2, Ergebnis in r1. .data s3: .space 4 .text Produkt: sw s3,r3 movi2fp f0,r1 movi2fp f2,r2 addi r3,r0,1 movi2fp f4,r3 cvti2d f0,f0 cvti2d f2,f2 cvti2d f4,f4 movd f6,f4 ploop: multd f6,f6,f0 addd f0,f0,f4 addi r1,r1,1 sle r3,r1,r2 bnez r3,ploop cvtd2i f6,f6 movfp2i r1,f6 lw r3,s3 jr r31 |
![]() ![]() |