Sezione![]() |
Indirizzi Base
Registri Interni
|
Palestra Livello Apprendisti Livello Esperti |
Programmare in Assembly |
Esercizio n° A007 3/5 [41 di 157] |
|
|
||
Gestione Caratteri - Stampa 10 caratteri uguali a colori | ||
Analisi del Codice [2 di 3] |
|
![]() | Ecco finalmente un progetto un po' impegnativo; se hai svolto con diligenza gli altri 6 non dovresti aver difficoltà a riconoscere in questo codice un pezzettino di ciascuno dei precedenti, con 2 piccole novità che scopriremo strada facendo... |
|
![]() | Ma andiamo con ordine; il cappello del programma è già stato descritto: pulizia dello schermo e dalla predisposizione del punto di stampa iniziale (fissata alla riga12, colonna39): |
|
|
![]() |
Esercizio![]() ![]() ![]() |
NB: se il testo nell'Area
ti
sembra strano installa il font Giobe.TTF: clicca qui!! |
![]() |
![]() |
![]() |
|
![]() | Segue il ciclo con la sua parte iterativa, da eseguire 10 volte (MOV CX,10): |
|
|
![]() | La prima operazione consiste nella lettura della posizione di stampa corrente e costituisce anche la prima novità, rispetto agli esercizi precedenti; il compito è affidato alla Funzione 03H di INT 10H, che lascia le coordinate in DL (colonna) e in DH (riga). |
|
![]() | Possiamo notare anche la precedente istruzione PUSH CX, il cui compito è quello di salvare (nello stack) il valore corrente del contatore, molto prezioso. |
|
![]() | Segue la stampa del carattere a colori, di cui già sappiamo tutto; anche in questo caso ti faccio notare la coppia di istruzioni estreme (PUSH DX e POP DX) aggiunte, rispetto alla versione discussa in precedenza, per non rischiare di perdere le coordinate di stampa corrente, appena assunte dalla Funzione 03H: |
|
|
![]() | Non dimenticare che nell'Area destinata ai dati del programma deve essere definita e inizializzata obbligatoriamente la variabile locale di nome ATTRIB, indispensabile per assicurare la gestione del colore del carattere da stampare; essa contiene il byte (attributo di colore) da mettere in BL. |
|
![]() |
Palestra Apprendisti |
![]() |
Esercizio n° A007 3/5 |
![]() |
![]() |
![]() |
||
41 di 157 |
|
|
|
Home
![]() |
|
|||||||
|
Motore Ricerca |
|