# Conjunt d'instruccions x86

El conjunt d'instruccions x86 fa referència al conjunt d'instruccions que admeten els microprocessadors compatibles amb x86. Les instruccions solen formar part d'un programa executable, sovint emmagatzemat com a fitxer d'ordinador i executat al processador.
El conjunt d'instruccions x86 s'ha ampliat diverses vegades, introduint registres i tipus de dades més amplis, així com noves funcionalitats.

## Instruccions enteres x86

A continuació es mostra el conjunt complet d'instruccions 8086/8088 d'Intel (81 instruccions en total). La majoria, si no totes, d'aquestes instruccions estan disponibles en mode de 32 bits; només operen en registres de 32 bits (eax, ebx, etc.) i valors en lloc dels seus homòlegs de 16 bits (ax, bx, etc.). El conjunt d'instruccions actualitzat també s'agrupa segons l'arquitectura (i386, i486, i686) i de manera més general es coneix com (32 bits) x86 i (64 bits) x86-64 (també conegut com AMD64).

## Instruccions originals 8086/8088

Aquest és el conjunt d'instruccions complet del 8086/8088, però la majoria d'aquestes instruccions, si no totes, estan disponibles en la manera de 32 bits, elles simplement operarien en registres i valors de 32 bits (EAX, EBX, etc) en comptes de les seves contraparts de 16 bits (AX, BX, etc). Veure llenguatge assemblador x86 per a un tutorial ràpid per a aquesta família de processadors. El conjunt d'instruccions actualitzat també està agrupat d'acord amb l'arquitectura (i386, i486, i686) i més generalment està referit com x86_32 i x86_64 (també conegut com AMD64).

## Representació de nombres enters

Els números en els registres poden representar-se de dues maneres. La primera és u$^n$a representació d'enter positiu sense signe, el rang del qual serà des de 0 fins a 2n, on n és 8, 16, 32 o 64 bits depenent de la grandària del registre. La segona és una representació d'enter amb signe (complement a dos, amb un rang entre -2n-1 fins a 2n-1 - 1, on n és, igual que en l'anterior, l'ample de bits del registre, (8, 16, 32 o 64 bits).
Rang dels números d'acord amb la grandària dels registres i la seva representació com a enter amb signe i sense signe:
| Grandària del registre | Enters sense signe | Enters amb signe(complement a dos) |
| 8 bits | 0 a 255 | -128 a 127 |
| 16 bits | 0 a 65.535 | -32.768 a 32.767 |
| 32 bits | 0 a 4.294.967.295 | -2.147.483.648 a 2.147.483.647 |
| 64 bits | 0 a 18.446.744.073.709.551.615 | -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 |

## Instruccions x86

A baix una taula amb les instruccions x86. La columna CPU indica el primer CPU que va tenir la instrucció, començant amb l'Intel 8086 i l'Intel 8088, que van ser els primers CPU de la sèrie x86:
Moviment de dades :
| CPU | Instrucció | Opcode | Significat | Traducció | Notes |
| 8086/88 | MOV | | Move | Mou | En realitat és una còpia, ja que en la destinació es copia el que està en l'origen sense alterar aquest últim |
| 80386 | MOVZX | | Move with zero-extend | Mou amb extensió de zero | |
| 80386 | MOVSX | | Move with sign-extend | Mou amb extensió de signe | |
| 8086/88 | XCHG | | Exchange data | Intercanvia dades | |
| 8086/88 | XLAT | 11010111 | Table look-up translation | Translació de cerca en taula | |
* Operacions de pila
* Entrada i sortida per ports
* Conversions
* Operacions aritmètiques i lògiques
* Operacions amb bits
* Operacions amb els flags (semàfors)
* Operacions de cadenes
* Control del flux del programa
* Operacions de sincronització entre processadors

## Referències

* ↑ «Re: Intel Processor Identification and the CPUID Instruction». [Consulta: 21 abril 2013].
* ↑ «Guide to x86 Assembly» (en anglès). https://www.cs.virginia.edu.+[Consulta: 31 agost 2023].
* ↑ «X86 Opcode and Instruction Reference» (en anglès). http://ref.x86asm.ne.+[Consulta: 31 agost 2023].
* ↑ «x86 and amd64 instruction reference» (en anglès). https://www.felixcloutier.com.+[Consulta: 31 agost 2023].