 | NB: nel momento della
chiamata della procedura Poligono i registri
DH e
DL contengono rispettivamente la
riga
e la
colonna del punto in cui verrà stampata la
stringa della
taratura numerica; ecco i
particolari:
 | provvede alla stampa, in blocco,
della taratura numerica
superiore:
 | è necessario definire la stringa Asse_X,
contenente i numeri desiderati (" 123456789 ")
e terminata con 00H, per assicurare la
corretta gestione da parte della macro
M_msgC,
chiamata a metterla dinamicamente a
video, in bianco brillante su nero (M_msgC
Asse_X,DH,DL,0FH) |
 | poichè la stringa Asse_X è invariabile e
dedicata alla procedura Poligono
possiamo estrarla dall'Area
dei dati del programma e inserirla prima della sua definizione; questa
scelta rende facile l'eventuale
aggiunta di Poligono alle procedure
della libreria Giobe.LIB |
 | la sequenza numerica segue automaticamente la
cornice in ogni punto dello schermo, essendo
vincolata dalle coordinate dinamiche
DH e
DL |
|
 |
stampa la cornice, con l'aiuto della
procedura Cornice del progetto scorso, data per commentata, come
la parte di contorno:
 |
è necessario porre la cornice (CALL
Cornice) sulla riga successiva (INC
DH), rispetto alla posizione
di stampa della
taratura numerica (a cui
corrispondono le coordinate iniziali,
DH e
DL) |
 |
per non perdere il valore iniziale delle coordinate (che
servirà più avanti per stampare le lettere) è necessario prima salvare (PUSH DX)
e poi recuperare (POP DX) nello/dallo
stack il valore del registro
DX |
|
 |
La taratura letterale
laterale deve invece essere fatta con l'aiuto della
BIOchr1, stampando una lettera dopo l'altra sulla stessa colonna ma su righe
consecutive, con l'aiuto di un ciclo
FOR, realizzato con la solita istruzione
LOOP:
 | fissa il colore desiderato per le lettere (M_COLOR
0FH), come per i numeri, in bianco brillante su nero |
 | fissa la posizione di stampa (SUB
DL,2,
ADD DH,2) nel punto previsto per la
prima lettera, 2 colonne a sinistra e 2
righe sotto |
 | carica a 10 il contatore (MOV
CX,10), essendo 10 le lettere da stampare |
 | inizializza la procedura, indicandole (MOV
AL,"A") quale lettera stampare per prima |
 | le
4 successive
istruzioni, fino al gestore del ciclo
FOR (l'istruzione LOOP), vengono
ripetute 10 volte; in particolare:
-- M_CURSOR DH,DL:
fissa la posizione di stampa corrente,
mantenendo inalterata la colonna e cambiando la riga
-- CALL BIOchr1:
stampa la lettera maiuscola corrente
-- INC AL:
predispone il codice Ascii della lettera maiuscola
successiva: in effetti il simbolo
"A" corrisponde al codice
41H, per cui incrementandone
il valore, in AL
finisce il numero 42H, proprio il codice Ascii della lettera
"B"
-- INC DH:
predispone il numero di riga per puntare la successiva (notare che il valore
di DL
non viene toccato) |
|
|