RE:Como pasar una cadena.....?
Bueno, simplemente debes conocer el método para entender cómo están formados los números hexadecimales y los decimales a nivel interno. Como todos los números están en binario al fin, debes conocer como cambiar su base a hexadecimal o decimal (para mostrarlos, se supone).
Para tratar un número hexadecimal lo dividiremos en bloques de dos cifras (cada bloque equivale a un byte), comenzando por la derecha. Por ejemplo, cogemos el número 0325H, pues lo dividimos en dos bytes: 03 y 25.
Cada cifra del byte corresponde a un nibble (grupo de 4 bits). Así para conocer el primer nibble de 25, harás un AND del byte con 11110000b y lo moverás cuatro bits a la derecha, quedándote "2". Ahora con el segundo nibble, basta hacer un AND del byte con 00001111b, y te queda "5". Obviamente, si deseas mostrar esto en pantalla, al "2" y al "5" has de sumarles 48 unidades para convertirlos a ASCII :)
Para mostrar un número decimal, debes dividir el byte o word que desees convertir entre 10, hasta que llegue un punto en que el valor residente en el byte o word sea menor que uno.
Pongamos por ejemplo un byte con valor 128. Para separar estas cifras haces:
128 / 10 = 12, resto 8
12 / 10 = 1, resto 2
1 / 10 = <1, terminó la ejecución
Fíjate: en la primera división, el resto es la última cifra del número (8). En la segunda división, el resto es la cifra central (2), y en la tercera división, al dar <1, cogeremos el dividendo (1). Ahora basta ordenar los valores al revés, y nos da 1-2-8.
Si quieres convertirlo a ASCII, ya sabes, sumas a cada valor 48 unidades.
Salu2.