(a-b)/2+b=(a+b)/2 -> ein punkt mehr ;)
[info3/asm.git] / loesung4-2.new.s
1 ; blatt 4
2 ; aufgabe 2
3
4 .data
5 text: .asciiz "input: "
6 .align 2
7
8 .text
9
10 ;addi r1,r0,text
11 ;jal InputUnsigned
12 ; das input zeug tut irgendwie nicht im windlx mit wine :( 
13 ; 2 befehle ...
14
15 addi r1,r0,23 ; deshalb mach ich das mal fuer 23
16 ; diesen befehl aber nicht zaehlen, wegen egtl den oberen 2! :p
17
18 ; r2 sei untere grenze, aber da steht schon 0 drin
19 add r3,r0,r1 ; obere grenze
20
21 loop:
22 sub r5,r3,r2
23 sub r5,r5,1
24 beqz r5,end
25 add r4,r3,r2
26 srli r4,r4,1 ; fast mitte
27 multu r6,r4,r4
28 sgt r7,r6,r1
29 beqz r7,incleft
30 add r3,r0,r4
31 j loop
32
33 incleft:
34 add r2,r0,r4
35 j loop
36
37 end:
38 sw 0x200,r2
39 sw 0x204,r3
40 trap 0 ; der zaehlt ja nicht .. :)