SoloCodigo

Programación General => ASM (Ensamblador) => Mensaje iniciado por: pere en Domingo 12 de Noviembre de 2006, 20:40

Título: Linea Que No Entiendo
Publicado por: pere en Domingo 12 de Noviembre de 2006, 20:40
Hola soy nuevo por aquí y como veis empiezo preguntando, puesto que estoy pegao en esto y no entiendo algunas cosillas.
Vereis el programa lo entiendo mas o menos, menos una linea (que he puesto en rojo) que no le acabo de encontrar el sentido. Y si no la pongo me da error.
Este código está sacado de un tutorial que me he descargado, está escrito con el degug del win.

- a100
0C1B:0100 jmp 125 ; brinca a la dirección 125H
0C1B:0102 [Enter]
- e 102 'Cadena a visualizar 15 veces' 0d 0a '$'
- a125
0C1B:0125 MOV CX,000F ; veces que se desplegara la cadena
0C1B:0128 MOV DX,0102 ; copia cadena al registro DX
0C1B:012B MOV AH,09 ; copia valor 09 al registro AH
0C1B:012D INT 21 ; despliega cadena
0C1B:012F LOOP 012D ; si CX>0 brinca a 012D
0C1B:0131 INT 20 ; termina el programa.

Gracias de antemano y saludos
Título: Re: Linea Que No Entiendo
Publicado por: Eternal Idol en Domingo 12 de Noviembre de 2006, 20:43
Eso le asigna un valor a un registro, no hay ninguna diferencia con las dos lineas anteriores, si queres saber la razon por la cual le asigna el valor 9 entonces mira aca:

http://www.ctyme.com/intr/rb-2562.htm (http://www.ctyme.com/intr/rb-2562.htm)
Título: Re: Linea Que No Entiendo
Publicado por: pere en Domingo 12 de Noviembre de 2006, 20:46
gracias por la rapidez, me costará un poquito traducirlo.... el inglis no es lo mio.
pero supongo que hay que espavilarse
Título: Re: Linea Que No Entiendo
Publicado por: Eternal Idol en Domingo 12 de Noviembre de 2006, 20:53
Basicamente la interrupcion 21h en MS-DOS provee muchos servicios diferentes, para especificar cual de ellos se quiere utilizar se asigna el valor del mismo al registro ah/ax. El servicio 9 de la interrupcion 21h sirve para mostrar una cadena en pantalla.
Título: Re: Linea Que No Entiendo
Publicado por: pere en Domingo 12 de Noviembre de 2006, 21:01
a ver si lo he entendido bien.
Pienso que la int 21 se puede utilizar de varias maneras, en este casa se utiliza el servicio 9 de la interrupcion 21 asignandoselo a ah para mostrar una cadena.
Me equivoco?
Título: Re: Linea Que No Entiendo
Publicado por: Eternal Idol en Domingo 12 de Noviembre de 2006, 21:37
Cita de: "pere"
a ver si lo he entendido bien.
Pienso que la int 21 se puede utilizar de varias maneras, en este casa se utiliza el servicio 9 de la interrupcion 21 asignandoselo a ah para mostrar una cadena.
Me equivoco?
No ...
Título: Re: Linea Que No Entiendo
Publicado por: pere en Domingo 12 de Noviembre de 2006, 21:42
no? ...  bueno ahora si que me has matao.
(Edito)
El valor que se le da a Ah determina cual de las opciones de la interrupcion 21h será utilizada, ya que esta interrupción cuenta con varias opciones.
Esta la he sacao de por ahí. la verdad es que no se si es lo que yo he intentado razonar pero de todas maneras que quedo con esa y con la tuya muchas gracias
Título: Re: Linea Que No Entiendo
Publicado por: Eternal Idol en Domingo 12 de Noviembre de 2006, 22:00
Tu pregunta fue: "Me equivoco?" y me respuesta fue: "No ...". No te equivocabas ...
Título: Re: Linea Que No Entiendo
Publicado por: pere en Domingo 12 de Noviembre de 2006, 22:04
pues tienes toda la razón del mundo y yo entendí lo contrario. Se me fué el santo al cielo :P