[ Foro de Pascal ]

Sobre el código en ensamblador que está en el tutorial de pascal.

17-May-2013 01:22
Luis Torres (+18)
4 Respuestas

He visto, en el tutorial de pascal, un código que está en lenguaje ensamblador, son específicamente dos procedimientos, uno me lleva al modo gráfico 320x200x256 y el otro al modo de texto, a continuación los listo:


 procedure Modo320; assembler;
 asm
   mov ax,$13
   int $10
 end;
 
 procedure ModoTxt; assembler;
 asm
   mov ax,3
   int $10
 end;



Mi pregunta es, ¿qué significa el signo '$' que acompaña a los números 10 y 13?, ¿por qué el número 3 no va precedido de ese símbolo?. Hago estas preguntas, porque he visto código en ensamblador que no usan ese símbolo, sino que colocan, por ejemplo: int 10.
Saludos.


17-May-2013 01:35
Fulanito de Tal

Hola. Si no te importa, te respondo yo: Me parece que el símbolo del $ hace referencia a números con base hexadecimal:

"Un número binario se puede especificar haciendole preceder con el símbolo ((%)), mientras que para el hexadecimal es típico utilizar el símbolo de dolar $."

http://wiki.freepascal.org/Binary_numeral_system/es


17-May-2013 04:33
Luis Torres (+18)

Ok, gracias por tu respuesta, pero entonces el número 3, ¿a qué sistema pertenece?. He visto códigos en ensamblador, en los que cuando no especifican nada, el sistema usado es el hexadecimal. La verdad es que no entiendo. Saludos.


17-May-2013 09:36
Nacho Cabanes (+84)

Como dice Fulanito correctamente, eso está en hexadecimal. Lo que ocurre es que la forma de indicar "esto es hexadecimal" varía según el lenguaje, y en ocasiones incluso según el entorno concreto.

Por ejemplo, en Turbo Pascal (y, por tanto, en Free Pascal, que sigue mucho su sintaxis), un número en hexadecimal se precede con $.  Así $3 es lo mismo que 3 (en decimal), pero $10 es 16 (en decimal) y $FF es 255.

En C y los lenguajes que derivan de él, como C++ y C#, los números hesadecimales se preceden por 0x, como en 0x3, 0x10 o 0xFF.

En ensamblador... como son lenguajes antiguos, y no había (todavía) la costumbre de intentar estandarizar, cada sistema usaba su propia nomenclatura. Por ejemplo, unos dan por sentado que los números son todos hexadecimales; otros suponen que son decimales y los hexa hay que precederlos con "&"; en otros se preceden con "#"...


17-May-2013 17:02
Luis Torres (+18)

Todo me quedó muy claro. Gracias Fulanito de Tal y gracias Prof. Nacho Cabanes. Saludos.






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)