Autor
|
Tema: creando el sistema operativo (Leído 16385 veces)
|
manuelero
Desconectado
Mensajes: 8
|
Hola skapunky. Me parece que no es el 'salto de línea' el problema, con 'mov cx' especifico cual es el largo de la cadena y con ' mov dh, mov dl' el X y el Y. Asi funciona 'mov ah,13h' de la 'int 10h'
1 saludo
|
|
|
|
|
En línea
|
"El auténtico conocimiento es conocer la extensión de la propia ignorancia"
|
|
|
|
Meta
|
Bue che. Nadie me da bola! Les dejo el humilde codigo de lo que estuve haciendo... ;Autor: Manuel Vazquez ;Año: 2008
;org 7C00h org 100h
jmp comienzo
msg00 db 'BMOS 1.0' msg01 db 'BobMarley ' msg02 db 'Operative ' msg03 db 'System' comienzo mov bh,00h ;pagina 0 ;---------- mov dh,01h ;Columna (X) mov dl,21h ;Fila (Y) mov ah,13h ;funcion mostrar cadena de texto mov al,01h ;subfuncion: escribo y despliego el cursor
mov bl,07h ;Color mov bp,msg00 ;direccion de la cadena a mostrar mov cx,08h ;largo de la cadena int 10h ;Interrupcion de video que muestra ;---------- ;********************************* mov dh,03h ;Columna (X) mov dl,18h ;Fila (Y) ;*********************************
;---------- mov ah,13h ;funcion mostrar cadena de texto mov al,01h ;subfuncion: escribo y despliego el cursor
mov bl,0Ch ;Color mov bp,msg01 ;direccion de la cadena a mostrar mov cx,0Ah ;largo de la cadena int 10h ;Interrupcion de video que muestra ;---------- mov ah,13h ;funcion mostrar cadena de texto mov al,01h ;subfuncion: escribo y despliego el cursor mov bl,0Eh ;Color mov bp,msg02 ;direccion de la cadena a mostrar mov cx,09h ;largo de la cadena
mov dl,22h ;Fila (Y) int 10h ;Interrupcion de video que muestra ;---------- mov ah,13h ;funcion mostrar cadena de texto mov al,01h ;subfuncion: escribo y despliego el cursor mov bl,0Ah ;Color mov bp,msg03 ;direccion de la cadena a mostrar mov cx,06h ;largo de la cadena
mov dl,2Ch ;Fila (Y)
int 10h ;Interrupcion de video que muestra ;---------- mov ah,00h ;Funcion para esperar tecla int 16h ;Interrupcion de teclado int 20h ;Salir
cuando lo compilo con el nasm con 'org 100' y lo ejecuto como .COM anda bien. cuando lo compilo con 'org 7C00' y lo guardo en el sector 0 de un disquet se ven "simbolos extraños" en donde deberian verse los mensajes No se este ASM pero como estoy con los ASM de PIC me suena muchas cosas. Qué ensamblador has usado. El del 8085, 8086, 8088. ¿Puedo trabajarlo con el MPLAB? Por cierto con tu código, buen trabajo.
|
|
|
|
|
En línea
|
|
|
|
|
SERBice
|
usamos compiladores 8086 (en realidad x86, muchos optamos por usar i386+ por la simple cuestion de que el 386 tiene mejor control de memoria.. etc etc, pero cualqueir compilador x86 sirve, yo uso FASM)
|
|
|
|
|
En línea
|
Estrenando firma (Gracias Artikhacker):  Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T 
|
|
|
manuelero
Desconectado
Mensajes: 8
|
No se este ASM pero como estoy con los ASM de PIC me suena muchas cosas. Qué ensamblador has usado. El del 8085, 8086, 8088. ¿Puedo trabajarlo con el MPLAB?
Por cierto con tu código, buen trabajo. Hola Meta, como dice SERBice usamos compiladores 8086 (en realidad x86) Yo uso el NASM. Ah, no se que es MPLAB  ahora lo puse a bajar 
|
|
|
|
|
En línea
|
"El auténtico conocimiento es conocer la extensión de la propia ignorancia"
|
|
|
|
|
|
|
eduar1
Desconectado
Mensajes: 9
|
A todos le sugiero que intalen el VIRTUALBOX para hasi puedan ir probando el sistema operativo , en el foro podran colocar todo ya saben http://proyecto-so.awardspace.com/
|
|
|
|
« Última modificación: 21 Julio 2008, 04:46 por eduar1 »
|
En línea
|
|
|
|
|
SERBice
|
Connection Problems Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later.
|
|
|
|
|
En línea
|
Estrenando firma (Gracias Artikhacker):  Asus M2N-SLI (nFoce 560SLI) - 4GB DDR2 OCz System Elite @800MHz - AMD Athlon 64 x2 5200+ - GeForce 8800GS 384MB Alpha Dog Edition 680Mhz - HD SATA2 WD 7200rpm 500GB - Asus DRW-2014L1T 
|
|
|
manuelero
Desconectado
Mensajes: 8
|
EL PRIMER LOGRO No soy ningún experto en nada. Solo intento aprender… Compile el siguiente código y lo escribí en el primer sector de un disquete y anduvo bien. Ya logre mostrar texto en pantalla… No entendí por que el código anteriormente publicado no anduvo, se que el anterior usaba ah,13h (función mostrar cadena de texto). Y el nuevo código que escribí usa una rutina para mostrar una cadena que funciona con ah,0Eh (función para imprimir un carácter) Además aprendí que los dos últimos caracteres del primer sector deben ser 55AAh para que la Bios sepa que si tiene que ejecutar el código. Este código genera un archivo de exactamente 512 bytes y al final tiene el 55AAh. Tambien es importante que lo primero que se hace es poner los registros en 0. Todo esta bien explicado en el código que les dejo a continuación, el cual trate de comentar lo mas posible de manera que todos puedan entender. Compilado con NASM ;Manuel Vazquez ;Fecha: Jul 17, 2008
;Para boot loader org 7C00h ;orden al compilador que el ;programa comienza en el offset 7C00 ;(direccion necesaria para el boot)
;Para archivo .com ;org 100h ;call comienzo
;Poner los registros en 0 -------------------------- iniciar: xor ax, ax ;pongo ax en 0 mov ds, ax ;copio ax en ds mov dx, ax ;copio ax en dx mov bx, ax ;copio ax en bx ;---------------------------------------------------
;--------------------------------------------------- ;imprimir el primer texto centrado comienzo: mov ah,00h ;funcion para cambiar modo de pantalla mov al,03h ;modo de pantalla int 10h ;Iniciar los graficos
mov dh,01h ;Fila (Y) mov dl,21h ;Columna (X) mov ah,02h ;funcion para posicionar el cursor int 10h ;posicionar el cursor mov bl,07h ;Color mov si,msg00 ;pongo en SI la direccion de msg00 call print ;llamo a print ;---------------------------------------------------
;--------------------------------------------------- ;imprimir el resto del texto con sus respectivos colores mov dh,03h ;Fila (Y) mov dl,18h ;Columna (X) mov ah,02h ;funcion para posicionar el cursor int 10h ;posicionar el cursor
mov bl,0Ch ;Color mov si,msg01 ;pongo en SI la direccion de msg01 call print ;llamo a print ;---------- mov bl,0Eh ;Color mov si,msg02 ;pongo en SI la direccion de msg02 call print ;llamo a print ;---------- mov bl,0Ah ;Color mov si,msg03 ;pongo en SI la direccion de msg03 call print ;llamo a print ;---------- ;---------------------------------------------------
;--------------------------------------------------- salir: mov ah,00h ;Funcion para esperar tecla int 16h ;Interrupcion de teclado int 19h ;Reiniciar ;---------------------------------------------------
;Funcion para imprimir en pantalla------------------ ;el registro SI es un puntero a la direccion de memoria a leer ;empiezo a leer hasta encontrar el caracter 0 print: lodsb ;cargo en AL el caracter que se encuentra en DS:DI ;y dejo el registro en el siguiente caracter test al,al ;veo (o comparo) el valor de AL jz end_print ;si AL es 0 termino de leer, de lo contrario sigo ;con la linea de abajo mov ah,0Eh ;funcion para imprimr caracter de la int 10h int 10h ;imprimimos el caracter en AL. jmp print ;vuelvo a leer el siguiente caracter end_print: ;----------------------------------- ret ;salir de la funcion
;---------------------------------------------------
;DATOS---------------------------------------------- msg00 db 'BMOS 1.0',00 ;escribo en el codigo el texto y luego el carácter 0 msg01 db 'BobMarley ',00 msg02 db 'Operative ',00 msg03 db 'System',00 ;---------------------------------------------------
;Necesario para el boot----------------------------- ;Cada sector tiene 512 bytes, 510 es 512 ;menos los dos bytes 55AA que se explican ;a continuacion
times 510-($-$$) db 00h ;times repite una cantidad de veces una funcion ;en este caso ($-$$) representa la posicion actual ;o la cantidad de bytes que ya se escribieron de ;programa. ;Entonces escribo el caracter 0 (510-bytes escritos)veces ;y luego escribo 55AA dw 0xAA55 ;La bios busca 55AA(DW lo escribe a la inversa) ;en la ultima parte del sector para saber si ;es tiene que iniciar el Sistema Operativo ;---------------------------------------------------
ah, me parece muy bien que hagan una pagina  yo habia pensado un blog o algo ESPERO QUE LES GUSTE EL CODIGO! Y/O QUE LO MEJOREN
|
|
|
|
|
En línea
|
"El auténtico conocimiento es conocer la extensión de la propia ignorancia"
|
|
|
eduar1
Desconectado
Mensajes: 9
|
Connection Problems Sorry, SMF was unable to connect to the database. This may be caused by the server being busy. Please try again later. muy pronto ya va a estar lista problemas con la bd ok chaoo..
|
|
|
|
« Última modificación: 18 Julio 2008, 22:30 por eduar1 »
|
En línea
|
|
|
|
|
|
eduar1
Desconectado
Mensajes: 9
|
disculpen todos pero no e podido subir el foro ya que el ftp no me quiere funcionar , mañana probare otrra vez
|
|
|
|
|
En línea
|
|
|
|
|
Meta
|
El foro no tira.
|
|
|
|
|
En línea
|
|
|
|
eduar1
Desconectado
Mensajes: 9
|
El foro no tira.
no la e subido probelma del ftp
|
|
|
|
|
En línea
|
|
|
|
|
|
|
|