LOC Data_Segment X1 GREG @ Zeiger auf X1 AddrX1 IS @ OCTA 3,65,8,119,24,512,88 N IS (@-AddrX1) Laenge des Arrays in Byte LOC #3000000000000000 Heap GREG @ SP GREG 0 LOC #100 GREG @ $*$ Unterprogramm Maximum-Berechnung $*$ Definition Parameterbereich ParSize IS 16 OfStart IS 0 OfAnz IS 8 $*$ lokale Variable i IS $0 pxi IS $1 max IS $2 xi IS $3 test IS $4 Locals IS 5 Maxi SUB SP,SP,8*Locals STO $0,SP,0 push R"ucksprungadresse STO $1,SP,8 sichere lokale Register STO $2,SP,16 und STO $3,SP,24 pop Parameter STO $4,SP,32 LDO pxi,SP,8*Locals+OfStart LDO i,SP,8*Locals+OfAnz SUB i,i,1 SL i,i,3 initialisiere Index (i $<$ 65535) LDO max,pxi,i initialisiere max JMP Weiter While-Schleife beginnt mit Test Wdhl LDO xi,pxi,i CMP test,max,xi xi $>$ max? CSN max,test,xi Weiter SUB i,i,8 BNN i,Wdhl i$\ge$0, nochmal STO max,SP,8*Locals LDO $4,SP,32 speichere lokale Register zur"uck LDO $3,SP,24 LDO $2,SP,16 LDO $1,SP,8 LDO $0,SP,0 speichere R"ucksprungadresse zur"uck ADD SP,SP,8*Locals GO $0,$0,0 $*$ Hauptprogramm Main SET SP,Heap SET $3,127 Test, ob's wirklich gerettet wird SUB SP,SP,ParSize SET $1,X1 STO $1,SP,OfStart SET $1,N DIV $1,$1,8 STO $1,SP,OfAnz GO $0,Maxi LDO $1,SP ADD SP,SP,ParSize TRAP 0,Halt,0