sábado, 10 de agosto de 2019

OPCODE y OPERANDOS

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,08

Donde:
Equivalencias del valor de los Registros
 En la  Dirección de memoria FLASH será lugar para almacenar OPCODE y OPERANDO, donde E es el OPCODE y 08 es el OPERANDO.
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.

1 comentario:

Uso del firmware original de la grabadora USBasp AVR en MX-USBASP (clon chino)

Te vendieron un USBisp pensado que es un USBasp?? Hace 2 meses compré un "USBasp" fui a probarlo y no funcionó....pensé me estafar...