/RECURSIVE ROUTINE TO CALCULATE FACTORIALS /***************************************** /CALLED WITH NUMBER IN ACCUMULATOR /ANSWER IN ACCUMULATOR ON RETURN *1234 /STARTING ADDRESS START, LXI SP 1000 /SET STACK POINTER TO 1000 LDA NUMBER CALL FACTOR STA ANSWER HLT /END OF MAIN ROUTINE FACTOR, CPI 1 /SUBROUTINE FOR FACTORIALS RZ PUSH PSW DCR A CALL FACTOR /RECURSIVE CALL MOV A D POP PSW CALL MULTIP RET MULTIP, MVI B 10 /SIMPLE MULTIPLING ROUTINE LXI H 0 LOOP, RAL JNC SHIFT DAD D SHIFT, DCR B JZ END DAD H JMP LOOP END, MOV A H RET NUMBER, 3 /NUMBER WHOSE FACTORIAL IS WANTED ANSWER, 0 /ANSWER IS PUT HERE $$$$$$$$$$$$$$$$$$ /END OF PROGRAMME