Q:

¿Cómo comparo un decimal y un caracter en emu8086?

Tengo una duda con un ejercicio que estoy intentando resolver, lo adjunto para que me entiendan mejor:

Escriba un programa en lenguaje ensamblador que dada una secuencia de caracteres ASCII terminada con '$' obtenga en el registro AX la cantidad de dígitos decimales que aparecen en la secuencia, y en CX la cantidad total de caracteres sin contar el carácter '$'

Bueno, por el momento puedo recorrer la cadena, pero no sé cómo diferenciar decimales de caracteres. No pido que me resuelvan el ejercicio solo la instrucción que tengo que utilizar, esto es lo que voy haciendo por ahora:
org 100h
jmp INICIO
texto dw "123asd$" 

INICIO:
mov bx, offset texto
mov ax,0
mov cx,0

ciclo:
cmp [bx],'$'

jne contar
je fin

contar:
inc bx
inc cx 
jmp ciclo

fin:
ret

A:

Los dígitos decimales no son más que un carácter más a la hora de representarlos.
Es decir, para un ordenador, imprimir por pantalla un '1' o un 'A' es lo mismo.
Si te piden que cuentes los dígitos decimales, te están pidiendo que cuentes cuantos caracteres tienen la característica de ser la representación de un número.
Si pillas una tabla ASCII (http://www.elcodigoascii.com.ar/ por ejemplo)  verás que el número '0' tiene el valor 48, el '1' tiene el valor 49 .... , el '9' tiene el valor 57. Resumiendo, un carácter es la representación de un número decimal si su valor está entre 48 y 57 ambos inclusive.
Tal como tienes montado el código con un par de compares lo tendrás fácil para implementarlo. Si te surgieran dudas, dilo.
Nos vemos

