LOC Data_Segment GREG @ $*$ Bottom Of Stack und Stackpointer BOS GREG #3000000000000000 SP GREG 0 LOC #100 GREG @ PREFIX Fak: ab hier gilt das Pr"afix {\tt :Fak:} n IS $1 genauer {\tt :Fak:n} f IS $2 {\tt :Fak:f} und test IS $3 {\tt :Fak:test} :Fak SUB :SP,:SP,8 {\tt :Fak} und {\tt :SP} sind globale Namen STO $0,:SP,0 LDO n,:SP,8 laden von {\tt :Fak:n} CMP test,n,1 BP test,1F springe vor zu {\tt 1H} SET f,1 JMP 2F springe vor zu {\tt 2H} 1H SUB n,n,1 SUB :SP,:SP,8 STO n,:SP,0 GO $0,:Fak rekursiver Aufruf von {\tt :Fak} LDO f,:SP,0 laden von {\tt :Fak:f} ADD :SP,:SP,8 LDO n,:SP,8 alter Wert von {\tt :Fak:n} MUL f,f,n 2H STO f,:SP,8 LDO $0,:SP,0 R"ucksprungadresse ADD :SP,:SP,8 GO $0,$0,0 Return PREFIX : Ende des Pr"afix {\tt :Fak:} f IS $1 dies ist nun {\tt :f:} n IS $2 und {\tt :n:} Main SET SP,BOS Initialisierung SET n,7 {\tt :n:} wird 7 SUB SP,SP,8 STO n,SP,0 Parameter auf den Stack GO $0,Fak Aufruf von {\tt Fak} LDO f,SP,0 Ergebnis vom Stack ADD SP,SP,8 TRAP 0,Halt,0