Convertir

Convierte una cadena a numérica. Utiliza registros de 32 bits, y no permite el uso de caracteres "no numéricos"

Búsqueda de ejemplos en Ensamblador
;Autor Hector Torres
;URL

.model small
.stack
.data

dato db 5 dup(' '),'$'
date db 5 dup(' '),'$'
cade dd 10000,1000,100,10,1,'$'
nume dd 5 dup('0'),'$'
.386
.code
.startup

mov si,0
;***** limpia ****
mov ah,00h
mov al,03h
int 10h

;****** lee numeros
num:
  mov ah,07h
  int 21h
  cmp al,13
  je conv
  cmp al,48
  jl num
  cmp al,58
  jg num

;  jne guarda no se necesita
; guarda:  no se necesita
 
  mov dato[si],al
  mov ah,02
  mov dl,dato[si]
  int 21h
  sub dato[si],30h
  inc si
  cmp si,6
  jne num
 
; je inicia no se necesita

;****convierte****
;inicia:   que hace en este bloque ????
 
  mov di,0
  mov si,0
;  cmp cl,01h
;  jne conv
;  je desconv

conv:
  lea EAX,dato[si]
;  mov EDX,cade[di]
  mul cade[DI]
  add nume,EAX
 ; mov nume,EAX
  dec di
  dec si
  cmp si,4
  mov cl,01h
  jne conv
  mov ah,09h
  lea dx,dato
  int 21h
  je desconv

desconv:
  mov EAX,cade[di]
  mov EDX,nume
  div EDX
  mov dl,al
  add dl,30h
  mov ah,02h
  int 21h



.exit
end