Académique Documents
Professionnel Documents
Culture Documents
asm 1 / 2
1: ;===========================================================================
2: ;===========================================================================
3: ; PROGRAMA : pe24_as2.asm ex p14_nbin.asm
4: ; FUNCION : COMVIERTE UN NUMERO ASCII A BINARIO, Y
5: ; : LA CANTIDAD SE CAPTURA.
6: ; REALIZADO POR : Prof. Juan Juárez Fuentes
7: ; COMPILADOR EN EL QUE SE EJECUTO: TASM 5.0
8: ; FECHA : 2009120909395820121213132818
9: ;===========================================================================
10: ;===========================================================================
11: ; DECLARACION DE CONSTANTES
12: ;===========================================================================
13: CR EQU 13 ; Constante CR (Retorno de carro)
14: LF EQU 10 ; Constante LF (Salto de línea)
15: IMPRIMIR EQU 9
16: FIN EQU 4C00H
17: DOS EQU 21H
18: TAB EQU 09H
19: BELL EQU 07H
20: TECLADO EQU 8
21: ;===========================================================================
22: ; DECLARACION DEL SEGMENTO DE DATOS
23: ;===========================================================================
24: DATOS SEGMENT
25: NUMERO_BINARIO DW 0,"$"
26: NUMERO_ASCII DB 6,0,6 DUP (?),"$" ;Variable que almacena la cantidad uno.
27: M_ENCABEZADO DB 13,10,13,10,TAB,"============================================================"
28: DB 13,10,13,TAB,"PROGRAMA QUE CONVIERTE UN NUMERO ASCII (CAPTURADO) A BINARIO"
29: DB 13,10,13,TAB,"============================================================",13,10,"$"
30: M_ESPACIO DB 13,10,13,10,13,10,13,10,13,10,13,10,"$"
31: M_ASCII_ASCII DB 13,10,13,10,"NUMERO ASCII IMPRESO NORMALMENTE COMO LO HACE UNA PC (EN ASCII)",13,10,"$"
32: M_BINARIO_ASCII DB 13,10,13,10,"NUMERO BINARIO (YA CONVERTIDO), ",13,10,"IMPRESO NORMALMENTE COMO LO HACE UNA PC (EN ASCII): ","$"
33: ;-------------------------------------------------------------
34: ; Tabla de potencias usada para convertir el resultado binario de la
35: ; operacion en formato ASCII. Se usan las potencias de 10 (1,10,100,1000
36: ; y 10000), porque el numero mas grande es 65535. En caso de que quiera
37: ; operar sobre numeros mas grandes amplie la tabla.
38: ;-------------------------------------------------------------
39: Potencia DW 001H, 000AH, 0064H, 03E8H, 2710H, "$"
40: ;-----------------------------------------------------------------------
41: DATOS ENDS
42: ;===========================================================================
43: ; DECLARACION DEL SEGMENTO DE PILA
44: ;===========================================================================
45: PILA SEGMENT STACK 'STACK'
46: DW 128 DUP('P')
47: PILA ENDS
48: ;===========================================================================
49: ; DECLARACION DEL SEGMENTO DE CODIGO
50: ;===========================================================================
51: CODIGO SEGMENT ; Inicio del segmento de código
52: ;-----------------------------------------------------------------------
53: pe24_as2 PROC NEAR ; Inicio procedimiento
54: ;-------------------------------------------------------------------
55: ASSUME CS:CODIGO, SS:PILA, DS:DATOS
56: MOV AX, DATOS
57: MOV DS, AX
58: ;-----------------------------------------------------------------------
59: MOV AH, 0AH ; Captura la cantidad (hasta 8 digitos)
60: MOV DX, Offset NUMERO_ASCII
61: INT 21h
62: ;-----------------------------------------------------------------------
63: MOV DI, Offset NUMERO_ASCII + 1 ; Bytes leidos de la cantidad 1
64: MOV CX, [DI] ; NUMERO DE DIGITOS
65: MOV SI, Offset NUMERO_ASCII + 2 ; La cantidad 1