trucchi-com

tutti i trucchi che nessuno sà

 

AREA PERSONALE

 

TAG

 

ARCHIVIO MESSAGGI

 
 << Luglio 2024 >> 
 
LuMaMeGiVeSaDo
 
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        
 
 

FACEBOOK

 
 

CONTATTA L'AUTORE

Nickname: romoletto640
Se copi, violi le regole della Community Sesso: M
Età: 59
Prov: EE
 

 

« assembler per principiantiassembler per principianti »

assembler per principianti

Post n°14 pubblicato il 02 Giugno 2007 da romoletto640
 

Cap. 5 Algebra booleana

 

Abbiamo visto che il processore conosce solo il sistema binario (0 e 1) per cui bisogna ragionare con questo sistema per riuscire a capire il risultato di tutto quello che chiediamo al nostro processore (d'ora in poi chiamerò il processore CPU cioè Central Processin Unit, unità centrale di processo).

Il sistema binario possiede una sua logica chiamata algebra booleana, che è simile alla nostra algebra, ma che agisce su solo due cifre invece che le nostre 10 (0-9).

L'addizione si esegue in modo uguale, per esempio:

1011b +

0110b =

10001b

ovvero 1+1=0 con riporto di 1 non esistendo il 2.

Stesso dicasi per le altre operazioni.

Ma l'algebra booleana possiede altre funzioni più interessanti e non disponibili con altri sistemi.

Per esempio la funzione AND che dati due numeri esegue il confronto bit per bit del primo numero col secondo. Per esempio:

1001b AND

1100b =

1000b

Ovvero solo se entrambi i bit sono a 1 il risultato è 1, negli altri casi è 0. A che serve?. Calma ci arriviamo subito.

Supponete di avere ottenuto il risultato di un calcolo e che questo sia 10110110b, ora non mi serve il risultato complessivo, ma solo i primi 4 bit, bene basta fare AND 00001111b ed avrò estratto solo i primi 4 bit.

Un'altra funzione interessante è l'OR che funziona come AND, ma dà risultato 1 se almeno uno dei due bit è a 1.

Un OR più drastico è lo XOR che richiede che uno ed uno solo dei due bit sia ad 1 per dare 1 altrimenti ritorna 0.

Questo è quasi tutto quello che c'è da sapere sull'algebra booleana, per quello che ci riguarda. Vogliamo, ora, fare una lista delle istruzioni disponibili? Lo temevo che avreste detto di si.

La lista non sarà completa, ma comprenderà solo quelle istruzioni di uso più frequente e meno difficile, per altre informazioni vi consiglio di procurarvi un bel tomo della Intel sui suoi processori.

Prima devo spiegare la funzione di un registro che ho nominato precedentemente, e voi vi state ancora chiedendo a che serve. Giusto? Questo è il registro F, che è l'iniziale di FLAG, in inglese bandiera, ebbene il nome è proprio appropriato perché il registro F si comporta come una bandiera che può essere alzata o abbassata a seconda delle condizioni, anzi 16 bandiere perché il registro F è a 16 bit, ed ogni bit rappresenta una situazione.

Si va bene, ma quale situazione? Per rispondere farò ora un piccolo esempio.

Prendiamo il seguente pezzo di codice:

MOV CX,2 'carica 2 nel registro CX

DEC CX 'decrementa il registro CX di 1, CX=CX-1

DEC CX ' decrementa di nuovo il registro

Cos'è successo dopo il secondo decremento? Che CX è diventato zero, la CPU giustamente se ne accorge e pone a 1 il bit corrispondente in F che si chiama bit di zero, quindi se io volessi controllare se un'operazione ha dato zero come risultato mi basta controllare questo flag, esiste anche il flag di carry che segnala se in una sottrazione c'è stato prestito, un altro chiamato flag di overflow che segnala se l'operazione ha ecceduto la capacità del registro, il flag di segno che segnala se il sedicesimo bit è ad 1, poiché in alcuni casi i registri vengono considerati a 15 bit e negativi o positivi, e quindi il sedicesimo bit è zero se positivo e 1 se negativo.

Esiste anche il flag di direzione che indica se i registri SI e DI devono incrementarsi o decrementarsi in seguito ad alcune istruzioni di lettura scrittura in memoria.

La URL per il Trackback di questo messaggio è:
https://blog.libero.it/trucchicom/trackback.php?msg=2789019

I blog che hanno inviato un Trackback a questo messaggio:
Nessun trackback

 
Commenti al Post:
Nessun commento
 
 
 

INFO


Un blog di: romoletto640
Data di creazione: 29/05/2007
 

CERCA IN QUESTO BLOG

  Trova
 

ULTIME VISITE AL BLOG

precious445benny1984fredom010pantera_blanca2NevegGgiallAea.joobleRjegu73developer68OLIO5wallygator54istrice82hiram9mrk2005rospetta000erconte5
 

CHI PUò SCRIVERE SUL BLOG

Solo l'autore può pubblicare messaggi in questo Blog e tutti gli utenti registrati possono pubblicare commenti.
 
RSS (Really simple syndication) Feed Atom
 
 

I MIEI LINK PREFERITI

 

© Italiaonline S.p.A. 2024Direzione e coordinamento di Libero Acquisition S.á r.l.P. IVA 03970540963