Linguaggio assembly: differenze tra le versioni
Contenuto cancellato Contenuto aggiunto
ripetizione superflua e ridondante |
m fix tecnico |
||
Riga 210:
blocco istruzioni 2
fine_se:
L'iterazione è una struttura che permette di ripetere più volte un'istruzione sotto il controllo di una condizione.''
Riga 238 ⟶ 239:
CMP AX, 000Ah
JB inizio_ciclo ; salta se minore (invece di salta se non uguale)
''In questo modo abbiamo risolto il problema del ciclo infinito. Tuttavia, a causa del fatto che la sequenza viene eseguita almeno una volta, in genere si evita il ciclo a controllo in coda e si utilizza invece quello a controllo in testa.''
'''Il ciclo a controllo in testa (while)'''
Riga 259 ⟶ 260:
JMP inizio_ciclo
fine_ciclo
''La differenza tra questa struttura e quella a controllo in coda sta nel fatto che se la condizione è inizialmente verificata, la sequenza di istruzioni non viene eseguita nemmeno una volta.''
'''Il ciclo a contatore (for)'''
Riga 290 ⟶ 291:
LOOP inizio_ciclo
''Va sottolineato che nel primo esempio si ha un ciclo a controllo in testa, mentre nel secondo uno a controllo in coda, e che, sebbene il secondo sia più compatto e veloce da scrivere, possa generare degli errori, come già detto sopra, se non si sta attenti a come lo si usa, infatti in esso le istruzioni vengono eseguite almeno una volta, per cui se non si è sicuri che il numero di ripetizioni non possa mai essere zero, è meno rischioso usare il primo.''
==L'input/output tramite l'INT 21h del DOS==
Riga 309 ⟶ 310:
''Come si può vedere, sia le operazioni di acquisizione che di stampa fanno rifemento ai codici di carattere ASCII. Nel caso si voglia leggere in input una cifra numerica, per risalire al valore numerico basta sottrarre il valore 30h (48 in decimale) al suo codice ASCII. Infatti 30h in ASCII corrisponde al carattere "0", 31h (49 in decimale) all'"1" e così via...
Nel caso in cui si voglia stampare una stringa:
stringa DB 13,10,"questa è una stringa","$" ;alloco una variabile da un byte che chiamo stringa e in cui ci salvo una sequenza di caratteri(una stringa appunto)
LEA DX,stringa ;copio l'indirizzo di memoria che punta alla stringa in DX
MOV AH,09h ; servizio 09h
INT 21h ; se AX=0009h, allora stampa la stringa a cui punta l'indirizzo di memoria contenuto in DX
== Bibliografia ==
|