A ver si te vale esto:
[email protected]
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ;
; ;
; Email del Autor .... :
[email protected] NUMERO ;
; ;
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ;
NUMERO MACRO FILA,COLUMNA
LOCAL no_es_cero,escribir_digitos,escribir,fin
LOCAL digitosnumero,findigitosnumero,otro_chr,sigue
LOCAL datanumero,loopear,detectado_primer_no_cero
; A esta MACRO hay que llamarla con el valor del
; n£mero en el registro DX.
;
; Por ejemplo :
;
; ÄÄ> mov dx,4593 <ÄÄ
; call numerar
; ret
; numerar:
; numero 10,10
; ret
digitos_16_bits EQU 5 ; Digitos que pueden representar 16 bits (65535)
push dx
push ax
push cx
push si
push di
push bx
mov ax,dx
mov si,10
mov cx,digitos_16_bits
no_es_cero:
xor dx,dx
div si
push dx
loop no_es_cero
mov bx,OFFSET DIGITOSNUMERO
mov cx,(digitos_16_bits)
escribir_digitos:
pop dx
call escribir
loop escribir_digitos
jmp fin
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ;
DIGITOSNUMERO LABEL BYTE
DATANUMERO DB digitos_16_bits DUP (0)
FINDIGITOSNUMERO LABEL BYTE
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ;
escribir PROC FAR
or dx,0000000000110000b
mov al,dl
mov cs:[bx],al
add bx,1
ret
escribir ENDP
;ÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ;
fin:
mov di,(FILA - 1) * 160 + (COLUMNA - 1) * 2
mov si,OFFSET DIGITOSNUMERO
mov cx,(digitos_16_bits - 1)
otro_chr:
mov al,cs:[si]
cmp al,'0'
jz sigue
jmp detectado_primer_no_cero
sigue:
mov al,' '
mov ds:[di],al
add di,2
add si,1
loop otro_chr
detectado_primer_no_cero:
inc cx
loopear:
mov al,cs:[si]
mov ds:[di],al
add di,2
add si,1
loop loopear
pop bx
pop di
pop si
pop cx
pop ax
pop dx
ENDM
Continua........