LOC Data_Segment GREG @ n IS $1 f IS $2 test IS $3 BOS GREG #3000000000000000 Bottom Of Stack SP GREG 0 Stackpointer LOC #100 GREG @ Fak SUB SP,SP,8 push STO $0,SP,0 R"ucksprungadresse LDO n,SP,8 Parameter vom Stack CMP test,n,1 Rekursionsende ? BP test,Rek nein: neuer Aufruf SET f,1 f=1 JMP Ende Rek SUB n,n,1 n=n-1 SUB SP,SP,8 push STO n,SP,0 Parameter auf den Stack GO $0,Fak rekursiver Aufruf LDO f,SP,0 Ergebnis vom Stack ADD SP,SP,8 pop LDO n,SP,8 alter Wert von n MUL f,f,n f = f*n Ende STO f,SP,8 Ergebnis auf den Stack LDO $0,SP,0 R"ucksprungadresse ADD SP,SP,8 pop GO $0,$0,0 R"ucksprung Main SET SP,BOS Initialisierung SET n,7 n=7 SUB SP,SP,8 push STO n,SP,0 Parameter auf den Stack GO $0,Fak Aufruf LDO f,SP,0 Ergebnis vom Stack ADD SP,SP,8 pop TRAP 0,Halt,0