trucchi-com

assembler per principianti


Cap. 2 Il processore Il processore non è altro che un chip elettronico simile a quelli che vedete su qualsiasi altro circuito elettronico (quei ragnetti neri di plastica con tante zampette metalliche intorno), bene, sedici di queste zampette il processore le usa per scegliere il blocco di memoria da cui vuole leggere o scrivere un numero, altre sedici le usa per l'indirizzo della cella all'interno del blocco stesso, inoltre possiede altre otto zampette su cui riceve o spedisce il numero per/da la memoria, vi sono inoltre molte altre zampette che servono per altri scopi, ma a noi non interessano.Ma il processore dove mette questo numero? Esso possiede al suo interno delle celle di memoria simili a quelle della memoria stessa, ma più grandi, infatti si dice di processori a 16 BIT ossia 16 elementi invece di 8 che possono contenere in binario 1111111111111111 (65535 in decimale, non vi suona familiare questo numero?) ora queste celle si chiamano registri e vengono contrassegnati con delle sigle, così abbiamo il registro AX detto anche accumulatore, il BX, il CX, il DX, il DI e il SI detti anche registri indice (poi vedremo perché), il F (che ha funzioni particolari), il BP ed il SP, vi sono inoltre il IP non accessibile dai programmi, CS DS SS ES FS GS che contengono i numeri relativi a blocchi di memoria.Quando caricate in memoria un programma e lo mandate in esecuzione il registro IP punta al primo numero del programma chiamato istruzione ed in base al valore di questo numero esegue una determinata azione che può essere per esempio INC AX, ossia incrementa il valore contenuto nel registro AX, quindi se AX conteneva 10 (2 in decimale) dopo l'operazione conterrà 11 (3 in decimale).Come vedete sono istruzioni molto semplici ed infatti per eseguire una operazione un po' elaborata a volte occorrono decine di istruzioni di questo tipo. Se avete intenzione di scrivere un programma come Write in assembler è possibile, ma armatevi di una santa pazienza e prevedete di fermarvi davanti alla vostra tastiera per i prossimi dieci anni. In effetti l'assembler si usa solitamente per scrivere dei piccoli programmi dove conta molto la velocità di esecuzione o non è possibile scriverli con linguaggi più evoluti.Pensate che per scrivere "Hello world" sullo schermo in basic basta scrivere:PRINT "HELLO WORLD"In C scrivereste:PRINTF "HELLO WORLD";In assembler invece la cosa è molto più laboriosa:MOV ES, B800 'metti nel registro di segmento l'indirizzo del segmento video non ' grafico MOV CX,11 ' metti in CX la lunghezza della stringa di testoMOV DX, buffer 'metti in DX l'indirizzo in memoria della fraseMOV BX,0 'metti in BX l'indirizzo della prima cella del videoEtichetta:MOV AX,(DX) 'metti in AX il primo carattere puntato da DX (H)MOV ES:(BX),AX 'scrivi il carattere nella memoria video puntata da ES e BXINC BX 'incrementa BXINC DX 'incrementa DXDEC CX 'decrementa il contatore di caratteriJNZ etichetta 'se non è zero CX torna a etichetta e ricomincia da lìCome vedete l'assembler è molto più prolisso, ma sappiate che anche le istruzioni del basic o del C inseriscono nel programma le stesse istruzioni assembler, magari molte di più perché devono tener conto che non sanno in anticipo la lunghezza della stringa, che chi scrive in assembler sa già in partenza. Alla prossima lezione.