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
Tag :
Lenguaje Assembler
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
Tag :
Lenguaje Assembler
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
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