Mostrando entradas con la etiqueta Lenguaje Assembler. Mostrar todas las entradas

Instrucciones de Comparación

martes, 21 de abril de 2015
Posted by Andrés Cuaycal

INSTRUCCIONES DE COMPARACIÓN


Los ejemplos de aplicación de estas instrucciones se verán mas adelante realizando programas.
Todas las instrucciones se encuentran en el set de instrucciones.

>> Instrucción CP, Compare

Esta instrucción permite la comparación entre el contenido de dos registros Rd y Rr. Como resultado de la ejecución de la instrucción ninguno de los registros cambia. Los saltos condicionales pueden ser usados luego de la ejecución de esta instrucción.

Operación:
Rd - Rr

Sintaxis:                                Operandos
CP  Rd,Rr                              0 ≤ d ≤ 31, 0 ≤ r ≤ 31

>> Instrucción CPC, Compare with Carry

Esta instrucción permite la comparación entre el contenido de dos registros Rd y Rr y también toma en cuenta el carry previo. Como resultado de la ejecución de la instrucción de la ejecución de la instrucción ninguno de los registros cambia. Los saltos condicionales pueden ser usados luego de la ejecución de esta instrucción.

Operación:
Rd - Rr - C

Sintaxis:                                Operandos
CPC  Rd,Rr                            0 ≤ d ≤ 31, 0 ≤ r ≤ 31

>> Instrucción CPI, Compare with Immediate

Esta instrucción permite la comparación entre el contenido del registro Rd y una constante. El contenido del registro no cambia. Los saltos condicionales pueden ser usados luego de la ejecución de esta instrucción.

Operación:
Rd - K

Sintaxis:                                Operandos
CPI  Rd,K                            16 ≤ d ≤ 31, 0 ≤ K ≤ 255

>> Instrucción CPSE, Compare Skip if Equal

Esta instrucción permite la comparación entre el contenido de dos registros Rd y Rr, y salta a la siguiente instrucción si Rd = Rr.

Operación:
Si Rr=Rd entonces salta a siguiente instrucción

Sintaxis:                                Operandos
CPI  Rd,K                            16 ≤ d ≤ 31, 0 ≤ K ≤ 255

Instrucciones de Rotación y Desplazamiento

viernes, 17 de abril de 2015
Posted by Andrés Cuaycal

INSTRUCCIONES DE ROTACIÓN Y DESPLAZAMIENTO


Los ejemplos de aplicación de estas instrucciones se verán mas adelante realizando programas de operaciones matemáticas.

Todas las instrucciones se encuentran en el set de instrucciones.

>> Instrucción LSL, Logical Shift Left

Esta instrucción desplaza todos los bits de Rd un lugar a la izquierda. El bit 0 es borrado y el bit 7 es cargado en la bandera de carry del registro SREG. Esta operación es equivalente a multiplicar por 2 valores con signo y sin signo.

Operación:
C
b7

b0
0

Sintaxis:                                Operandos
LSL  Rd                                 0 ≤ d ≤ 31

>> Instrucción LSR, Logical Shift Right

Esta instrucción desplaza todos los bits de Rd un lugar a la derecha. El bit 7 es borrado y el bit 0 es cargado en la bandera de carry del registro SREG. Esta operación es equivalente a dividir para 2 valores sin signo.

Operación:
0
b7

b0
C

Sintaxis:                                Operandos
LSR  Rd                                 0 ≤ d ≤ 31

>> Instrucción ROL, Rotate Left trough Carry

Esta instrucción desplaza todos los bits de Rd un lugar a la izquierda. La bandera del carry en SREG pasa al bit 0 de Rd. El bit 7 desplazado a la bandera de carry del registro SREG. Esta operación combinada con LSL es equivalente a multiplicar por 2 valores multi-byte con signo y sin signo.

Operación:
C
b7

b0
C

Sintaxis:                                Operandos
ROL  Rd                                 0 ≤ d ≤ 31

>> Instrucción ROR, Rotate Right trough Carry

Esta instrucción desplaza todos los bits de Rd un lugar a la derecha. La bandera del carry en SREG pasa al bit 7 de Rd. El bit 0 desplazado a la bandera de carry del registro SREG. Esta operación combinada con LSR o ASR es equivalente a dividir pora 2 valores multi-byte sin signo y con signo respectivamente.

Operación:
C
b7

b0
C

Sintaxis:                                Operandos
ROR  Rd                                0 ≤ d ≤ 31

>> Instrucción ASR, Arithmetic Shift Right

Esta instrucción desplaza todos los bits de Rd un lugar a la derecha. El bit 7 se mantiene constante y el bit 0 es cargado en la bandera de carry del registro SREG. Esta operación es equivalente a dividir para 2 valores con signo.

Operación:
b7

b0
C

Sintaxis:                                Operandos
ASR  Rd                                 0 ≤ d ≤ 31

>> Instrucción SWAP, Swap Nibbles

Esta instrucción intercambia nibbles alto y bajo de un registro.

Operación:
b7
b6
b5
b4
b3
b2
b1
b0
Antes
b0
b1
b2
b3
b7
b6
b5
b4
Después

Sintaxis:                                Operandos
SWAP  Rd                              0 ≤ d ≤ 31

Instrucciones Lógicas

Posted by Andrés Cuaycal

INSTRUCCIONES LÓGICAS

Todas las instrucciones se encuentran en el set de instrucciones.

>> Instrucción COM, One's Complement

Esta instrucción permite realizar la operación de complemento a uno del contenido del registro Rd.

Operación:
Rd ← $FF-Rd

Sintaxis:                                Operandos
COM  Rd                                0 ≤ d ≤ 31

Ejemplos:
ldi     r17,0b00001111   ; cargo en R17 el valor de 0b00001111
com     r5              ; R5 = 0b11110000

>> Instrucción NEG, Two's Complement

Esta instrucción permite realizar la operación de complemento a dos del contenido del registro Rd.

Operación:
Rd ← $00-Rd

Sintaxis:                                Operandos
NEG  Rd                                0 ≤ d ≤ 31

Ejemplos:
ldi     r17,0b00001111   ; cargo en R17 el valor de 0b00001111
neg     r5              ; R5 = 0b11110001

>> Instrucción AND, Logical AND

Realiza la operación lógica AND entre el contenido de dos registros Rd y Rr y el resultado queda en el registro de destino Rd.

Operación:
Rd ← Rd·Rr

Sintaxis:                                Operandos
AND  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r16,0b00001111  ; cargo en R16 0b00001111
ldi     r17,0b00000011  ; cargo en R17 0b00000011
and     r16,r17         ; R16 termina con 0b00000011, R17 no cambia

>> Instrucción ANDI, Logical AND with Immediate

Realiza la operación lógica AND entre el contenido del registro Rd y una constante. El resultado queda en el registro de destino Rd.

Operación:
Rd ← Rd·K

Sintaxis:                                Operandos
ANDI  Rd,K                           16 ≤ d ≤ 31, 0 ≤ K ≤ 255

Ejemplos:
ldi     r16,0b00001111  ; cargo en R16 0b00001111
andi    r16,0b11111111  ; R16 termina con 0b00000000

>> Instrucción OR, Logical OR

Realiza la operación lógica OR entre el contenido de dos registros Rd y Rr y el resultado queda en el registro de destino Rd.

Operación:
Rd ← Rd v Rr

Sintaxis:                                Operandos
OR  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r16,0b00001111  ; cargo en R16 0b00001111
ldi     r17,0b11000011  ; cargo en R17 0b00000011
or      r16,r17         ; R16 termina con 0b11001111, R17 no cambia

>> Instrucción ORI, Logical OR with Immediate

Realiza la operación lógica ORI entre el contenido del registro Rd y una constante. El resultado queda en el registro de destino Rd.

Operación:
Rd ← Rd·K

Sintaxis:                                Operandos
ORI  Rd,K                           16 ≤ d ≤ 31, 0 ≤ K ≤ 255

Ejemplos:
ldi     r16,0b00001111  ; cargo en R16 0b00001111
ori     r16,0b11111111  ; R16 termina con 0b11111111

>> Instrucción EOR, Exclusive OR

Realiza la operación lógica EOR entre el contenido de dos registros Rd y Rr y el resultado queda en el registro de destino Rd.

Operación:
Rd ← Rd (+) Rr

Sintaxis:                                Operandos
EOR  Rd,Rr                           0 ≤ d ≤ 31, 0 ≤ r ≤ 31

Ejemplos:
ldi     r16,0b00001111  ; cargo en R16 0b00000011
ldi     r17,0b11000011  ; cargo en R17 0b11000011
eor     r16,r17         ; R16 termina con 0b11000000, R17 no cambia

Buscar en el Blog

Contador de Visitas

Traducir Blog

Etiquetas

Post Populares

- Copyright © Tutoriales Avr -