Programació en mpasm del PIC 16F690

Referència Trucs Perifèrics   Recursos CITCEA
Tutorial Exemples Projectes   Inici

Codificació de valors enters en binari

El programador pot decidir si guarda els valors codificats en un byte (vuit bits) o més d'un. En assemblador és el propi usuari el que ha de gestionar les operacions quan els valors són de diversos bytes. A l'apartat de les operacions matemàtiques s'explica com sumar i restar valors positius de més d'un byte.

Per guardar els valors negatius, el més habitual és el format de complement a 2 que és el que explicarem a continuació.

El complement a 2 d'un byte s'obté complementant tots els bits i sumant 1 al resultat. Vegem un exemple amb el nombre 39 decimal:

                Decimal                 0010 0111                 39                
                Complementem                 1101 1000                                
Sumem 1 1101 1001 -39

Fixem-nos que el valor que correspon al -39 també correspon al 217 i, per tant, sempre hem de saber si la nostra variable està guardant valors amb signe o sense signe.

Un fet important d'aquesta codificació és que els passos per passar d'un valor negatiu a un positiu són els mateixos:

                Decimal                 1101 1001                 -39                
                Complementem                 0010 0110                                
Sumem 1 0010 0111 39

Cal destacar que tots els números negatius tindran sempre el bit més significatiu (en aquest cas el 7) a 1 i tots els positius el tindran a zero.

La suma de -39 i 39 donarà zero, com era d'esperar:

                -39                 1101 1001                
+ 39 0010 0111
0 1 0000 0000

El bit que hem marcat en verd ja no cap en els vuit bits de la variable i, en principi, es perd. A la pràctica, quedarà guardat en el bit d'estat C.

Els valors que podem guardar en un byte són:

Sense signe Amb signe
Binari Decimal Binari Decimal
Valor zero 0000 0000 0 0000 0000 0
Valor positiu de menys valor absolut 0000 0001 1 0000 0001 1
Valor positiu de més valor absolut 1111 1111 255 0111 1111 127
Valor negatiu de menys valor absolut 1111 1111 -1
Valor negatiu de més valor absolut 1000 0000 -128

Els límits segons el número de bytes són:

Sense signe Amb signe
Bytes Bits Mínim Màxim Mínim Màxim
1 8 0 255 -128 127
2 16 0 65535 -32768 32767
3 24 0 16 777 215 -8 388 608 8 388 607
4 32 0 4 294 967 295 -2 147 483 648 2 147 483 647

 

 

Llicència de Creative Commons
Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.