Advertisement
Guest User

Factorial

a guest
Apr 14th, 2018
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .MODEL EXTRA LARGE
  2. .STACK 100H
  3. .DATA
  4.     N DB ?
  5.    
  6.    
  7. .CODE
  8.     MAIN PROC
  9.    
  10.     MOV AX,@DATA
  11.     MOV DS,AX
  12.          
  13.     CALL FACT  
  14.    
  15.     CALL PRINT  
  16.    
  17.     MOV AH,4CH
  18.     INT 21H
  19.    
  20.     MAIN ENDP
  21.    
  22.     FACT PROC
  23.         MOV CX,3 ; INPUT
  24.         MOV AX,1 ; OUTPUT
  25.        
  26.         REAP:
  27.             MUL  CX  ; N = N * ( N - 1 )
  28.             LOOP REAP  
  29.    
  30.     ESCAPE:    
  31.         RET    
  32.     FACT ENDP
  33.    
  34.     ; DATA NEEDS TO PRINT IN DECIMAL FORMAT
  35.     PRINT PROC
  36.         OR  AX, AX ; AX < 0
  37.         JGE END_IF1 ; NO > 0
  38.        
  39.         PUSH AX
  40.         MOV DL,'-'
  41.         MOV AH,2
  42.         INT 21H
  43.         POP AX
  44.        
  45.         END_IF1:
  46.             XOR CX, CX ; FOR COUNTING HOW MANY DIGITS
  47.             XOR DX, DX ; MAKE DATA SEGMENT CLEAR
  48.             MOV BX, 10D
  49.             SEC1:
  50.                 XOR     DX, DX
  51.                 DIV     BX
  52.                 PUSH    DX
  53.                 INC     CX
  54.                
  55.                 OR      AX,AX
  56.                 JNE     SEC1
  57.                
  58.                 MOV     AH,2
  59.                  
  60.             PRINTLOOP:
  61.                  POP    DX
  62.                  OR     DL,30H
  63.                  INT    21H
  64.                  LOOP   PRINTLOOP      
  65.        
  66.     ESC:    
  67.         RET
  68.     PRINT ENDP
  69.    
  70.    
  71. END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement