Sezione

Indirizzi Base Registri Interni
Area Comunicazione BIOS Funzioni BIOS Funzioni DOS
Prefazione Capitolo 1 Capitolo 2 Schede
Libreria ASM Libreria MAC Palestra Progetti ASM
Info Download INDICE

Capitolo 1

Home » Programma il Computer » Tutorial Assembly

Capitolo 1 - Il processore - Il Debugger

  Il Processore e il Debugger

DEBUG 15/22 [43 di 60] 

    

    Comando L -  Carica  il codice di un file eseguibile 
     
bulletIl comando L (LOAD, carica) carica in memoria un file di qualunque tipo; di solito viene dato senza parametri, dopo aver specificato il nome (e l'eventuale percorso) con il comando N, già discusso in precedenza; il file viene assunto in memoria rigorosamente a partire dall'indirizzo CS:0100H.

      

-n esegui.com
-l

      

bulletIl file caricato in memoria può essere di qualunque tipo (di testo TXT, di dati DAT, eseguibile COM o EXE) sebbene la potenza di debug sia meglio evidenziata nella gestione dei files di codice, come gli ultimi 2.
bulletSe, dopo il comando L, è specificato un indirizzo (offset) esso rappresenta la locazione a partire dalla quale viene caricato il file; naturalmente questo ha senso solo se il file è di tipo COM; un file EXE viene infatti sempre e comunque rilocato all'indirizzo specificato nel suo header!
bulletSe l'indirizzo specificato è solo quello di offset i dati visualizzati si ritengono appartenenti al segmento CS.
bulletNon dimenticare che, dopo la copia del file è disponibile un numero a 32 bit che esprime la quantità di bytes caricati in memoria, lasciato nella coppia di registri BX,CX, rispettivamente parte alte e parte bassa.

      

    
    Comando L -  Carica  i bytes di uno o più settori di un disco
     
bulletIl comando L (LOAD, carica) è spesso utile anche per caricare in memoria uno o più settori di una memoria di massa (hard disk o floppy disk).
bulletIn questo caso è conveniente specificare l'indirizzo (offset) in cui travasare i bytes richiesti, dopo il comando L e prima dei 3 parametri necessari per individuare i settori desiderati:
bulletil primo è un numero che indica il disco da cui prendere i dati: 0 per il drive A, 1 per il drive B, 2 per il drive C, e cosi via...
bulletil secondo è il numero (logico) del primo settore da caricare dal disco appena indicato; vale la pena soffermarci un po' su questo numero, sebbene sia argomento tipico dei dischi:
bulletsi tratta di un numero progressivo che parte da 0 e raggiunge il valore dato dal prodotto (N°Settori/Traccia)(N°Tracce)(N°Lati).
bullet La numerazione di settori logici proseguirà in sequenza sulla medesima traccia (Cylinder) del lato (Head) corrente e proseguirà (in verticale) sulla stessa traccia del lato successivo fino all'esaurimento di tutte le facce disponibili; per riprendere, lato dopo lato, sulla traccia (cilindro) successiva, verso l'interno del disco. 
bulletQuesto modo logico di trovare i settori di un disco è tipico del DOS ed è diverso da quello assoluto/fisico usato dal BIOS e costituito dalla terna di numeri detta sinteticamente CHS (Cylinder, Head, Sector).
bullet Così, per esempio, il primo settore fisico, il boot record, identificato dal numero 0,0,1, corrisponde al settore logico 0.
bullet La tecnica BIOS (Settore fisico, basso livello) è senz'altro più utile di quella Dos (Settore Logico, alto livello); il passaggio dalla prima alla seconda è facilitato dalla seguente Formula:

      

N° settore logico = (N°Settore fisico - 1) + [N°Lato*(N°Settori/Traccia)]+[Traccia*(N°Settori/Traccia)*(N°Lati)]

      

bullet La poco chiara numerazione logica dei Settori da parte del DOS è, per altro, estremamente efficace perchè consente al Sistema Operativo di accedere a qualunque disco, indipendentemente dalle sue caratteristiche hardware.
bulletil terzo e il numero di settori da caricare;  non è possibile leggere più di 80 settori, pari a 40k di memoria.

      

Ricorda... La possibilità di copiare interi settori di un disco è senza dubbio una situazione di straordinaria potenza. Sebbene non comporti grandi rischi conviene agire con discrezione, sicurezza e competenza: ti consiglio di fare le prove con un dischetto floppy e di toccare l'HD solo quando 6 ben certo di quello che fai.

      

bulletPer restare in tema la seguente stringa carica il boot record di un floppy disk a partire dall'indirizzo (offset) 1000H, nell'unico segmento a disposizione di Debug; tutti i registri di segmento (CS, DS, ES, SS) sono infatti predisposti con lo stesso valore.
bulletLa stringa si legge: carica (L), a partire dall'indirizzo 1000, dal disco 0 (driver A) il settore n°0 (il primo) nella quantità 1 (un solo settore, cioè 512 bytes):

      

-l 1000 0 0 1 ; comando per leggere il Boot Record

      

bulletAnalogamente per analizzare le 2 copie della FAT (File Allocation Table) di un floppy disk da 1,44M, possiamo dare il comando seguente, che le copia a partire dall'indirizzo (offset) 1000H. Notoriamente ciascuna FAT occupa, in questo caso, 9 settori, subito dopo quello del boot record, analizzato in precedenza; perciò il comando sarà (per la prima copia di FAT): carica (L), a partire dall'indirizzo 1000, dal disco 0 (driver A), i settori a partire dal n°1 (il primo) nella quantità 9:

      

-l 1000 0 1 9  ; comando per la   prima copia della FAT

      

oppure (per la seconda copia di FAT): carica (L), a partire dall'indirizzo 1000, dal disco 0 (driver A), i settori a partire dal n°10 (in exa 0AH) nella quantità 9:

      

-l 1000 0 A 9  ; comando per la seconda copia della FAT

      

bulletSe  vuoi continuare con questo gioco ricorda che, in un floppy disk da 1,44M, la directory occupa i 14 settori successivi alle 2 copie della FAT; è facile concludere che il comando da date sarà: carica dal disco 0 (driver A) i settori a partire dal n°19 (cioè 1+9+9=19, in esadecimale 13H) nella quantità 14 (in esadecimale 0EH):

      

-l 1000 0 13 E  ; comando per leggere la Directory

    

Pagina Precedente Capitolo 1 Pagina Successiva DEBUG 15/22   Torna alla Home  del Capitolo1 del "Tutorial" Lezioni - Vai al DownLoad dei files DOC Torna al Menu del "Tutorial"
43 di 60
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60

    

CAP. 1 » 1. Processore 80x86 2. Istruzioni 80x86  3. Debug  4. La Grande Libreria
TUTORIAL » Indirizzi Base | Registri Interni | Area Comunicaz. BIOS | Funzioni BIOS | Funzioni DOS
Prefazione | CAP 1 | CAP 2 | Schede | Palestra
Libreria ASM | Libreria MAC | Progetti ASM | Download | Info | Indice
Home 
Pascal|Manuali|Tabelle|Schede
Tutorial Assembly|Palestra Assembler
Aggiungi Giobe®2000 ai preferiti  
Motore
Ricerca
  Rendi Giobe®2000 pagina di Default
© 2001-2010  -  Studio Tecnico ing. Giorgio OBER
Tutti i diritti sono riservati