No es realmente el lenguaje ensamblador sino el lenguaje subyacente de la máquina que impide estas operaciones.
Mientras que el ensamblaje se compone de palabras fáciles de leer o mnemotécnicas, en realidad representan bastante directamente los 1s y 0s del código de máquina. En las CPU x86, cada instrucción se compone típicamente de una secuencia de bytes con bytes individuales o incluso bits dentro de los bytes que tienen significado. Ciertos bits representan la instrucción, otros representan el addressing mode. En los modos de direccionamiento de registro tales como los ejemplos, algunos bits representan los registros específicos que se utilizarán como fuente y destino de la instrucción mov
.
Ahora la familia de procesadores x86 se remonta a la década de 1970 cuando la arquitectura de la CPU era más simple. En aquellos días, el concepto de era de vital importancia: ax
es el acumulador x86 de 16 bits. Todos los cálculos se construyeron o "acumularon" en este registro, por lo que estaban disponibles para todas las instrucciones. Otros registros de propósito general tenían un rango de uso más restringido.
Dado que las instrucciones se basaron en bytes, usted quería que hubiera pocos bytes para representar una instrucción lo más posible para mantener la descodificación de instrucciones rápidamente. Para mantener tantas instrucciones como sea posible, el uso del acumulador se hace central.
En las CPU más modernas, como Motorola 680x0, los registros de propósito más general tienen más habilidades que anteriormente eran el dominio del acumulador. En las CPU RISC, todos los registros son tan flexibles como los acumuladores. He escuchado que en el modo de 64 bits, el conjunto de instrucciones actual x86/amd64 ahora es mucho menos restringido.
Cuando. primero lee tu respuesta no lo hice Te creo, pero en la documentación de NASM, sin dudas, no hay instrucciones de mov reg_dseg, reg_cseg. – samoz
Esta no es la razón, es el resultado. –
¿Qué? No entiendo lo que quieres decir con Neil. – samoz