| La procedura
è parzialmente scritta in linguaggio
Assembly. E' probabile che il lettore, in questo momento, non sia in possesso delle
conoscenze di base della programmazione a basso
livello, per cui questa pagina può risultare
incomprensibile; desidero fornirtela comunque, come stimolo per approfondire questa potente tecnica di programmazione
(vedi Sezione
Tutorial Assembly).
| La procedura accede direttamente
alla Ram Video [per saperne di più consulta
la
Scheda nella Sezione
Dentro il Computer] |
| Il compito della procedura è quello di
salvare
l'intera immagine presente sul monitor in
Ram Video |
| Viene anzitutto creato il puntatore ES:DI
alla prima locazione della Pagina alternativa della Ram del Video in cui collocare i bytes estratti dalla
Pagina 0, puntati da DS:SI, associati alla coppia
Ascii/Colore di ciascuno dei
2000 caratteri dell’immagine
attualmente visualizzata sul monitor |
| L’indirizzo fisico di ciascuna Pagina Video alternativa è logicamente distante
4096 bytes (4k) dal precedente, in esadecimale
1000H; è per questa ragione
che, per localizzare la Pagina alternativa che ci interessa basta
moltiplicare questo offset per il numero espresso dal
parametro "numPAG").
Se la
Pagina 0 è localizzata all’indirizzo B800:0000H,
la Pagina 1 comincerà a B800:1000H,
la Pagina 2 a B800:2000H, e
così via |
Codice Sorgente |
|
|
|
|
PROCEDURE
Salva(numPAG:byte);
BEGIN
asm
PUSH ES
PUSH DS
PUSH DI ;Salvataggio dei registri coinvolti
PUSH
SI ;
PUSH CX ;
CLD
MOV AX,0B800H ;Copre
la Ram Video con i 2
MOV ES,AX
;segmenti puntati da ES e DS
MOV DS,AX
;
MOV CL,numPAG
;
MOV CH,00H
;Fissa
il puntatore alla prima lo-
MOV AX,1000H
;cazione
di destinazione nella pa-
MUL CX
;gina alternativa
fissata da numPAG
MOV DI,AX
;
MOV SI,0000H
;Fissa
il puntatore alla prima lo-
;cazione sorgente
in Pagina 0
MOV CX,2000
;Copia
l'intera pagina di caratteri
REP
MOVSW
;nella pagina alternativa
POP CX
;
POP SI
;
POP DI
;Recupero dei registri coinvolti
POP DS
;
POP ES
;
end;
END;
|
|