Sezione |
Indirizzi Base
Registri Interni
|
Schede del Tutorial |
PSP - Prefisso del Segmento di Programma |
SCHEDA n° 05 [ 5 di 5] |
|
|
Una delle cose più utili della programmazione in assembly è la possibilità di passare parametri al nostro programma prima che esso venga eseguito, cioè nel momento del suo lancio, al prompt del Dos. | |||||||
La tecnica è estremamente banale ed efficace:
basta elencarli, uno dopo l'altro, dopo il nome del programma e separati (di
solito, ma non necessariamente) da spazi. L'esempio seguente passa al
programma Ora.com il valore di
partenza (il solo parametro 12:20:00):
| |||||||
La forza di questa opportunità è maggiore
della tua attuale potenziale fantasia; con essa si può:
| |||||||
Vediamo la situazione in memoria, dentro il PSP, dopo il comando suggerito precedentemente: |
|
C:\ARCH-LAB\LAVORO>debug ora.com 12:20:00 -d 0080 0CB8:0080 09 20 31 32 3A 32 30 3A-30 30 0D 00 00 00 00 00 . 12:20:00.... 0CB8:0090 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00A0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00B0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00C0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00D0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00E0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. 0CB8:00F0 00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .............. |
|
Osserviamo che solo 11 bytes sono stati coinvolti, esattamente 2 in più rispetto il numero dei caratteri digitati dopo il nome del programma eseguibile al prompt del Dos (che, compreso lo spazio iniziale, sono 9, cioè: " 12:20:00"). | |||||
In pratica quella dei parametri
è una struttura ben precisa:
|
|
In pratica il testo del parametro inizia sempre alla locazione 0082H e non può essere più lungo di 126 caratteri; in caso contrario andrebbe a sovrascrivere il codice macchina del nostro eseguibile, senza dubbio presente a partire da 0100H. In ogni caso il Dos previene (ed evita) questa eventualità limitando d'ufficio il numero di caratteri digitabili in una riga di comando, e segnalando acusticamente con lo speaker di sistema ogni eventuale abuso. |
|
Data l'importanza di questa opportunità mostriamo in che modo il nostro programma può leggere i parametri passati a livello dos (cioè digitati dopo il nome del programma). Prendiamo come riferimento il comando dato all'inizio della pagina per inizializzare l'ora. | |||||
La figura mostra l'estratto della
zona
parametri del PSP e, sotto, il codice necessario per gestirla:
| |||||
Per funzionare correttamente la zona dati del nostro programma deve prevedere una adeguata quantità di bytes, identificata dall'etichetta depPAR, in cui trasferire i caratteri del parametro. | |||||
Il codice suggerito deve essere il primo ad essere eseguito, per evitare di perdere la precaria informazione del PSP. |
|
Scheda n° 05 | Prefisso di Segmento di Programma | |||||||
Scheda n° 05 - 5 |
|
|
|
|
Home |
|
|||||||
|
Motore Ricerca |
|