Este codigo es la primera evaluacion que acostumbraba a hacer este profesor, ya esta configurado para pasarle parametros a la aplicacion usando el segmento de PSP
1: .MODEL SMALL
2: .STACK 256
3: .DATA
4: TABLA DB 0,1,15,10,,46H,88H,0AFH,34H,9AH,0ADH
5: DB 91H,78H,0A2H,45H,0FEH,4DH,3DH,5CH,70H,11H
6: BCD DB 20 DUP (?)
7: HEXA DB 20 DUP (?)
8: PROM DB ?
9: TABLA1 DB 20 DUP (?)
10: SWDTA DB ?
11: TABLAAUX DB 48 DUP (255),0,1,2,3,4,5,6,7,8,9,255,255,255,255,255,255,255,10,11,12,13,14,15,0FFH
12: DB 200 DUP (255)
13: SIGNOS DB ".,;:"
14: TABLA2 DB 20 DUP (?)
15:
16: .CODE
17: PUSH ES
18: MOV AX,@DATA
19: MOV DS,AX
20: POP ES
21: MOV DI,80H
22: MOV AL,ES:[DI]
23: CMP AL,0
24: JE SALIR1
25: MOV AH,AL
26: INC DI
27: DEC AH
28:
29: NEXT: INC DI
30: DEC AH
31: MOV AL,ES:[DI]
32: CMP AL,"-"
33: JE BUSCAOP
34: VERIF1: CMP AH,00H
35: JE SALIR
36: JMP NEXT
37:
38: BUSCAOP: INC DI
39: DEC AH
40: MOV AL,ES:[DI]
41: CMP AL,"b"
42: JE BCD1
43: CMP AL,"h"
44: JE HEXA1
45: CMP AL,"x"
46: JE CONVER
47: CMP AH,00H
48: JE SALIR
49: MOV SWDTA,0FFH
50: CMP AL,"-"
51: JE BUSCAOP
52: JMP NEXT
53:
54: BCD1: CALL UNO
55: JMP NEXT
56: HEXA1: CALL DOS
57: JMP NEXT
58: CONVER: CALL SEIS
59: JMP NEXT
60:
61: SALIR1: CALL UNO
62: CALL DOS
63: CALL TRES
64: CALL CUATRO
65: CALL CINCO
66: SALIR: .EXIT(0)
67:
68: UNO PROC NEAR
69: PUSH DI
70: PUSH AX
71: LEA SI,TABLA
72: LEA DI,BCD
73: MOV CX,20
74: LAZO1: MOV AL,BYTE PTR [SI]
75: AND AL,0F0H
76: CMP AL,0A0H
77: JNC SIGUIENTE
78: MOV AL,BYTE PTR [SI]
79: AND AL,0FH
80: CMP AL,0AH
81: JNC SIGUIENTE
82: MOV AL,BYTE PTR [SI]
83: MOV BYTE PTR [DI],AL
84: INC DI
85: SIGUIENTE: INC SI
86: LOOP LAZO1
87: POP AX
88: POP DI
89: RETN
90: UNO ENDP
91:
92: DOS PROC NEAR
93: PUSH DI
94: PUSH AX
95: LEA SI,TABLA
96: LEA DI,HEXA
97: MOV CX,40
98: LAZO2: MOV AL,BYTE PTR [SI]
99: AND AL,0F0H
100: CMP AL,0A0H
101: JC SIGUIENTE2
102: MOV AL,BYTE PTR [SI]
103: AND AL,0FH
104: CMP AL,0AH
105: JC SIGUIENTE2
106: MOV AL,BYTE PTR [SI]
107: MOV BYTE PTR [DI],AL
108: INC DI
109: SIGUIENTE2: INC SI
110: LOOP LAZO2
111: POP AX
112: POP DI
113: RETN
114: DOS ENDP
115:
116: TRES PROC NEAR
117: LEA SI,TABLA
118: MOV AX,0
119: MOV CX,20
120: MOV DX,0
121: LAZO3: MOV AL,BYTE PTR [SI]
122: CMP AL,30H
123: JC SIGUIENTE3
124: CMP AL,3AH
125: JNC SIGUIENTE3
126: AND AL,0FH
127: ADD PROM,AL
128: INC DL
129: SIGUIENTE3: INC SI
130: LOOP LAZO3
131: MOV AH,0
132: MOV AL,PROM
133: DIV DL
134: OR AL,30H
135: MOV PROM,AL
136: RETN
137: TRES ENDP
138:
139: CUATRO PROC NEAR
140: PUSH ES
141: PUSH DS
142: POP ES
143: MOV DX,4
144: LEA SI,SIGNOS
145: XX5: LEA DI,TABLA
146: MOV CX,20
147: XX4: MOV AL,[SI]
148: SCASB
149: JNZ XXX
150: MOV BYTE PTR [DI-1],20H
151: XXX: LOOP XX4
152: INC SI
153: DEC DX
154: CMP DX,0
155: JNZ XX5
156: POP ES
157: RETN
158: CUATRO ENDP
159:
160: CINCO PROC NEAR
161: LEA SI,TABLA
162: LEA BX,TABLAAUX
163: LEA DI,TABLA1
164: MOV CX,20
165: LAZO5: MOV AL, BYTE PTR [SI]
166: XLAT
167: CMP AL,0FFH
168: JE ERROR
169: MOV BYTE PTR [DI],AL
170: INC DI
171: SIGUIENTE5: INC SI
172: LOOP LAZO5
173: RETN
174: ERROR: MOV SWDTA,AL
175: JMP SIGUIENTE5
176: CINCO ENDP
177:
178: SEIS PROC NEAR
179: LEA SI,TABLA1
180: LEA BX,TABLAAUX
181: SALTO61: INC DI
182: INC DI
183: DEC AH
184: DEC AH
185: MOV DH,ES:[DI]
186: INC DI
187: DEC AH
188: MOV DL,ES:[DI]
189: INC DI
190: DEC AH
191: AND DH,0FH
192: AND DL,0FH
193: ROL DH,4
194: OR DH,DL
195: MOV AL,DH
196: XLAT
197: CMP AL,255
198: JE SIGUIENTE6
199: MOV BYTE PTR [SI],AL
200: INC SI
201: SIGUIENTE6: MOV AL,ES:[DI]
202: CMP AL,","
203: JNE SALTO6
204: JMP SALTO61
205:
206: SALTO6: RETN
207: SEIS ENDP
208: END
merda!! Si eres ladillado amor... jejejeje (K)
ResponderEliminar