Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .MODEL EXTRA LARGE
- .STACK 100H
- .DATA
- N DB ?
- .CODE
- MAIN PROC
- MOV AX,@DATA
- MOV DS,AX
- CALL FACT
- CALL PRINT
- MOV AH,4CH
- INT 21H
- MAIN ENDP
- FACT PROC
- MOV CX,3 ; INPUT
- MOV AX,1 ; OUTPUT
- REAP:
- MUL CX ; N = N * ( N - 1 )
- LOOP REAP
- ESCAPE:
- RET
- FACT ENDP
- ; DATA NEEDS TO PRINT IN DECIMAL FORMAT
- PRINT PROC
- OR AX, AX ; AX < 0
- JGE END_IF1 ; NO > 0
- PUSH AX
- MOV DL,'-'
- MOV AH,2
- INT 21H
- POP AX
- END_IF1:
- XOR CX, CX ; FOR COUNTING HOW MANY DIGITS
- XOR DX, DX ; MAKE DATA SEGMENT CLEAR
- MOV BX, 10D
- SEC1:
- XOR DX, DX
- DIV BX
- PUSH DX
- INC CX
- OR AX,AX
- JNE SEC1
- MOV AH,2
- PRINTLOOP:
- POP DX
- OR DL,30H
- INT 21H
- LOOP PRINTLOOP
- ESC:
- RET
- PRINT ENDP
- END MAIN
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement