Todas las instrucciones en ensamblador tienen una parte obligatoria, y esto se llama el mnemótecnico, que corresponde al OPCODE en código máquina; por ejemplo el mnemótecnico de nop es nop, pero algunas instrucciones tienen además OPERANDOS. Por ejemplo "LDI(Load inmediate)" tiene dos, el primer es un registro, separado de una coma a continuación viene el siguiente, que es un dato. En este caso los OPERANDOS son obligatorios, tal como se muestra a continuación: "LDI R16,0XFF".
Ejemplo-LDI R16,HIGH(RAMEND)
Como se mencionó vamos a usar la instrucción LDI como ejemplo para ver como se representa la instrucción LDI R16,HIGH(RAMEND) en OPCODE y OPERANDOS.
La instrucción LDI Rd,K es su forma
general se define de la siguiente manera:
Estructura de la instrucción LDI. |
Definimos los valores de Rd,K, para eso debemos recordar que la última dirección de memoria RAM es 085F,como se aprecia en la imagen:
Memoria SRAM |
La dirección 085F está formado por 2Bytes, el Bytes alto es
08 y el Byte bajo es 5F. Entonces
HIGH(RAMEND)=08, nuestra instrucción sería:
LDI R16,08Donde:
Equivalencias del valor de los Registros |
OPCODE y OPERANDOS DE LDI |
Es así que nuestra instrucción LDI,HIGH(RAMEND) estará representada por la palabra E008 de 2 Bytes ó 16 bits.
OPCODE y OPERANDOS DE LDI R16,HIGH(RAMEND) |
la lista de todas las representaciones de las instrucciones en OPCODE y OPERANDOS de todas las instrucciones se encuentran aquí, pero ya sabemos como una instrucción llega a su representación de OPCODE y OPERANDOS, lo hemos demostrado en esta entrada.
Donde puedo encontrar toda la lista de opcodes?
ResponderEliminar