![]() ![]() |
![]() ![]() |
; Systemnahe Informatik 2004 Uebung 4 Aufgabe 3 ; Quadriert die Zahl an der Stelle 0x300 ohne mult/multi ; und schreibt das Ergebnis an Stelle 0x304. .data OverStr: .asciiz "Überlauf! Zahl ist größer 0xffff=16383.\n" .align 2 OverPtr: .word OverStr MaxHW: .word 0xffff .data 0x300 Zahl: .word 12345 ; eine Beispiel-Zahl Quadrat: .space 4 .text lw r1,Zahl ; r1=Zahl lw r2,MaxHW sgt r2,r1,r2 ; r2=Zahl > 0xffff bnez r2,Overflow add r2,r0,r0 ; r2=0=Ergebnis addi r3,r0,16 ; r3=16 add r4,r0,r1 ; r4=Zahl add r5,r0,1 ; r5=1 Schleife: and r6,r1,r5 ; r6=Zahl & r5 beqz r6,Weiter add r2,r2,r4 ; Ergebnis+=r4 Weiter: slli r4,r4,1 ; r4=r4<<1 slli r5,r5,1 ; r5=r5<<1 subi r3,r3,1 bnez r3,Schleife sw Quadrat,r2 trap 0 Overflow: addi r14,r0,OverPtr trap 5 trap 0 |
![]() ![]() |
![]() ![]() |