Foros del Web » Programación para mayores de 30 ;) » Programación General »

Lenguaje Ensamblador + Tasm

Estas en el tema de Lenguaje Ensamblador + Tasm en el foro de Programación General en Foros del Web. Ocupo la mayor ayuda posible!! esta es la primera vez q programo en lenguaje ensamblador con texpad como editor de texto y Tasm como compilador; ...
  #1 (permalink)  
Antiguo 26/05/2007, 01:46
 
Fecha de Ingreso: mayo-2007
Mensajes: 1
Antigüedad: 17 años
Puntos: 0
Sonrisa Lenguaje Ensamblador + Tasm

Ocupo la mayor ayuda posible!!
esta es la primera vez q programo en lenguaje ensamblador con texpad como editor de texto y Tasm como compilador; ocupo q me digan cuales son los comandos y/o operaciones para imprimir x coordenadas en la consola y otra funcion para poder pedir datos... ejemplo yo tengo un programa q suma un par d numeros, entonces ocupo la funcion q pida al usuario digitar los numeros a sumar...
toda la ayuda posible será bien recibida!!!
gracias!!
  #2 (permalink)  
Antiguo 26/05/2007, 12:14
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Lenguaje Ensamblador + Tasm

Me imagino que estas trabajando bajo MS-DOS haciendo un programa de 16 bits, de ser asi podes usar tanto las interrupciones de la BIOS como las del citado Sistema Operativo.

BIOS:
http://www.ctyme.com/intr/int-16.htm
Con AH=0 obtenes un caracter del teclado.

http://www.ctyme.com/intr/int-10.htm
Con AH=2 + AH=A escribis un caracter en una posicion determinada.

MS-DOS:
http://www.ctyme.com/intr/int-21.htm

Buscalas


Para la consola tambien podrias usar acceso a memoria directamente y puertos I/O para el teclado, todo depende del nivel al cual lo quieras hacer.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #3 (permalink)  
Antiguo 27/05/2007, 18:58
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Lenguaje Ensamblador + Tasm

Cita:
Iniciado por Eternal Idol Ver Mensaje
Me imagino que estas trabajando bajo MS-DOS haciendo un programa de 16 bits, de ser asi podes usar tanto las interrupciones de la BIOS como las del citado Sistema Operativo.

BIOS:
http://www.ctyme.com/intr/int-16.htm
Con AH=0 obtenes un caracter del teclado.

http://www.ctyme.com/intr/int-10.htm
Con AH=2 + AH=A escribis un caracter en una posicion determinada.

MS-DOS:
http://www.ctyme.com/intr/int-21.htm

Buscalas


Para la consola tambien podrias usar acceso a memoria directamente y puertos I/O para el teclado, todo depende del nivel al cual lo quieras hacer.
Aprovechando el tema. Quisiera hacer una pregunta.

Deberia suponer que las interrupciones del BIOS son las mismas a la hora de programar bajo Linux? Igualmente deberia suponer que las de MS-DOS no existen, entonces Linux tiene sus propias interrupciones, donde podre encontrar info de estas?
Como nunca he programado en asm bajo Linux pues si me entraron esas dudas.

Otra pregunta mas.

Si carecieras de sistema operativo, es decir, programaras directamente desde 0 con asm, puedo suponer que solo cuentas con ls interrupciones del BIOS y que practicamente tienes crear tus propias interrupciones como las del sistema operativo? Y si este es el caso, como ensamblas para que arranque al encender el ordenador?

Saludos
  #4 (permalink)  
Antiguo 28/05/2007, 02:25
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Lenguaje Ensamblador + Tasm

Cita:
Iniciado por Instru Ver Mensaje
Aprovechando el tema. Quisiera hacer una pregunta.
Aprovechado pero poco tiene que ver con la pregunta original

Cita:
Iniciado por Instru Ver Mensaje
Deberia suponer que las interrupciones del BIOS son las mismas a la hora de programar bajo Linux?
No lo supongas ya que la BIOS es codigo de 16 bits (modo Real) y los S.O.s modernos como Windows y Linux trabajan en 32/64 bits (modo Protegido/long). Por lo tanto ni en Windows ni en Linux estan disponibles las interrupciones de la BIOS, para estarlo deberia pasar cada vez a modo Real y esto es ineficiente.

Cita:
Iniciado por Instru Ver Mensaje
Igualmente deberia suponer que las de MS-DOS no existen, entonces Linux tiene sus propias interrupciones, donde podre encontrar info de estas?
Como nunca he programado en asm bajo Linux pues si me entraron esas dudas.
Por supuesto, los servicios son de cada S.O. y no estan en los otros normalmente y en este caso no hay ninguna similitud entre un S.O. basado en CP/M (MS-DOS) y otro en UNIX (Linux).


Cita:
Iniciado por Instru Ver Mensaje
Si carecieras de sistema operativo, es decir, programaras directamente desde 0 con asm, puedo suponer que solo cuentas con ls interrupciones del BIOS y que practicamente tienes crear tus propias interrupciones como las del sistema operativo? Y si este es el caso, como ensamblas para que arranque al encender el ordenador?
Efectivamente, en cuanto arranca la PC solo tenes disponibles las interrupciones de la BIOS pero tambien podes acceder al hardware directamente con INs y OUTs. Y lo tenes que ensamblar usando lo disponible, nada mas y nada menos, y teniendo en cuanta que el boot sector son solo 512 bytes.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #5 (permalink)  
Antiguo 28/05/2007, 04:46
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Lenguaje Ensamblador + Tasm

Cita:
Efectivamente, en cuanto arranca la PC solo tenes disponibles las interrupciones de la BIOS pero tambien podes acceder al hardware directamente con INs y OUTs. Y lo tenes que ensamblar usando lo disponible, nada mas y nada menos, y teniendo en cuanta que el boot sector son solo 512 bytes.
Ok, son 512 bytes.
Pero alguna vez llegue a leer que el programa no empieza exactamente en el offset 0. Esto es cierto? Y supongo que tu programa inicial debe caber en esos 512 y que de ahi debes pasar a modo protegido para poder "cargar" un programa mas grande no?. Y si quisieramos que este program arrancara desde el boot del PC, tendriamos que ponerlo en el boot sector de alguna unidad(hdd, cdrom, etc). no?

Saludos
  #6 (permalink)  
Antiguo 28/05/2007, 05:41
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Lenguaje Ensamblador + Tasm

Cita:
Iniciado por Instru Ver Mensaje
Ok, son 512 bytes.
Pero alguna vez llegue a leer que el programa no empieza exactamente en el offset 0. Esto es cierto? Y supongo que tu programa inicial debe caber en esos 512 y que de ahi debes pasar a modo protegido para poder "cargar" un programa mas grande no?. Y si quisieramos que este program arrancara desde el boot del PC, tendriamos que ponerlo en el boot sector de alguna unidad(hdd, cdrom, etc). no?
Si, son 512 bytes contando la marca del final que son 2 bytes que indican si es booteable o no el sector, osea que quedan 510 bytes para el codigo y el file system.
Efectivamente empieza donde lo carga la BIOS y eso es en 0x7C00:0000. El programa inicial no suele pasar a modo protegido aunque se puede hacer. Generalmente carga otro programa (por ejemplo en NT carga el NTLDR) que tambien es de 16 bits y tiene un tamaño mucho mayor, este se ocupara despues de cargar el Kernel y pasar a modo protegido. Si, para que arranque tiene que estar en el boot sector de algun dispositivo que la BIOS soporte para bootear.
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
  #7 (permalink)  
Antiguo 28/05/2007, 09:50
Avatar de Instru  
Fecha de Ingreso: noviembre-2002
Ubicación: Mexico
Mensajes: 2.751
Antigüedad: 21 años, 5 meses
Puntos: 52
Re: Lenguaje Ensamblador + Tasm

Esto esta bastante interesante.

Y ya hablando de sectores de arranque, cual es la diferencia entre un VBR y un MBR?

Saludos
  #8 (permalink)  
Antiguo 28/05/2007, 10:15
Avatar de Eternal Idol  
Fecha de Ingreso: mayo-2004
Ubicación: Lucentum
Mensajes: 6.192
Antigüedad: 20 años
Puntos: 74
Re: Lenguaje Ensamblador + Tasm

http://en.wikipedia.org/wiki/Volume_Boot_Record
http://en.wikipedia.org/wiki/Master_Boot_Record
__________________
¡Peron cumple, Evita dignifica! VIVA PERON CARAJO
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:29.