|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
[assembler] boot loader e kernel
ragazzi ho creato un piccolo programmino che chiede all'utente di premre un tasto per riavviare il pc e mi sono preso il lusso di chiamarlo kernel, in quanto la mia idea è che dato un bootloader che indichi al bios cosa caricare mi faccia partire il programma in questione. Ora ecco il punto come si fa ad istallare il boot loader ed il kernel rispettivamente nel settore 1 e 2? e come indico al bootloader il caricamento del kernel?
__________________
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
up niente ragazzi quanche esperto di codice macchina?
__________________
|
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Leggi qui.
Ma ti consiglio di fare le prove con una macchina virtuale, perché andare a sostituire l'MBR è pericoloso, visto che contiene anche le informazioni sulle partizione del disco rigido. Comunque nel link c'è spiegato anche come rimpiazzare l'MBR in maniera corretta.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
Grazie pytoniano vedo
__________________
|
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Mi pare difficile che un prof di scuola sia a conoscenza di roba come questa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
Aiuto nulla di fatto e se invece volessi usare un programma che scrive in un floppy ad un settore specifico quale potrei usare?
__________________
|
|
|
|
|
|
#7 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
In mente non me ne viene nessuno al momento.
Ma realizzarne uno ad hoc dovrebbe essere cosa facile. Ai tempi del DOS si scriveva con poche righe in Turbo Pascal, sfruttando direttamente le apposite API che il BIOS metteva a disposizione per (leggere e) scrivere i settori di un qualunque dispositivo.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#8 |
|
Senior Member
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
|
http://en.wikipedia.org/wiki/RaWrite
http://en.wikipedia.org/wiki/RaWrite2 Se sei su Linux basta un uso saggio di dd. ciao
__________________
C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai! |
|
|
|
|
|
#9 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
Ragazzi ho trovato un "writebin" e ha funzionato infatti il floppy avvia il pc e stampa una bella scitta XD mi vorrei cimentare nello scrivere io stesso un programma k scriva il file il problema è ke nopn capisco la struttura di questi programmi cioè sarebbe semplice indicare il file da scrivere in una stringa e poi darlo a qualche comando il problema è ke non c'è nulla del genere c'è solo l'istruzione di scrittura di un settore senza riferimenti per quale file scrivere.
guardate http://www.htl-steyr.ac.at/~morg/pci...s/inte6xps.htm
__________________
|
|
|
|
|
|
#10 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Ottimo.
Quella è la funzione del BIOS di cui ti parlavo, ma ovviamente devi passarle il buffer da scrivere, e quello devi averlo già riempito coi dati letti da un file. Guarda, in Turbo Pascal è roba che si realizza in pochi minuti. Ma ormai sono LEGGERMENTE arrugginito con questo linguaggio/IDE.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#11 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
in Windows é sufficiente aprire la periferica del floppy con CreateFile passando la stringa "\\\\.\\A:" al parametro lpFileName e a quel punto ci puoi scrivere anche con WriteFile. piccolo hack: dal momento che le funzioni dei runtime C e C++ sono basate sulle API, funziona anche con fopen e col costruttore di std::ostream
![]() comunque leggi qui al paragrafo "Physical Disks and Volumes": http://msdn.microsoft.com/en-us/library/aa363858.aspx |
|
|
|
|
|
#12 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
cavolo è vero col C++ fopen e poi scriverlo nel settore 1 grandioso ragazzi. Mi si è presentato un altro problema i caratteri stampati sono strani probabilmente non vengono riconosciuti da BIOS uff chae lavoraccio
__________________
|
|
|
|
|
|
#13 |
|
Bannato
Iscritto dal: Jan 2009
Messaggi: 194
|
il problema è che a macchina nuda, il sistema riconosce solo,
testina, settore e traccia del floppy... quindi nessun filesystem e roba del genere.. Scrivere il boot sector è facile, basta prendere gli esadecimali del compilato semplice che rientra nelle dimensioni di 512 byte.. Per i caratteri bisognerebbe utilizzare l'int 10 della VGA.. |
|
|
|
|
|
#14 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#15 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
mmm se carica il DOS quindi gli ascii??? gli ho dato i codici ascii in un v ettore e stampati con un loop con l int10h servizio elementare ma il cursore cammina e non si vede nulla mentre se uso il servizio stampa stringhe escono simboletti strani se volete posto il codice
__________________
|
|
|
|
|
|
#16 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Mi sembra strano. Posta il codice, così vediamo se riusciamo a cavare fuori qualcosa.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#17 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
#make_boot
org 7c00h jmp inizio pre db 'A cura di xxxxxxxxxxx xxxxxx',0 func db 'Inserisci h per la lista funzioni',0 rebo db '1-reboot, premere o per continuare',0 inizio: stringa1: lea bp,pre ;caricamento dell'indirizzo della stringa mov ah,13h ;servizio stampa stringhe mov al,01h ;setta lo spostamento del cursore e attributi mov bh,0h ;pagina 1 mov bl,0fh ;colore bianco mov cx,28 ;caratteri mov dx,0h ;inizio stringa int 10h posizione1: ;mov ah,03h ;calcolo posizione cursore ;int 10h inc dh ;riga successiva mov dl,0h mov ah,02h ;setta posizione cursore int 10h stringa2: lea bp,func mov ah,13h ;servizio stampa stringhe mov al,01h ;setta lo spostamento del cursore e attributi mov bh,0h ;pagina 1 mov bl,0fh ;colore bianco mov cx,34 ;caratteri int 10h posizione2: mov dh,17h mov dl,0h mov ah,02h ;setta posizione int 10h carattere: mov cx,01h mov ah,09h mov al,'\' ;stampa \ mov bl,0fh int 10h cursore3: inc dl ;colonna successiva mov ah,02h ;setta posizione cursore int 10h input: mov ah,00h ;servizio input int 16h cmp ah,23h ;controllo numero h je stringa3 cmp ah,4fh ;controllo 1 je reboot jne input stringa3: lea bp,rebo mov ah,13h ;servizio stampa stringhe mov al,0h ;setta lo spostamento del cursore e attributi mov bh,0h ;pagina 1 mov bl,0fh ;colore bianco mov cx,35 ;caratteri int 10h cursore4: inc dh ;colonna successiva mov ah,02h ;setta posizione cursore int 10h input1: mov ah,00h ;servizio input int 16h cmp ah,18h je input jne input1 reboot: int 19h HLT ; halt!
__________________
|
|
|
|
|
|
#18 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
A me sembra tutto corretto.
Senti, puoi fare una prova più specifica? Stampa tutti i caratteri a gruppi di 32 con entrambe le funzioni (quella di stampa stringa e di stampa singolo carattere). Così otterrai una griglia 32x8 realizzata con la prima funzione, e sotto un'altra 32x8 realizzata con l'altra. In questo modo visualizzerai l'intero charset e ti sarà più facile vedere a occhio le differenze, e riportarle.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#19 |
|
Senior Member
Iscritto dal: Jun 2007
Messaggi: 1574
|
Questo forse è ciò k intendevi stampa i caratteri alfanumerici e i numeri in 4 diversi servizi del dos e ti poosto un immagine col risultato ogni riga è uns ervizio di stampa diversa,
#make_boot# org 7c00h ; set location counter. ; add your code here jmp inizio msg db 'abcdefghilmnopqrstuvz0123456789\',0 msg1 db 97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,48,49,50,51,52,53,54,55,56 inizio: lea bp,msg mov ah,13h mov al,01h mov dx,0h mov cx,32 mov bh,0h ;pagina 1 mov bl,0fh ;colore bianc int 10h parte2: mov ah,02h inc dh mov dl,0h int 10h mov si,0h ciclo: mov ah,09h mov al,msg[si] inc si mov cx,01h int 10h mov ah,02h inc dl int 10h cmp si,32 jne ciclo mov ah,02h inc dh mov dl,0h int 10h mov si,0h ciclo1: mov ah,0eh mov al,msg[si] inc si mov cx,01h int 10h mov ah,02h inc dl int 10h cmp si,32 jne ciclo1 parte3: mov ah,02h inc dh mov dl,0h int 10h mov si,0h ciclo2: mov ah,0ah mov al,msg[si] inc si mov cx,01h int 10h mov ah,02h inc dl int 10h cmp si,32 jne ciclo2 parte4: lea bp,msg1 mov ah,13h mov al,01h mov dl,0h inc dh mov cx,32 mov bh,0h ;pagina 1 mov bl,0fh ;colore bianc int 10h input: mov ah,00h mov bh,0h int 16h cmp al,61h jne input INT 19h ; reboot
__________________
|
|
|
|
|
|
#20 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 16:31. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 14:56.





















