|
kcoder24
Visitante
|
 |
« : Julio 30, 2003, 02:49:21 » |
|
Bueno no tengo idea de si sea l?gico  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  . 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
|
|
|
|
|
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. 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.  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.
|
|
|
|
|
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  . 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 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. 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  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: 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  Les agradesco de antemano
|
|
|
|
|
En línea
|
|
|
|
Zheo
Grupo_Moderadores
Miembro Imprescindible

Mensajes: 1.408
|
 |
« 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
|
|
|
|
|