• Domingo 22 de Diciembre de 2024, 20:47

Autor Tema:  Convertir Una Cadena A Numero  (Leído 12486 veces)

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Convertir Una Cadena A Numero
« en: Martes 15 de Febrero de 2005, 11:26 »
0
Hola a todos:

Primero quiero agradecer a Amilius por haberme dado una pista de como resolver el problema.

Y... Como nobleza obliga..., ahora mando para todos los que puedan necesitarlo, el codigo con la solucion a la que pude llegar gracias a su ayuda.

Aclaro que esta compilado con TASM.


;####################################################
; ENUNCIADO: Convertir una cadena de 4 caracteres formada por digitos
;                     a un numero entero.
;
;                     NOTA: La cadena debe ser ingresada por codigo y no debe
;                               ser validada.
;          
;====================================================
.model SMALL

.stack

.data
CadNum  db  '3245'                             ; Cadena con digitos.
Entero  dw  0                                      ; Numero entero.
Factor  db  10                                     ; Factor multiplicador.

.code
INICIO:         mov AX,@data                ; Apuntar al segmento de datos.
                    mov DS,AX

                     mov SI,offset CadNum    ; Apuntar al digito mas  
                                                          ; significativo.
                     CLD                              ; Establecer el sentido de
                                                         ; de recorrido de la cadena
                                                         ; de izquierda a derecha.
                     mov CX,3                      ; Poner el contador de pro-
                                                         ; grama en 4.
C1:               mov AX,Entero               ; Multiplicar el contenido
                    mul Factor                      ; de Entero por 10.
                    mov Entero,AX               ;
                    xor AX,AX                      ; Limpiar AX
                    lodsb                             ; Leer el caracter apuntado.
                    sub AL,30h                    ; Pasar de caracter a numero.
                    add AX,Entero               ; Sumar el numero resultante
                    mov Entero,AX              ; a Entero.
                    loop C1                        ; Ir a leer otro digito.

FIN:              mov AH,4Ch
                    int 21h
end INICIO
end
;====================================================

;####################################################################
; ENUNCIADO: Convertir una cadena de 4 caracteres formada por digitos
;            a un numero entero.
;
;            NOTA: La cadena debe ser ingresada por codigo y no debe
;                  ser validada.
;          
;====================================================================
.model SMALL

.stack

.data
CadNum  db  '3245'
Entero  dw  0
Factor  db  10

.code
INICIO:         mov AX,@data
                mov DS,AX

                mov SI,offset CadNum    ; Apuntar al digito mas  
                                        ; significativo.
                CLD                     ; Establecer el sentido de
                                        ; de recorrido de la cadena
                                        ; de izquierda a derecha.
                mov CX,3                ; Poner el contador de pro-
                                        ; grama en 4.
C1:             mov AX,Entero           ; Multiplicar el contenido
                mul Factor              ; de Entero por 10.
                mov Entero,AX           ;
                xor AX,AX               ; Limpiar AX
                lodsb                   ; Leer el caracter apuntado.
                sub AL,30h              ; Pasar de caracter a numero.
                add AX,Entero           ; Sumar el numero resultante
                mov Entero,AX           ; a Entero.
                loop C1                 ; Ir a leer otro digito.

FIN:            mov AH,4Ch
                int 21h
end INICIO
end
;====================================================

Un abrazo para todos

Forly

  • Nuevo Miembro
  • *
  • Mensajes: 21
    • Ver Perfil
Re: Convertir Una Cadena A Numero
« Respuesta #1 en: Miércoles 16 de Febrero de 2005, 11:34 »
0
Hola a todos:

SE DESLIZO UN ERROR

En la declaracion de la variable Factor

donde dice

Factor   db    10


debe decir


Factor  dw   10


Disculpen mi torpeza

les mando un abrazo.