-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathFACTORIAL_MEMORY.asm
87 lines (58 loc) · 2.46 KB
/
FACTORIAL_MEMORY.asm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
M_XDATA SEGMENT
ALGDGADU DB ?
OUTER_FACT DW ?
WELCOME DB "BIENVENIDO, PROGRAMA PARA CALCULAR FACTORIAL DE NUMERO DE 1 DIGITO",10,13,24H
WOW64 DB "Ingrese Numero: ",10,13,24H
EQUAL DB "!= --GUARDADO EN VARIABLE 'OUTER_FACT'--$",
M_XDATA ENDS
FULLCODE SEGMENT
ASSUME CS:FULLCODE, DS:M_XDATA ;<=THIS{AUTO ASIGN ON ME.DISPOSE() BY CHECHESWAP! JJNB}
START:
MOV AX,M_XDATA
MOV DS, AX
MOV DX, OFFSET WELCOME
MOV AH, 09H
INT 21H
MOV DX, OFFSET WOW64
MOV AH, 09H
INT 21H
MOV AH, 1H
INT 21H
MOV BX, OFFSET ALGDGADU
SUB AL,30H
MOV [BX], AL
CMP AL, 01H
JBE NEXTQ
MOV AX,1
MOV BL, ALGDGADU
MOV BH, 0H
CALL $FACTORIAL
MOV OUTER_FACT, AX
LEA DX, EQUAL
MOV AH, 09H
INT 21H
MOV AH, 4CH
INT 21H
$FACTORIAL PROC
CMP BX, 1
JE HVOC
PUSH BX
DEC BX
CALL $FACTORIAL
POP BX
MUL BX
HVOC:
RET
$FACTORIAL ENDP
FULLCODE ENDS
NEXTQ:
MOV AH, 02H
MOV DL, 021H
INT 21H
MOV AH, 02H
MOV DL, 03DH
INT 21H
MOV AH, 02H
MOV DL, 31H
INT 21H
END START