Si mal no recuerdo era un programa que calculaba la potencia de un numero 16(10) = 10(16)
1: .MODEL SMALL
2: .STACK 64H
3: .DATA
4: BASE1 DB 0
5: DATOS DB 0,0
6: BASE2 DB 0
7: HEXAD DW ?
8: BASEELEVADA DW 0
9: DATO3 DB 0,0,0,0,0,0,0,0
10: DATO2 DB 0,0,0,0,0,0,0,0
11: DB 0,0,0,0,0,0,0,0
12:
13: .CODE
14: MOV AX,@DATA
15: MOV DS,AX
16: MOV ES,AX
17: ; PRIMERO SE HACE LA DESCOMPOSION DEL NUMERO EN FORMATO DE POTENCIA
18: ; POR EJEMPLO 1234 = 1 * 10^3 + 2 * 10^2 + 3 * 10^1 + 4
19: ; Y HACEMOS LA MULTIPLICACION CON SU COEFICIENTE
20: ; PARA ESO AGARRAMOS BASE1 Y LA MULTIPLICAMOS TRES VECES Y LUEGO SE MULTIPLICA
21: ; POR SU COEFICIENTE
22: LEA SI,DATOS
23: MOV AX,1
24: MOV BH,0
25: MOV BL,BASE1
26: MUL BX
27: MUL BX
28: MUL BX
29: MOV BASEELEVADA,AX
30: MOV AX,0
31: MOV AL,[SI]
32: ROL AL,4
33: AND AL,0FH
34: MOV BX,BASEELEVADA
35: MUL BX
36: ADD HEXAD,AX
37:
38: MOV AX,1
39: MOV BH,0
40: MOV BL,BASE1
41: MUL BX
42: MUL BX
43: MOV BASEELEVADA,AX
44: MOV AX,0
45: MOV AL,[SI]
46: AND AL,0FH
47: MOV BX,BASEELEVADA
48: MUL BX
49: ADD HEXAD,AX
50:
51: INC SI
52:
53: MOV AX,1
54: MOV BH,0
55: MOV BL,BASE1
56: MUL BX
57: MOV BASEELEVADA,AX
58: MOV AX,0
59: MOV AL,[SI]
60: ROL AL,4
61: AND AL,0FH
62: MOV BX,BASEELEVADA
63: MUL BX
64: ADD HEXAD,AX
65:
66: MOV AX,0
67: MOV AL,[SI]
68: AND AL,0FH
69: ADD HEXAD,AX
70: ; SE USA LA OPERACION MATEMATICA DE LA DIVISION PARA HACER LA CONVERSION
71: ; GUARDANDO EL RESTO EN LA DIRECCION APUNTADA POR DI
72: ; [DI] = HEXAD % BX
73: ; LA DIVISION SE HACE MIENTRAS QUE EL COCIENTE SEA DISTINTO DE CERO
74:
75: LEA DI,DATO2
76: ADD DI,15
77: MOV AX,0
78: MOV AX,HEXAD
79: MOV BH,0
80: MOV BL,BASE2
81: DIVIDIR: DIV BX
82: MOV [DI],DL
83: DEC DI
84: CMP AX,0
85: JE SALIR
86: MOV DX,0
87: JMP DIVIDIR
88: SALIR:
89: ; AQUI UNO DOS POSICIONES DE MEMORIA EN UNA SOLA,
90: ; POR EJEMPLO EN AH = 03H Y EN AL = 05H
91: ; ROTO AH 4 VECES, AHORA AH = 30H
92: ; AHORA HAGO EL OR DE AH CON AL, AHORA AH = 35H
93: LEA SI,DATO3
94: LEA DI,DATO2
95: MOV AH,[DI]
96: MOV AL,[DI+1]
97: ROL AH,4 ; ROTACION HACIA LA DERECHA 4 VECES
98: OR AH,AL
99: MOV [SI],AH
100: INC SI
101: INC DI
102: INC DI
103:
104: MOV AH,[DI]
105: MOV AL,[DI+1]
106: ROL AH,4
107: OR AH,AL
108: MOV [SI],AH
109: INC SI
110: INC DI
111: INC DI
112:
113: MOV AH,[DI]
114: MOV AL,[DI+1]
115: ROL AH,4
116: OR AH,AL
117: MOV [SI],AH
118: INC SI
119: INC DI
120: INC DI
121:
122: MOV AH,[DI]
123: MOV AL,[DI+1]
124: ROL AH,4
125: OR AH,AL
126: MOV [SI],AH
127: INC SI
128: INC DI
129: INC DI
130:
131: MOV AH,[DI]
132: MOV AL,[DI+1]
133: ROL AH,4
134: OR AH,AL
135: MOV [SI],AH
136: INC SI
137: INC DI
138: INC DI
139:
140: MOV AH,[DI]
141: MOV AL,[DI+1]
142: ROL AH,4
143: OR AH,AL
144: MOV [SI],AH
145: INC SI
146: INC DI
147: INC DI
148:
149: MOV AH,[DI]
150: MOV AL,[DI+1]
151: ROL AH,4
152: OR AH,AL
153: MOV [SI],AH
154: INC SI
155: INC DI
156: INC DI
157:
158: MOV AH,[DI]
159: MOV AL,[DI+1]
160: ROL AH,4
161: OR AH,AL
162: MOV [SI],AH
163: INC SI
164: INC DI
165: INC DI
166:
167: .EXIT(0)
168: END
No hay comentarios:
Publicar un comentario