Bienvenido(a), Visitante. Por favor, ingresa o regístrate.

Ingresar con nombre de usuario, contraseña y duración de la sesión

 
Búsqueda Avanzada

15.707 Mensajes en 3.130 Temas- por 371 Usuarios - Último usuario: lasfirrot
Mayo 18, 2012, 05:35:32
Foro de Hispabyte.netSistemas operativos y SoftwareSistemas OperativosCreación de un Sistema Operativo (Moderador: JMA_SP)Tema: Código en Ensamblador
Páginas: [1] 2   Ir Abajo
Imprimir
Autor Tema: Código en Ensamblador  (Leído 7265 veces)
0 Usuarios y 1 Visitante están viendo este tema.
kcoder24
Visitante
« : Julio 30, 2003, 02:49:21 »


Bueno no tengo idea de si sea l?gico  Giñar  esto pero a m? me pareci? bien crear un subtema para tratar lo relacionado a ensamblador .

Porque no postear aqu? las dudas que tengamos porque hay quienes ya est?n trabajando en esto de la programada y existen dudas en algunos aspectos. Ademas supongo que ser?a bueno postear lo que tengamos de c?digo para poder dar la opini?n acerca del trabajo que se est? desarrollando en esta ?rea  Sonrisa .

Bueno y que opinan los moderadores? :blush:

 
« Última modificación: Febrero 16, 2008, 02:50:22 por HQH » En línea
kcoder24
Visitante
« Respuesta #1 : Julio 30, 2003, 02:52:16 »

Bueno y por mientras se me ocurre preguntar :

?Como defino un procedimiento con par?metros en ensamblador?  :ph34r:

?Como indico que un procedimiento debe de ser global y que debo de tomar en cuenta (me refiero al manejo de la pila)? :blink:

Espero su respuesta, gracias  Sonrisa  
En línea
fyncher
Visitante
« Respuesta #2 : Julio 31, 2003, 01:25:37 »

Hola Kcoder24, cualquier duda de ensamblador la puedes postear aqu?, si quieres creamos un hilo para eso.
En cuanto a tus preguntas:

Para usar par?metros en ensamblador, al estilo funciones, tienes 3 posibilidades.
 - Guardar los parametros en la pila o en registros y que el procedimiento los use. No es recomendable porque llenas la pila o registros de "basura"
 - Guardar los parametros en variables.
 - Usar macros. Es lo que mas he usado yo. Se definen igual que los procedimientos, pero poniendo "macro" en lugar de "proc", y al finalizar "endm" en lugar de "endp". Se llaman con el nombre de la macro y luego los argumentos, todos seguidos, separados por comas, creo recordar. Y al definir el procedimiento tambien debes poner, despues del nombre de la macro, los nombres de los argumentos. De todas formas lo mejor es consultar algun manual para asegurarse. Lo hare.

Con procedimiento global supongo que te refieres a un procedimiento que pueda ser llamado desde otro fichero fuente. Para eso creo que bastar? con declarar el procedimiento como far, y al principio del otro poner una directiva que es igual que la de #include en C, pero que no recuerdo cual es exactamente. Se me va olvidando el ensamblador, tengo que mirarme un manual para asi ir m?s deprisa. Para lo del procedimiento far tendras que tener en cuenta que, al llamarlo, en la pila estar?n metidos el CS y el IP, no solo el IP. Por si quieres sacar algo de la pila (por ej, si la has usado para meter parametros) que lo tengas en cuenta.

Venga NaCl U2 y suerte
 
En línea
kcoder24
Visitante
« Respuesta #3 : Julio 31, 2003, 02:50:31 »

Gracias. Sonrisa

Mi duda respecto a los par?metros era para saber como manejarlos pero creo que se seguir? el est?ndar de C para meterlos en pila a menos de que se aplique el modificador PASCAL.

Con respecto a las funciones globales precisamente era lo que comentabas, no recordaba si se inclu?a el CS en la pila.  Lengua

Por cierto hay alguien trabajando ya oficialmente en c?digo para que nos pusi?ramos en contacto y nos coordin?ramos?? :lol:  
« Última modificación: Julio 31, 2003, 02:51:33 por kcoder24 » En línea
fyncher
Visitante
« Respuesta #4 : Agosto 01, 2003, 12:52:54 »

HQH ya tiene codigo publicado, yo estoy trabajando en uno, pero no pongo fecha porque ando jodido de tiempo por los examenes de septiembre. De todas formas si quieres algo pregunta.  Giñar  
En línea
kcoder24
Visitante
« Respuesta #5 : Agosto 01, 2003, 02:23:49 »

Pues m?s que nada mi pregunta es como que se planea en si hacer que se haga el kernel, por el momento estoy tratando de reproducir algo que se parezca un poco al MS-DOS 1.0  :huh:  pero a?n no tengo idea de algunas cosas, b?sicamente quiero crear la interfaz de comandos pero sin un conjunto de comandos definidos Giñar .

Ya s? que ni al caso con lo que se planea hacer  :blink: pero por el momento no me ha quedado muy claro el camino a seguir y espero que de esta manera pueda encontrar algo  :ph34r:

Hasta ahora llevo funciones de leer cadenas, desplegarlas y funciones de control de pantalla pero tengo ciertos huecos de informaci?n que espero me puedan llenar  Cheesy

Como que pondr?an en un mini kernel???  
En línea
fyncher
Visitante
« Respuesta #6 : Agosto 01, 2003, 04:00:16 »

Ey, yo tambien estaba trabajando en lo mismo que t?, lo malo de no tener coordinaci?n.
En cuanto a lo del interprete de comandos o sheel (el command.com en DOS) creo que no deberias seguir por ahi. La shell es una interfaz con el usuario, por debajo hay muchas mas cosas. Piensa en un comando para listar archivos (un DIR de DOS), por ej, ?como accedes a disco?, ?como presentas los resultados por pantalla? Necesitas un driver de pantalla, un sistema de ficheros, etc. Tanto el sistema de ficheros como el administrador de memoria y el planificador de procesos suelen ser parte del kernel. Leete mi documento sobre dise?o y lo veras un poco mas claro.
Si quieres informarte sobre el kernel de DOS mira el de FreeDos, que es software libre,aqu?.
Tambi?n puedes mirarte el kernel de Linux, aqu?.
Y por ?ltimo el de Minix, en el que me base para hacer el documento de dise?o y en el que se basa Linux, aqu?.
En línea
kcoder24
Visitante
« Respuesta #7 : Agosto 01, 2003, 05:19:46 »

Mmmmh..  <_<  si capish con lo de las capas y todo, lo del shell era m?s que nada con respecto a que en un momento determinado debes de tener una manera de interactuar con el kernel.

Creo que iniciar? con eso del manejador de archivos.  Sonrisa

Alguien m?s gusta?  
En línea
Greven_il-Vec
Visitante
« Respuesta #8 : Agosto 02, 2003, 11:23:44 »

Hey hola, vaya creo que despu?s de tanto tiempo tras la creaci?n de un S.O. este es mi primer post aqu?... jejeje
Bueno, a lo que iba, que ya me voy por las ramas.

Como ya le dije a fyncher en un correo que le envi?, yo tengo creado un shell que funciona de maravilla en linux y seguro que para g?indous tambi?n con una peque?a modificaci?n. Este shell se podr?a usar o simplemente como gu?a para el nuevo solo tiene 2 comandos internos, el "cd" y el "exit" todos los dem?s los busca en el direcctorio path. Lo que ayuda a que cada programador pudiera aportar su programita por ejemplo su grep, o adaptar los de GNU a nuestro S.O. sin tener que incluirlos en el shell.

Este mensaje lo he puesto aqu?, pq he visto que estabais hablando del shell. Que todav?a queda bastante hasta que se pueda usar uno.. si, es verdad, pero que sepais que teneis mi ayuda en eso, pq de programar en ensamble como que lo unico que se es ensamblador del mips R2000 el de la nintendo las primeras que salieron...
En línea
fyncher
Visitante
« Respuesta #9 : Agosto 02, 2003, 01:07:52 »

Yo tambien tengo por ahi una shell hecha, y lo que tu dices, con unos comandos basicos: el ls, el cd, el ps (mirar procesos) y poco m?s, pero no recuerdo que funcionara tan bien Gi&ntilde;ar
Encantados de tener tu ayuda, si tienes cualquier aportaci?n, la shell incluida, ser? bien recibida.

NaCl U2
En línea
Greven_il-Vec
Visitante
« Respuesta #10 : Agosto 04, 2003, 07:30:13 »

A ver si utilizamos la linea de post de ensamblador para aprender un poco de este...

El domingo pasado, osea ayer, me dije: "De hoy no pasa!". Y empec? a mirarme como iba eso del ensamblador. Bueno, no voy mal, pero tengo un problema muy tonto.

He empezado con el t?pico programa de holamundo. Lo compilo con nasm:   nasm -f elf hola.s
de maravilla... sin problemas, pero al intentar linkarlo con ld:                         ls -s -o hola hola.o
me dice que no he declarado _start. He visto como hacerlo. Lo a?ado, total me queda esto:


Código:
section .text
global _start
  
msj: db 'Hola Mundo, ensamble mola',0

_start:; Aqui empieza el programa

mov dx, msj
mov ah, 9
int 21h

; Fin del programa


Y me da otro error m?s raro... aunque pueda que sea muy com?n pero como nunca he programado en esto...
hola.o: In function `_start':
hola.o(.text+0x2d): relocation truncated to fit: R_386_16 .text


Y eso que significa? A ver si me ayudais un poco por favor.

Tambien me alegraria mucho que me pusierais un hola mundo de ejemplo.
Gracias por todo


Pd:  Sistema Operativo: Linux
Compilador: Nasm
Linkador: Ld
« Última modificación: Agosto 04, 2003, 07:31:21 por Greven_il-Vec » En línea
ThE ShArk
Visitante
« Respuesta #11 : Septiembre 06, 2003, 08:22:32 »

Tengo una peque?a dudilla acerca del ensamblador :blink:

Espero que alguno de ustedes me pueda responder.

las interrupciones del DOS (INT 21h) pueden ser utilizadas en el boot del SO?

Y otra cosilla, como hago para quemar en los sectores del disco con el NASM? no lo se utiliza muy bien Gi&ntilde;ar

Les agradesco de antemano


 
En línea
Zheo
Grupo_Moderadores
Miembro Imprescindible
*
Mensajes: 1.408



Ver Perfil
« Respuesta #12 : Septiembre 07, 2003, 02:15:54 »

La INT21 corresponde a las interrupciones sorftware del DOS, y por tanto, no puede utilizarse para crear otro SO. (estar?as dependiendo de otro SO)

Un saludo.
 
En línea
satdamprogrammer
Visitante
« Respuesta #13 : Septiembre 13, 2003, 10:59:26 »

Hola a todos, estoy probando y profundizando mis conceptos de asm y tengo un par de dudas (utilizo el compilador NASM-0.98.37):

La primera es con respecto a la creaci?n de macros, yo coloco en mi fuente lo siguiente:

LINEA MACRO parametro1,parametro2
  MOV EAX,parametro1
ENDM

Pero cuando compilo me dice que en la l?nea en donde comienza la macro espera una instrucci?n, algui?n sabe que estoy haciendo mal?

Otra es la siguiente, esto no deber?a andar:

variable dw ?

MOV variable,10

Porque cuando compilo me tira errores.

Saludos,

SatDam
En línea
fyncher
Visitante
« Respuesta #14 : Septiembre 19, 2003, 12:39:15 »

Sobre la primera pregunta, en principio parece que esta bien, el error debe estar en la linea anterior a la macro.
Sobre la otra, si no recuerdo mal, no puedes mover un valor inmediato a una variable, antes ha de pasar por un registro

mov al,10
mov variable, al

Asi deberia ir

Bueno, deciros tambien que ya he acabado los examenes y que ahora podre prestar mas atencion al tema.
NaCl U2
En línea
Páginas: [1] 2   Ir Arriba
Imprimir
Foro de Hispabyte.netSistemas operativos y SoftwareSistemas OperativosCreación de un Sistema Operativo (Moderador: JMA_SP)Tema: Código en Ensamblador
Ir a:  


Tema diseñado por RJ-45 para Hispabyte.net basado en el
theme famouspadexx v.09 designed by Formado Comprido
Downloable here. My present to padexx.de