Visualizzazione dei risultati da 1 a 5 su 5

Discussione: Creazione di nuovo OS

  1. #1
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    11

    Creazione di nuovo OS

    Salve a tutti,
    vi spiego subito il mio problema.
    Ho creato un piccolo kernel in assembly ed ora vorrei provarlo (non su macchine virtuali) ma non sapevo quale estensione e quale boot loader usare.
    Per l' estensione ho usato bin e cfg ma quando mi chiede il file che deve caricare (non avendo un boot loader) gli ho scritto il nome del mio kernel ma quando premo invio non mi da nessun messaggio e non acquisisce la tastiera.
    Poi per il boot loader pensavo di usare grub ma non so come settarlo per far avviare il mio kernel.
    Chi mi può aiutare??

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    6
    Prova a vedere se questo ti può essere utile:

    http://blog.ishans.info/2012/01/19/a...om-usb-drives/

  3. #3
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    11
    Grazie!
    Ma con quale estensione devo compilare il kernel?

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2013
    Messaggi
    6
    Il sorgente è in Assembly, con un assemblatore devi compilarlo in formato binario(*.bin)

  5. #5
    Utente di HTML.it
    Registrato dal
    Aug 2013
    Messaggi
    11
    Ho compilato e copiato il boot loader e il kernel ma non mi va, mi dice che non ha riconosciuto nessun sistema operativo.
    Ecco il mio kernel:

    codice:
    section .code
    
    start:
    
        mov ah, 01h      ;Cursore on
        mov cx, 0607h    ;Modello cursore
        int 10h            ;Richiamo l' interrupt
        mov ah, 02h       ;Seleziono la funzione del bios
        mov dh, 0       ;Posiziono il cursore nella colonna '0'
        mov dl, 0        ;Posiziono il cursore nella riga '0'
        int 10h         ;Richiamo l' interrupt
    
    main:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'O'     ;Condizione ASCII=O
        je sectorO      ;Salta se condizione è vera (ASCII=O)
        cmp al, 'c'     ;Condizione ASCII=c
        je sectorC      ;Salta se condizione è vera (ASCII=c)
        jmp main        ;Ripete l' operazione
        
    sectorA:
    sectorB:
    sectorC:
        
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'f'
        je createfile1
        cmp al, 'l'     ;Condizione ASCII=l
        je clearscreen1        ;Salta se condizione è vera (ASCII=l)
        jmp main
    
    sectorD:
    sectorE:
    sectorF:
    sectorG:
    sectorH:
    sectorI:
    sectorL:
    sectorM:
    sectorN:
    sectorO:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp  al, 'S'
        je versO
        jmp main
    
    sectorP:
    sectorQ:
    sectorR:
    sectorS:
    sectorT:
    sectorU:
    sectorV:
    sectorW:
    sectorY:
    sectorZ:
    NumberSector:
    SpecialSector:
    
    createfile1:
        
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'i'
        je createfile2
        jmp main
        
    createfile2:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'l'
        je createfile3
        jmp main
        
    createfile3:
        
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'e'
        je createfile4
        jmp main
        
    createfile4:
    
        mov ah, 02h
        add dh, 1
        int 10h
        
        mov ah, 02h
        add dh, 1
        int 10h
        jmp main
    
    versO:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp  al, 'v'
        je versS
        jmp main
    
    versS:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp  al, 'e'
        je vers1
        jmp main
    
    vers1:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'r'
        je vers2
        jmp main
    
    vers2:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 's'
        je vers3
        jmp main
    
    vers3:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'i'
        je vers4
        jmp main
        
    vers4:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'o'        ;Se al=o
        je vers5        ;Salta a vers5
        jmp main        ;Salta a main
    
    vers5:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 'n'        ;Se al=n
        je vers6        ;Salta a vers6
        jmp main        ;Salta a main    
    
    vers6:
    
        mov ah, 02h
        add dh, 1
        int 10h
        mov al, '1'        ;Posiziono '1' in al
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        mov al, '.'
        mov ah, 0eh
        int 10h
        mov al, '0'
        mov ah, 0eh
        int 10h
        mov al, ' '
        mov ah, 0eh
        int 10h
        mov al, 'A'
        mov ah, 0eh
        int 10h
        mov al, 'l'
        mov ah, 0eh
        int 10h
        mov al, 'p'
        mov ah, 0eh
        int 10h
        mov al, 'h'
        mov ah, 0eh
        int 10h
        mov al, 'a'
        mov ah, 0eh
        int 10h
        mov ah, 02h
        add dh, 1
        int 10h
        jmp main
    
    clearscreen1:
    
        mov ah, 00h     ;Inserisce il carattere in 'al' sotto codice ASCII
        int 16h         ;Richiamo l' interrupt
        mov ah, 0eh     ;Stampa il carattere ASCII contenuto in 'al'
        int 10h         ;Richiamo l' interrupt
        cmp al, 's'     ;Condizione ASCII=s
        je clearscreen2 ;Salta se condizione è vera (ASCII=s)
        jmp main
    
    clearscreen2:
    
        mov ah, 00h     ;Richiamo una funzione del bios
        mov al, 02h     ;Setto la funzione richiamata
        int 10h         ;Richiamo l' interrupt
        mov ah, 02h
        mov dh, 0
        mov dl, 0
        int 10h
        mov ah, 00h
        mov al, 02h
        int 10h
        jmp main
    
    section .data
    
    ret
    Ultima modifica di MItaly; 02-01-2014 a 00:07 Motivo: Tag

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.