Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Maquina 110010001111
Lenguaje de Bajo Nivel
Ensamblador es usado para traducir sentencias del lenguaje ensamblador
al código de maquina del computador destino.
Refleja directamente la arquitectura y las instrucciones en lenguaje de
maquina de la CPU y pueden ser muy diferentes de una arquitectura de
CPU a otra.
Un registro es un conjunto de campos que contienen los datos que
pertenecen a una misma repetición identidad.
Por ejemplo AX, BX, CX y DX son registros que poseen 16 Bits, a su vez
cada registro puede ser dividido en 2 registros de 8 bits
Registros de Propósito General
IP Instruction Pointer
Registros
El registro AX se usa para almacenar resultados, lectura o escritura
desde o hacia los puertos.
El BX sirve como apuntador base o índice.
El CX se utiliza en operaciones de iteración, como un contador que
automáticamente se incrementa o decrementa de acuerdo con el tipo
de instrucción usada.
El DX se usa como puente para el acceso de datos.
El DS es un registro de segmento cuya función es actuar como policía
donde se encuentran los datos. Cualquier dato, ya sea una variable
inicializada o no, debe estar dentro de este segmento.
El registro ES tiene el propósito general de permitir operaciones sobre
cadenas, pero también puede ser una extensión del DS.
El SS tiene la tarea exclusiva de manejar la posición de memoria donde
se encuentra la pila (stack).
Es aquí donde se encuentra el código ejecutable de cada programa, el
cual está directamente ligado a los diferentes modelos de memoria.
Registros
Significado de cada bit del registro F (banderas):
Overflow NV = no hay desbordamiento
OV = Sí lo hay
Direction UP = hacia adelante
DN = hacia atrás
Interrupts DI = desactivadas
EI = activadas
Sign PL = positivo
NG = negativo
Zero NZ = no es cero
ZR = sí lo es
Auxiliary Carry NA = no hay acarreo auxiliar
AC = hay acarreo auxiliar
Parity PO = paridad non
PE = paridad par
Carry NC = no hay acarreo
CY = sí lo hay
Mnemónicos
Un código mnemotécnico (o código nemotécnico), es un sistema sencillo
utilizado para recordar una secuencia de datos, nombres, números, y en
general para recordar listas de ítems que no pueden recordarse
fácilmente.
Dentro de los principales mnemónico tenemos:
MOV (transferencia)
LEA (carga dirección efectiva)
POP (extraer de la pila)
PUSH (introduce en la pila)
CALL (llamada a subrutina)
JMP (salto)
RET / RETF (retorno de subrutina)
INT (interrupción)
ADD (suma)
SUB (resta)
MUL (multiplicación)
DIV (división)
Programa Ejemplo
.mode small
.stack
.data
inmensaje DB ‘Lenguaje Ensamblador.$'
.code
.programa:
mov ax, @data
mov ds, ax
mov dx, offset inmensaje
Ejemplo del programa clásico Lenguaje
mov ah, 9 Ensamblador escrito para la arquitectura de
int 21h procesador (bajo el sistema operativo DOS) en
int 20h modo texto (por defecto).
.end programa
PIC 16F877
Los microcontroladores poseen una memoria interna que almacena
dos tipos de datos; las instrucciones, que corresponden al programa
que se ejecuta, y los registros, es decir, los datos que el usuario maneja,
así como registros especiales para el control de las diferentes funciones
del microcontrolador.
PIC 16F877
Los microcontroladores se programan en Assembler y cada
microcontrolador varía su conjunto de instrucciones de
acuerdo a su fabricante y modelo.
De acuerdo al número de instrucciones que el
microcontrolador maneja se le denomina de arquitectura RISC
(reducido) o CISC (complejo).
RISC (Computadores de Juego de Instrucciones
Reducido): En estos procesadores el repertorio de
instrucciones máquina es muy reducido y las instrucciones son
simples y, generalmente, se ejecutan en un ciclo.
CISC (Computadores de Juego de Instrucciones
Complejo): Disponen de más de 80 instrucciones máquina en
su repertorio, algunas de las cuales son muy sofisticadas y
potentes, requiriendo muchos ciclos para su ejecución.
Lenguaje Ensamblador
Código Fuente
Está compuesto por una sucesión de líneas de texto.
Cada línea puede estructurarse en hasta cuatro campos o columnas
separados por uno o más espacios o tabulaciones entre sí.
Campo de etiquetas. Expresiones alfanuméricas escogidas por el
usuario para identificar una determinada línea. Todas las etiquetas tienen
asignado el valor de la posición de memoria en la que se encuentra el
código al que acompañan.
Campo de código. Corresponde al nemónico de una instrucción, de
una directiva o de una llamada a macro.
Campo de operandos y datos. Contiene los operandos que precisa
el nemónico utilizado. Según el código, puede haber dos, uno o ningún
operando.
Campo de comentarios. Dentro de una línea, todo lo que se
encuentre a continuación de un punto y coma (;) será ignorado por el
programa ensamblador y considerado como comentario.
Campo de Código
Puede corresponder ese código a:
Instrucciones: son aquellos nemónicos que son convertidos por el
ensamblador en código máquina que puede ejecutar el núcleo del
microcontrolador. En la gama media (PIC16xxx) cada nemónico se
convierte en una palabra en la memoria de programa
Directivas. Pseudoinstrucciones que controlan el proceso de
ensamblado del programa, pero no son parte del código. Son
indicaciones al programa ensamblador de cómo tiene que generar el
código máquina
Macros: Secuencia de nemónicos que pueden insertarse en el código
fuente del ensamblador de una manera abreviada mediante una simple
llamada.
Ejemplo de código fuente
;Fichero CUENTA.ASM
;Programa de Prueba para la placa PICDEM-2 plus
;Por el Puerto B se saca en binario, el numero de veces
;que se pulsó la tecla que está conectada a la entrada RA4
;si pulsada a cero y si libre a 1
Campo de Operandos y Datos
El ensamblador MPASM (distribuido por Microchip) soporta los sistemas de
numeración decimal, hexadecimal, octal, binario y ASCII.
Los nemónicos que tengan una constante como operando deberán incluirla
respetando la sintaxis que se indica a continuación.
Aprendiendo a Programar
Pasos a dar para poder generar código fuente:
1. Juego de Instrucciones
2. Directivas y Macros
3. Organización de la Memoria interna:
Programa
Datos
El juego de instrucciones
Es un juego reducido de 35 instrucciones muy simples. Procesador RISC
• La mayoría de las instrucciones se ejecuta en 4 ciclos de reloj; los saltos y
llamadas a subprogramas se ejecutan en 8 ciclos
• Todas las instrucciones tienen la misma longitud en la gama media: 14 bits.
• Por lo tanto el cálculo del tiempo de ejecución y de lo que ocupa un programa
resulta simple
• Las instrucciones se pueden clasificar atendiendo a dos criterios:
Formato y Funcionalidad
El juego de instrucciones: SEGÚN SU FORMATO