Microcontroladores 8051

4. Tipos de instrucciones en los microcontroladores 8051

El conjunto de instrucciones de los microcontroladores 8051 se puede dividir en los siguientes grupos:

  • Instrucciones de transferencia de datos.
  • Instrucciones aritméticas.
  • Instrucciones lógicas (booleanas).
  • Instrucciones de control del programa (saltos).
  • Instrucciones de manipulación de bits.

Ver guía de referencia de los microcontroladores 8051.

4.1. Instrucciones de transferencia de datos

Instrucciones de transferencia de datos microcontroladores 8051.

Realizan movimiento de datos entre los registros, memoria y puertos.

MOV destino, procedencia. Movimiento de datos en la memoria RAM interna. Este tipo de instrucciones admiten prácticamente todos los direccionamientos, directo, indirecto, por registro e inmediato.

MOV A,P0 ; Mueve el contenido del puerto 0 al acumulador
MOV R1,A ; Mueve el contenido del Acumulador al registro 1

MOVX. Movimiento de datos en la memoria RAM externa (XRAM). Este tipo de movimiento solo admite el direccionamiento indirecto, de 8bits mediante registro R0 o R1 y de 16 bits por mediación del registro DPTR.

MOV DPTR,#2000H ; Mover al registro apuntador DPTR el dato inmediato 2000H (dirección)
MOVX A,@DPTR    ; Mover el contenido de la memoria que apunta el DPTR (2000H) al Acumulador

MOVC. Permite el movimiento de la ROM a Acumulador. Mediante esta instrucción se puede realizar la manipulación o movimiento de tablas desde la memoria de programa.

XCH. Intercambia el contenido del Acumulador y la memoria RAM interna.

XCHD. Intercambia el contenido de los 4 primeros bits del Acumulador con la memoria RAM interna.

PUSH y POP. Para la transferencia de datos a la pila o Stack.

4.2. Instrucciones aritméticas

Instrucciones aritméticas microcontroladores 8051.

Las instrucciones aritméticas de estos microcontroladores son muy limitadas, permiten sumar, restar, incrementar, decrementar y excepcionalmente se ha integrado el producto y la división de números enteros.

ADD A, byte. Suma de 8 bits. Suma el contenido del Acumulador con un Byte, con el direccionamiento indicado, el resultado queda en el acumulador.

MOV A,#3  ; A<-3 Mueve al Acumulador el dato inmediato 3
MOV R0,#2 ; A<-2 Mueve al registro 0 el dato inmediato 2
ADD A,R0 ; A<-(A)+(R0) Se suma el Acumulador con el Registro 0, el resultado queda en el Acumulador

ADDC A, byte. Suma con Carry. La suma con Acarreo permite realizar sumas de números enteros superiores a 8 bits.

Ejemplo: Suma de dos variables enteras de 16 bits que se encuentran el las posiciones de memoria 30H y 32H. El resultado ha de quedar en una tercera variable en la posición 34.

MOV A,30H  ; A<-(30H) Mueve el contenido de 30H al Acumulador, parte baja de Variable 1
ADD A,32H  ; A<-(A)+(32H) Suma el Acumulador con la posición 32H, parte baja de la Variable 2
MOV 34H,A ; 34H<-(A) Mueve el Acumulador a la posición 34H, el resultado a parte baja de la Variable 3
MOV A,31H  ; A<-(31H) Mueve el contenido de 31H al Acumulador, parte alta de Variable 1
ADDC A,33H ; A<-(A)+(32H) Suma el Acumulador y el Carry con la posición 33H, parte alta de la Variable 2
MOV 35H,A ; 35H<-(A) Mueve el Acumulador a la posición 35H, el resultado a parte alta de la Variable 3

La siguiente figura muestra un esquema del contenido de la memoria para realizar la suma de dos números enteros de 16 bits. Se supone que los datos de la suma (35FEH+00003H) se han establecido previamente y no son objeto del estudio en este ejemplo.

Suma de números enteros de 16 bits en Ensamblador
 
copyright © 2007-2010  alciro.org  All rights reserved.         
Share |