Problema con Interrupcion BIOS y mas!!

Iniciado por Vaagish, 18 Diciembre 2013, 23:54 PM

0 Miembros y 2 Visitantes están viendo este tema.

Vaagish

Buenas amigos!

Tengo un par de consultas,, como ensamblo un programa sin dependencias en masm32?
Estoy trabajando en modo real, haciendo .COM's, pero cuando los desensamblo con Olly, me dice que carga librerías de windows, ej: kernel32

y otra mas,, que va con código (yo se que a ustedes les gusta leer código):

Código (asm) [Seleccionar]

mov ah,#0x03 ! read cursor pos
xor bh,bh
int 0x10

mov cx,#9
mov bx,#0x0007 ! page 0, attribute 7 (normal)
mov bp,#msg1
mov ax,#0x1301 ! write string, move cursor
int 0x10


No es para nada complicado,, pero no puedo encontrar que función, de la interrupción 10 es la de la segunda parte..

cpu2

#1
Pues sobre la primera no se mucho, pero en teoria seria ensamblar y linkear, pero bueno como es windows vamos a dejarlo.

Ls segunda creo que al lado lo deja bien claro lo que hace, 0x13 que imprime el mensaje y 0x1 que es el del cursor, fijate en el registro bx.

Un saludo.

Vaagish

#2
CitarLs segunda creo que al lado lo deja bien claro lo que hace, 0x13 que imprime el mensaje y 0x1 que es el del cursor

Haa no sabia que se podía "combinar",, igual no encuentro referencia alguna,, fíjate que pone esos valores en ax,, me parece que son las menos las interrupciones que usan ax,, y menos de esta manera..

Con respecto a la primera, creo que estoy errando feo,, ni siquiera estoy seguro de que una aplicación de 16 bits se pueda enlazar con una librería..

Saludos!

EDITO:
Haa recién me avivo,, lo que hace es poner en ax! jaja Equivale a poner en al y en ah

cpu2

No, pero tio que te estas montando?

El nombre "valor o numero" llamalo como quieras de la funcion se carga en el registro ah, el 0x01 que hay en el registro al solo es un argumento, solo se llama a la funcion 0x13 de la interrupcion 0x10.

Y sobre la primera duda, no se para que quieres enlazar librerias si estas en modo real y este codigo se ejecutara mucho antes de que esas librerias se carguen.

Un saludo.

Vaagish

Pero,, lo que hace no es justamente eso!?
Usa el registro ax, y le pasa/mete (o como se quiera) el valor de la función, junto con el argumento, me explayo:

Código (asm) [Seleccionar]
mov ah, 0x13
mov al, 0x01


es lo mismo que:

Código (asm) [Seleccionar]
mov ax, 0x1301

Con respecto a la segunda, no son .COM's lo que estoy generando.. ahi debe estar el problema,, son simples .EXE's de 16 bits.. ahora tengo que conseguir que el masm32 del **** me ensamble un COM..
En realidad lo que quiero es un binario,, sin mas nada.. se leen sugerencias!

Saludos!!

cpu2

Exacto, no lei ese edito solo lo de combinar.

Sobre nasm32 no puedo ayudarte nada, no trabajo con esas herramientas, si me estas diciendo que te crea .exe seguro que esta hay el problema, te genera el binario con las cabezeras de Windows como si fuera un binario mas.

Un saludo.


Vaagish

Bueno, lo solucione con exe2bin, una herramienta que viene con windows,, parece que funciono bien.. lo que hace es eso justamente, de un exe to bin. simple..  >:D

Gracias por las respuestas cpu2! Saludos!!