fascículo 3 - dominios, hosting, multidominio, ilimitado, …€¦ ·  · 2013-08-29es necesario...

34
1 Semestre 6 Fascículo 3 Procesadores

Upload: hacong

Post on 28-Apr-2018

217 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

1

Semestre 6

Fascículo

3

Procesadores

Page 2: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

Procesadores Semestre 6

Procesadores

Page 3: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

Procesadores

Semestre 6 Procesadores

Tabla de contenido Página

Introducción 1

Conceptos previos 2

Logros 2

Mapa conceptual Fascículo 3 3

Lenguaje Ensamblador del microprocesador 3

Instrucciones para el Ensamble del Programa 3

Simulación del programa 5

Etiquetas del lenguaje Assembler 7

Directivas 9

Banderas 12

Operandos y direcciones 13

Stack 15

Formato de las instrucciones 17

Saltos Condicionales e Incondicionales 18

Convenciones en la escritura del código fuente 21

Actividad de trabajo colaborativo 25

Resumen 26

Bibliografía recomendada 27

Nexo 28

Seguimiento al autoaprendizaje 29

Créditos: 1

Tipo de asignatura: Teórico – Práctica

Page 4: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

Procesadores Semestre 6

Procesadores

Copyright©2008 FUNDICIÓN UNIVERSITARIA SAN MARTÍN

Facultad de Universidad Abierta y a Distancia,

“Educación a Través de Escenarios Múltiples”

Bogotá, D.C.

Prohibida la reproducción total o parcial sin autorización

por escrito del Presidente de la Fundación.

La actualización de este fascículo estuvo a cargo de

ALEJANDRA CASTILLO

Docente tutor – Programa de Ingeniería de Sistemas a Distancia.

Sede Bogotá, D.C.

Corrección de estilo

ADRIANA RODRÍGUEZ VALENCIA.

Diseño gráfico y diagramación a cargo de

SANTIAGO BECERRA SÁENZ

ORLANDO DÍAZ CÁRDENAS

Impreso en: GRÁFICAS SAN MARTÍN

Calle 61A No. 14-18 - Tels.: 2350298 - 2359825

Bogotá, D.C., Marzo de 2012

Page 5: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

1

Fascículo No. 3

Semestre 6

Procesadores

Procesadores

Introducción

Los microcomputadores tienen un lenguaje único que es capaz de reco-

nocer y ejecutar las instrucciones. Este lenguaje es llamado "Lenguaje de

Máquina" y pertenece al procesador del microcomputador. El lenguaje de

máquina está compuesto por una serie de instrucciones, las cuales son

reconocidas y ejecutadas por el procesador. Este lenguaje es un conjunto

de números que representan las operaciones realizadas por los compo-

nentes internos del procesador. Entonces las instrucciones se encuentran

directamente ligadas a la estructura física del procesador y no pueden ser

modificadas o cambiadas.

Es necesario comprender la arquitectura interna del procesador así como

sus instrucciones para programar un procesador. Cada procesador tiene

un conjunto de registros internos que puede emplearse de maneras distin-

tas para manipular números binario. Las instrucciones ejecutadas por el

procesador generalmente manipulan los datos almacenados en la memo-

ria y los registros de trabajo.

Las instrucciones de programa de un procesador se guardan como núme-

ros binarios en la memoria y se conocen como códigos de operación (op).

Los códigos de operación son leídos por la CPU y decodificados para de-

terminar cuál es la instrucción que debe ejecutarse. Cada código de ope-

ración se aplica o afecta a otro número, tal como el que está guardado en

el "registro de trabajo" o "Acumulador". El número binario al que se aplica

la instrucción se conoce como operando. El operando puede ser otro re-

gistro o un número binario almacenado en la memoria.

Para facilitar la escritura de programas, cada uno de los tipos principales

de instrucciones tiene asociado un código alfanumérico corto que ayuda al

programador a recordarlos, y estos códigos alfanuméricos se conocen

Page 6: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

2

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

como mnemónicos. Este lenguaje es llamado lenguaje ensamblador y su

uso es muy frecuente debido a la facilidad para recordar las instrucciones

Conceptos previos

Para iniciar el estudio del fascículo 3. Es primordial repasar algunos con-

ceptos sobre la arquitectura de los microprocesadores y Microcontrolado-

res:

1. Los microprocesadores disponen de un registro de estado que contiene

“flags” o banderines que informan del resultado de ciertas operaciones

lógicas y aritméticas. Determine el significado de los siguientes bits:

a. C

b. N

c. Z

d. V

2. En qué consiste un ciclo de Fetch y un ciclo de Execute.

3. ¿Qué son los modos de direccionamiento?. Describa algunos de ellos.

4. ¿Qué funciones tiene un registro de datos?

5. ¿Qué funciones tiene un registro de direcciones?

Al finalizar el estudio del presente fascículo, el estudiante debe estar en capaci-

dad de:

Tendrá la capacidad de realizar programas en el seudocódigo de assembler

y C++

Reconocer la interfaz del lenguaje ensamblador

Realizara manejo de registros y banderas

Diseñara una lógica estructural con diagramas de sintaxis del objetivo a lo-

grar

Conocerá el aplicativo CodeWarrior como compilador

Realizara Debug y seguimiento por banderas a los registros al programa

LogrosLogrosLogros

Page 7: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

3

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Mapa conceptual fascículo 3.

Lenguaje ensamblador del microprocesador Instrucciones para el Ensamble del Programa

En esta fase se escribe o “redactan” las instrucciones del programa. El

programa escrito en un lenguaje de programación (comprensible por el ser

humano, aunque se suelen corresponder con lenguajes formales descritos

por gramáticas independientes del contexto) no es inmediatamente ejecu-

tado en una computadora. La opción más común es compilar el programa,

aunque también puede ser ejecutado mediante un intérprete informático.

El código fuente del programa se debe someter a un proceso de transfor-

mación para convertirse en lenguaje máquina, interpretable por el proce-

sador. A este proceso se le llama compilación. Por lo general, la creación

de un programa ejecutable (un típico .exe para Microsoft Windows) conlle-

va dos pasos.

Page 8: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

4

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

¿Que son las instrucciones?

El set de instrucciones de un microprocesador es el set de entradas bina-

rias que producen acciones definidas durante un ciclo de instrucción. Un

set de instrucciones es para el microprocesador lo mismo que una tabla de

verdad es para una compuerta lógica, un registro de desplazamiento o un

circuito sumador. Por supuesto, las acciones que realiza un microprocesa-

dor con cada instrucción, son más complejas que las que realizan los dis-

positivos y compuertas antes mencionados.

Tipos de Instrucciones

Las instrucciones de un procesador se pueden agrupar en tres tipos: Ins-

trucciones de Transferencia, Instrucciones de Operación e Instrucciones

de Control. A continuación se describirán las características básicas de

cada uno de estos grupos:

Instrucciones de Transferencia

Como su nombre lo indica, este grupo de instrucciones se utiliza para efec-

tuar transferencia de datos entre los registros de la CPU, la memoria y los

puertos de E/S. En la tabla 11.6.2 se indica un ejemplo este tipo de ins-

trucciones.

Comando Operando Comentario

LDA M Carga el registro A con los datos del registro en la posición de memoria M.

Tabla 1

Instrucción LDA

Instrucciones de Operación

Estas instrucciones se emplean para realizar operaciones aritméticas y

lógicas entre los registros del procesador y la memoria. Estas operaciones

incluyen suma, resta, incremento decremento, complemento, comparación

y corrimiento. En la tabla 11.6.3 se muestra un ejemplo de una instrucción

de operación.

Page 9: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

5

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

El lenguaje ensamblador, es

un lenguaje de programación

de bajo nivel para los compu-

tadores, microprocesadores,

microcontroladores, y otros

circuitos integrados progra-

mables. Implementa una

representación simbólica de

los códigos de máquina bina-

rios y otras constantes nece-

sarias para programar una

arquitectura dada de CPU y

constituye la representación

más directa del código

máquina específico para

cada arquitectura legible por

un programador. Esta repre-

sentación es usualmente

definida por el fabricante de

hardware, y está basada en

los mnemónicos que simboli-

zan los pasos de procesa-

miento (las instrucciones), los

registros del procesador, las

posiciones de memoria, y

otras características del len-

guaje. Un lenguaje ensam-

blador es por lo tanto especí-

fico a cierta arquitectura de

computador física (o virtual).

Esto está en contraste con la

mayoría de los lenguajes de

programación de alto nivel,

que, idealmente son porta-

bles.

Mnemónico Operando Comentario

ADD B Suma el registro B con el registro A y el resultado se almacena en el regis-

tro A.

Tabla 2

Instrucción ADD

Instrucciones de Control

el lenguaje Ensamblador y en general en cualquier lenguaje de programa-

ción las instrucciones de control juegan un papel muy importante en el flu-

jo de un programa. Su función consiste en alterar el flujo normal del pro-

grama, según el estado de ciertos registros del sistema que indican alguna

condición después de ejecutar una instrucción. Con este tipo de instruc-

ciones es posible tomar el control del flujo del programa. En la tabla 3 se

indica un ejemplo de una instrucción de control.

Mnemónico Operando Comentario

JZ No existe Pasa por alto la siguiente instrucción en el código del programa si el bit del

sistema Z=1.

Tabla 3 Instrucción JZ

La abreviatura JZ corresponde a la frase en inglés Jump If Zero (Saltar si

Cero) y la función es evaluar el bit del sistema Z del registro de estado. En

caso de estar en 0 se ejecuta normalmente la siguiente instrucción, y en

caso de estar en 1 se salta la siguiente instrucción. Este bit del sistema se

pone en 1 si una operación anterior dió como resultado 0.

Hay mucho más que decir sobre la programación de un procesador que lo

mencionado en esta lección; sin embargo, si él es conveniente estudiar un

poco sobre diagramas de flujo y programación.

Simulación del programa

El primer paso se llama compilación (propiamente dicho) y traduce el

código fuente escrito, en un lenguaje de programación almacenado en un

archivo a código en bajo nivel (normalmente en código objeto no directa-

mente al lenguaje máquina).

Page 10: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

6

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

El segundo paso se llama enlazado (del inglés link o linker) se junta el

código de bajo nivel generado de todos los ficheros que se han mandado

compilar y se añade el código de las funciones que hay en las bibliotecas

del compilador para que el ejecutable pueda comunicarse con el sistema

operativo y traduce el código objeto a código máquina.

Una de las formas para poder llegar a probar nuestro programa sin nece-

sidad de utilizar físicamente un recurso electrónico, es a través de diferen-

tes herramientas tecnológicas ya sean por software o por hardware, para

así determinar si nuestra aplicación funciona correctamente; estas herra-

mientas se hacen llamar simuladores. Un simulador es un software capaz

de reproducir el comportamiento real de un microcontrolador de manera

virtual a partir del código .asm creado. Para ello, se encuentran en el mer-

cado diferentes tipos de simuladores que permiten desarrollar diversos y

complejos diseños para programar microcontroladores.

Un programa utilitario llamado ensamblador es usado para traducir sen-

tencias del lenguaje ensamblador al código de máquina del computador

objetivo. El ensamblador realiza una traducción más o menos isomorfa (un

mapeo de uno a uno) desde las sentencias mnemónicas a las instruccio-

nes y datos de máquina. Esto está en contraste con los lenguajes de alto

nivel, en los cuales una sola declaración generalmente da lugar a muchas

instrucciones de máquina. (Cfr. MOTOROLA, 2012).

Muchos sofisticados ensambladores ofrecen mecanismos adicionales para

facilitar el desarrollo del programa, controlar el proceso de ensamblaje, y la

ayuda de depuración. Particularmente, la mayoría de los ensambladores

modernos incluyen una facilidad de macro (descrita más abajo), y son lla-

mados macro ensambladores.

Page 11: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

7

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Figura 1.

Interfaz de programación Assembler

Etiquetas del lenguaje Assembler

Las instrucciones están divididas en un número de campos, como se

muestra debajo.

Etiquetas Operación Operando Comentarios

caso movf 5,w ;lee puerto A

retlw 4 ;retorna de subrutina

Trio Sleep ; bajo Consumo

Tabla 4 Etiquetas de Lenguaje Assembler

El campo del código de operación es el único que nunca puede estar vac-

ío; éste siempre contiene una instrucción o una directiva del Assembler. El

campo del operando o dirección puede contener una dirección o un dato,

o puede estar en blanco.

El campo del comentario o de etiquetas es opcional. El programador asig-

nará una etiqueta a una línea de instrucción o agregará un comentario

según su conveniencia: normalmente, para hacer más fácil el uso y la lec-

tura; por ejemplo si va a retomar el trabajo dentro de tres semanas

Page 12: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

8

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Delimitadores:

Los campos van separados sólo con espacios y/o tabulaciones.

No agregar nunca otros caracteres (comas, puntos, etc ).

No utilice espacios extra, particularmente después de comas que sepa-

ran operandos. ( Ej: movlw 5,w )

No use caracteres delimitadores (espacios y tabulaciones) en nombres

o etiquetas.

Etiquetas

La etiqueta es el primer campo en una línea en lenguaje assembler y pue-

de no existir. Si una etiqueta está presente, el assembler la define como el

equivalente a la dirección del 1° byte correspondiente a esa instrucción.

Esta etiqueta puede volver a usarse en otro lugar pero como operando de

una instrucción. El assembler reemplazará ésta etiqueta por el valor de

cuando fue creada.

Se usan frecuentemente en las instrucciones de salto.

No puede existir más de una etiqueta en el 1° campo de instrucción.

No pueden usarse como nombres de etiquetas a palabras ya reserva-

das por el assembler ( ORG, EQU, etc. ) o nombres de instrucciones (

movlw, call, nop, etc.)

Ejemplo:

START movlw DATO

:

:

goto START

DATO EQU 05h

La instrucción goto START causa que la dirección de la instrucción con la

etiqueta START (movlw) se cargue en el PC. Por lo tanto ésta instrucción

será luego ejecutada.

Page 13: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

9

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

No se permite el uso de números o caracteres no alfabéticos como 1°

letra de la etiqueta. Como regla práctica: usar siempre letras, y en

mayúscula.

Mnemónicos (códigos de operación):

La tarea principal del Assembler es la traducción de los códigos de opera-

ción en mnemónico en sus equivalentes binarios.

El Assembler realiza ésta tarea usando una tabla como si lo haríamos “

a mano” .

El Assembler debe hacer algo más que traducir los códigos de opera-

ción. También debe determinar cuántos operandos requiere la instruc-

ción y de qué tipo. Esto es un poco complejo; algunas instrucciones

(como clrw) no tienen operandos, otras (como sumas o saltos) tienen

una, mientras que otras (manipulación de bits o skips) requieren dos.

Directivas

Algunas instrucciones del lenguaje Assembler no se traducen directamente

a instrucciones del lenguaje máquina. Estas instrucciones son directivas

para el Assembler; éstas asignan al programa ciertas áreas de memoria,

definen símbolos, designan áreas de RAM para almacenamiento de datos

temporales, colocan tablas o datos constantes en memoria y permiten refe-

rencias a otros programas.

Las directivas se utilizan como comandos escritos en el código fuente para

realizar un control directo o ahorrar tiempo a la hora de ensamblar. El re-

sultado de incorporar directivas se puede ver en el fichero *.LST, después

de ensamblar el programa. Para usar éstas directivas o pseudo-operandos,

el programador las coloca en el campo del código de operación, y, si lo

requiere la directiva, una dirección o dato en el campo de dirección.

Page 14: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

10

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Las directivas más comunes son:

EQU (Equate)

ORG (Origin)

DEFB (Define Byte)

DEFW (Define Word)

END (fin del código fuente)

EQU (Equate - Equivalente)

La directiva EQU permite al programador igualar nombres a datos o direc-

ciones. Esta pseudo-operación se nota EQU. Los nombres utilizados se

refieren generalmente a direcciones de dispositivos, datos numéricos, di-

recciones de comienzo, direcciones fijas, posiciones de bits, etc.

PORT_A EQU 5

START EQU 0

CARRY EQU 3

TIEMPO EQU 5

También se puede definir una equivalencia con el nombre de otra equi-

valencia ya definida.

PORT_B EQU PORT_A+1

PORT_C EQU PORT_A+2

FIN EQU START+100

FIN2 ` EQU START+200

El valor del operando debe estar ya definido anteriormente, sino el

compilador entregará un error.

ORG (Origin - Origen)

La directiva origen (se nota ORG) permite al programador especificar la

posición de memoria donde programas, subrutinas o datos residirán. Los

programas y los datos pueden estar alojados en diferentes áreas de me-

Page 15: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

11

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

moria dependiendo de la configuración de memoria. (Cfr. ANGULO, 1997).

Rutinas de comienzo, subrutinas de interrupción y otros programas deben

comenzar en locaciones de memoria fijados por la estructura de micropro-

cesador. La directiva ORG hace al compilador colocar el código que le si-

gue en una nueva dirección de memoria (la salida del compilador no solo

coloca los códigos de operación sino también las direcciones de cada ins-

trucción y datos del programa). Usualmente se la utiliza para: reset, pro-

gramas de servicios de interrupción, almacenamiento en RAM, stack, pro-

grama principal, subrutinas.

Ejemplo:

ORG 00h

goto inicializa

org 04h ; vector de interrupcion

goto interr

ORG 05h

inicializa movlw 08h ; aquí comienza el programa

:

DEFB (Define Byte), DEFW (Define Word):

Esta directiva le permite al programador ingresar datos fijos en la memoria

de programa.

Estos datos pueden ser:

Tablas de conversión

Mensajes

Nombres

Umbrales

Comandos

Factores de conversión

Identificación de teclas

Direcciones de subrutinas

Page 16: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

12

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Esta directiva trata a los datos como parte permanente del programa. El

formato es muy simple

MENSAJE DEFB ’M’,’I’,’C’,’R’,’O’,0

DELAY DEFB 10

DATOS DEFW $A100

DEFW $A400

` DEFW $0000

POTENCIA DEFB 1,4,9,16,25,36,49,64,81

Banderas

Las banderas proveen una manera de obtener información acerca de del

estado actual de la máquina y el resultado de procesamiento de una ins-

trucción.

Nombre Estado = 0 Estado = 1

Desbordamiento: Indica cuando el resultado

de una operación con signo ha excedido la

capacidad del uP.

NV-No hubo desborde OV-Desborde

Dirección: Controla la selección de incremen-

to o decremento de los registros DI o SI en

las instrucciones de cadenas.

UP-Incremento DN-Decremento

Interrupción: habilita la entrada de interrup-

ción.

DI-Interr. anulada EI-Interrupción

Signo: indica el signo del resultado de la

última operación aritmética.

PL-Positivo NG-Negativo

Cero: indica si la última operación dio como

resultado cero.

NZ-No Cero ZR-Cero

Acarreo auxiliar: ocurre cuando en una opera-

ción aritmética, se produzco un acarreo o un

préstamo entre el bit 3 y 4 del resultado.

NA-Sin Acarreo

AC-Acarreo

Paridad: es un conteo de unos en la última

operación.

PO-Impar PE-Par

Acarreo: indica un acarreo o un préstamo en

la última operación aritmética, usado también

en operaciones de corrimiento y como indi-

cador de error en ciertos programas.

NC-Sin Acarreo CY-Acarreo

Page 17: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

13

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Las banderas son espacios de memoria.

Bandera Bit Nombre

CF 0 Bandera de acarreo (carry flag)

PF 2 Bandera de paridad (parity flag)

AF 4 Bandera de acarreo auxiliar (adjust flag)

ZF 6 Bandera de cero (zero flag)

SF 7 Bandera de signo (sign flag)

DF 10 Bandera de dirección (direction flag)

OF 11 Bandera de desbordamiento (overflow flag)

Operandos y direcciones

Los ensambladores permiten elegir con libertad el tipo de elemento a colo-

car en el campo de operando o dirección.

Números decimales: La mayoría de los ensambladores asumen todos los

números como decimales a no ser que se marquen de otra manera.

Por ejemplo: movlw 100

Suma con acarreo

Para el caso de sumar números cuya longitud supera a los 16 bits del mi-

croprocesador o que su resultado sea mayor que 16 bits, se debe recurrir

al uso de la suma con acarreo. Esto significa, que en el caso por ejemplo

de sumar dos números de 32 bits, se realiza la suma de los 16 bits menos

significativos y luego los 16 bits más significativos junto con el acarreo.

Figura 2

Suma con Acarreo

Page 18: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

14

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Figura 3

Registros 16bits para suma

ADD: Esta instrucción suma el primer operador con el segundo y al resul-

tado lo guarda en el primer operador, si hubo acarreo lo guarda en Carry.

ADC: Realiza la misma operación que ADD incorporando también el Carry

en la suma de los operadores.

Ejemplo

Sumar 2 nro de 32 bits contenidos en AX BX y CX DX respectivamente,

guardando el resultado en AX BX.

AX BX = 0134A23Bh

CX DX = BD02E329h

; sumar dos números de 32 bits

name "suma32"

org 100h

mov ax,0134

mov bx,A23B

mov cx,BD02

mov dx,E329

add bx,dx

adc ax,cx

ret

AX BX = BE378564 (Resultado)

Page 19: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

15

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Stack

Lugar de memoria destinado a guardar datos temporales, es una pila (LI-

FO)

Los registros usados por el stack son:

SP: Stack Pointer – Puntero del stack

SS: Stack Segment – Segmento del stack

Quedando la dirección absoluta SS:SP, Funciones que usan el Stack:

PUSH: Decrementa el SP en 2 y luego graba 2 bytes al stack.

POP: Lee los últimos 2 bytes grabados al Stack e incrementa el SP en 2.

También dan uso del Stack: las interrupciones de Hardware y Software y

las llamadas a subrutinas.

Estado del Stack antes y después del uso de las instrucciones POP y

PUSH:

Figura 4 Estado del Stack

Page 20: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

16

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Ejemplo

Salvar a los registros AX y BX, luego borrar los mismos para finalmente

recuperar los datos del Stack

; manejo del stack

; notar el orden en que se recupera los registros

name "stack"

org 100h

mov ax,10

mov bx,20

push ax

push bx

sub ax,ax

sub bx,bx

pop bx

pop ax

ret ; volver al sistema operativo

Movimiento (Shift) común y Aritmético

Page 21: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

17

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Formato de las instrucciones

Si bien se pueden realizar corrimiento o rotaciones de 1 o más bits, solo

está permitido el de 1 bit en inmediato, en estos casos para un corrimiento

de más de un bits, se debe utilizar un registro auxiliar, el CL. (Cfr. MOTO-

ROLA, 2012).

Funcionalidad:

Ejemplo

Usando instrucciones Shift ingresar un número en AX y multiplicarlo por

7

; multiplicar por 7

name "multip7"

org 100h

mov ax,023Ah

mov bx,ax

mov cl,03

shl bx,cl

sub bx,ax

ret ; volver al sistema operativo

Resultado 0F96h

Aritmética Entera

Instrucciones a usar MUL, IMUL, DIV, IDIV

Tamaño Operador Multiplicando Multiplicador Resultado

8 bits AL Byte registro o memoria AX

16 bits AX Palabra registro o memoria DX:AX

División

Tamaño Operador Dividendo Divisor Resultado Resto

16 bits AX Byte registro o memoria AL AH

32 bits DX:AX Palabra registro o memoria AX DX

Page 22: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

18

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Ejemplo

Dividir AX por 7 y Multiplicar BX por 23

; dividir y multiplicar enteros

name "divymul"

org 100h

mov ax,0100h

mov bx,2000h

mov cl,7 ; divisor

div cl ; dividendo = ax ; divisor = cl

mov cx,ax ; guardar resultado y resto en cx

mov ax,bx ; multiplicando

mov bx,23 ; multiplicador

mul bx ; resultado en dx ax

ret ; volver al sistema operativo

Resultado: división 24h con resto 4h – multiplicación 2E000h

Saltos Condicionales e Incondicionales

En casi todo programa muchas veces es necesario interrumpir el flujo

normal del mismo y saltar a otra porción del código, podemos distinguir

dos saltos diferentes:

Los condicionales, donde se evalúa una condición y al ser verdadera se

produce el salto, es la forma que tiene el ensamblador de realizar IF o

estructuras CASE que acostumbrábamos a usar en lenguajes de alto ni-

vel, lo único que aquí lo hacemos en dos pasos, primero comparamos,

quedando el resultado en las banderas (ver banderas al comienzo), lue-

go utilizamos alguna de las instrucciones de salto condicional para rea-

lizar el salto.

El salto incondicional, aquí no hay condición de salto y el mismo se

efectúa siempre, es el equivalente al GOTO en lenguajes de alto nivel.

Salto Incondicional

JMP nn

El salto incondicional puede ser dividido en tres tipos.

Page 23: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

19

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Salto corto, en este tipo de salto el parámetro nn es un byte, pudiendo

saltar desde +127 hasta -128 posiciones a partir de la dirección próxima

a JMP. (largo: 1 byte instrucción + 1 byte salto = 2 bytes)

Salto cercano, el parámetro nn es de dos bytes indicando la dirección

del puntero a donde va a saltar. (largo: 1 bytes instrucción + 2 bytes sal-

to = 3 bytes)

Salto lejano, nn es de 4 byte, indica la posición absoluta con segmento

y puntero del salto. ( largo: 1 byte instrucción + 4 byte salto = 5 bytes )

Generalmente el compilador elije la mejor forma (la más corta) para realizar

el salto, no siendo necesario determinar el tipo de salto.

Saltos condicionales

Este tipo de salto depende de las banderas del uP para realizar el salto,

todos estos saltos son solamente corto, no pudiendo saltar con estas ins-

trucciones más allá de +127 – 128 bytes

Saltos condicionales para número sin signo

Instrucción Bandera/s Descripción

JA C = 0 y Z = 0 Saltar si está por arriba

JAE C = 0 Saltar si está por arriba o es igual

JB C = 1 Saltar si está por abajo

JBE C = 1 o Z = 1 Saltar si está por debajo a igual

Saltos condicionales para número con signo

Instrucción Bandera/s Descripción

JG Z = 0 y S = O Saltar si es mayor

JGE S = O Saltar si es mayor o igual

JL S ≠ O Saltar si es menor

JLE Z = 1 o S ≠ O Saltar si es menor o igual

JNS S = 0 Saltar si no hay signo

JS S = 1 Saltar si hay signo

Page 24: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

20

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Otros saltos

Instrucción Bandera/s Descripción

JE o JZ Z = 1 Saltar si no es igual o cero

JNE o JNZ Z = 0 Saltar si no es igual o cero

JC C = 1 Saltar si hay acarreo

JNC C = 0 Saltar si no hay acarreo

JNO O = 0 Saltar si no hay overflow

JNP o JPO P = 0 Saltar si no hay paridad o paridad impar

JO P = 0 Saltar si hay overflow

JP o JPE P = 1 Saltar si hay paridad o paridad par

JP o JPE P = 1 Saltar si CX = 0

Ejemplo

Realizar un programa que: dado un vector de byte ya cargado, busque el

final del mismo (byte = 0h) y termine dejando en BX la longitud del mismo.

; Vector

name "vector"

org 100h

mov bx,0 ; en bx tenemos la posición dentro del vector

otro:

mov al,vec[bx] ; cargamos en AL el elemento del vector indicado en BX

inc bx ; incrementamos BX

cmp al,0 ; comparamos el elemento del vector con 0

jz fin ; si la comparación es 0 salimos del programa

jmp otro ; buscamos otro elemento

fin:

ret ; volver al sistema operativo

vec db "abcdefghijklmnopqrstuvwxyz",0 ; cargar un vector con constantes

Loop

La instrucción loop se utiliza para realizar bucles, esta instrucción decre-

mento el contador CX y lo compara con cero en caso de no ser cero salta

a la dirección indicada en el parámetro, de ser cero continua con la ins-

trucción siguiente.

Page 25: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

21

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Ejemplo

Realizar un programa que: dado un vector de byte ya cargado de 10 ele-

mentos, sume los mismos y termine con el resultado de la suma en AX.

; suma

name "suma"

org 100h

mov bx,0 ; en bx tenemos la posición dentro del vector

mov cx,10 ; contador del programa para el loop

mov ax,0 ; suma

mov dx,0

otro:

mov dl,vec[bx] ; cargamos en DL el elemento del vector indicado en BX

inc bx ; incrementamos BX

add ax,dx

loop otro

ret ; volver al sistema operativo

vec db 10,20,2,200,34,44,21,8,10,22; cargar un vector con constantes

Convenciones en la escritura del código fuente

Para hacer la tarea del programador más grata, se usan algunas conven-

ciones. Cada uno puede adoptar las que más le agraden y ayuden para

ser más productivo. En general, las convenciones son cualquier acción

que facilita la revisión y comprensión de un programa, especialmente el

que uno mismo ha escrito cuando tiene que revisarlo algunos meses des-

pués. Comentamos algunas convenciones que usaremos:

Los ficheros de código fuente llevarán la extensión *.ASM

Los ficheros de listado llevarán la extensión *.LST

Los ficheros de código objeto llevarán la extensión *.OBJ

Los ficheros de errores llevarán la extensión *.ERR

Los ficheros ejecutables en formato Intel Hex llevarán la extensión *.HEX

Los nemónicos escritos en mayúscula hacen que el código escrito sea

más visible.

Comentarios explicando cada línea de código.

Page 26: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

22

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Un párrafo de comentarios explica las rutinas o conjunto de instruc-

ciones ya que los campos de comentarios suelen ser pequeños.

El espacio entre caracteres se escribe “ _” . RB0_ES_1 es más fácil de

leer que RB0ES1

Recuerde que las convenciones son cualquier cosa que le haga

más fácil la lectura y comprensión de su código, como por ejem-

plo:

1. Una cabecera estandarizada.

2. Colocar las rutinas en el mismo sitio, todas contiguas.

3. Dibujar diagramas de flujo o escribir seudocódigo.

Desventajas de Assembler

Desventajas del Assembly: El lenguaje assembler no resuelve todos los

problemas de programación. Uno de ellos es la tremenda diferencia entre

el set de instrucciones del microprocesador y las tareas que el micropro-

cesador debe realizar. Las instrucciones del microprocesador tienden a

hacer cosas como: sumar contenidos de dos registros, desplazar el conte-

nido de un acumulador un bit, o colocar un nuevo valor en el contador de

programa (PC). Por otro lado, el usuario generalmente quiere que el com-

putador haga cosas como: chequear si un valor analógico leído se exedió

de un cierto umbral, buscar y reaccionar ante un comando particular de

una consola o teletipo, o activar un relé en el momento apropiado. El pro-

gramador de lenguaje assembler debe traducir estas tareas a secuencias

de simples instrucciones de microprocesador. Esta tradución suele ser di-

ficultosa, consume tiempo de trabajo. (Cfr. ANGULO, 1997).

Otro inconveniente es la no portabilidad. Cada microprocesador posee su

propio set de instrucciones en el cual está reflejado su arquitectura interna.

Un programa en assembler escrito para 6809, no correrá en un 6502, Z80,

Page 27: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

23

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

8080, o cualquier microprocesador de 16 o 32 bits. Ni siquiera dentro de la

misma familia de microcontroladores de Microchip Technology (PICs) exis-

ten las mismas instrucciones. Cada modelo tiene un set de instrucciones

propio que difiere en algunas instrucciones con los demás.

Inclusión de Código

Algunos ensambladores permiten incluir código fuente (partes de progra-

mas) desde otros archivos.

Por ejemplo:

INCLUDE DISPLAY.ASM

Le dice al compilador que incluya el código que se encuentra en el archivo

DISPLAY.ASM como si fuese parte del propio programa. Esto se utiliza pa-

ra reutilizar códigos realizados con anterioridad. En el ejemplo del siguien-

te punto lo vemos más claro.

Macros:

A veces ocurren secuencias de instrucciones particulares en los progra-

mas que son repetitivas. Estas secuencias de instrucciones se pueden eli-

minar utilizando MACROS. Las macros permiten asignarle un nombre a

una secuencia de instrucciones. Luego se utiliza el nombre de la macro en

el programa como si se usase la secuencia de instrucciones anterior. Las

macros no son lo mismo que las subrutinas. El código de las subrutinas

aparece una sola vez en un programa y la ejecución del programa salta a

la subrutina. En cambio, el ensamblador reemplaza cada ocurrencia del

nombre de la macro con la secuencia especificada de instrucciones. Por

consiguiente la ejecución del programa no salta a la macro como una sub-

rutina.

Page 28: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

24

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Ejemplo.

Archivo “ MULX10.ASM”

MULX10 MACRO ; comienzo de la macro

movf tiempo,w ; guarda el tiempo en W

rlf tiempo ; multiplica por 2

rlf tiempo ; multiplica por 2

rlf tiempo ; multiplica por 2

addwf tiempo ; le suma una vez más

addwf tiempo ; le suma una vez más

ENDM ; fin de la macro

Tabla de Caracteres ASCCI

Los códigos ASCII menores a 3210 (0016 a 1F16) son los llama-

dos caracteres de control. No se pueden representar gráficamen-

te, se utilizan como comandos en los dispositivos series y parale-

los (terminales, impresoras, etc.) efectuando operaciones como:

avance de papel, retorno de carro, fin de transmisión, fin del ar-

chivo, etc.

Figura 5 Tabla de Caracteres ASCCI

3.1

Realizar la documentación del siguiente código:

Este programa muestra la forma de utilizar el puerto paralelo usando los

bits de datos como salidas. El programa realiza una secuencia de 8

LEDs conectados en modo source en los pines 2 al 9 y el 19 (CNG o

masa) para los cátodos comunes.

Page 29: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

25

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

/* leds.c */

/* Secuencia 8 LEDs conectados al puerto paralelo */

#include <stdio.h>

#include <conio.h>

#include <dos.h>

void main()

{

/* colocar el valor del puerto que corresponda: 0x278, 0x378, 0x3BC */

int puerto = 0x278;

int led = 1;

/* apago todos los LEDs */

outportb( puerto, 0 );

/* si se pulsa cualquier tecla termina */

while( kbhit() == 0 )

{

/* enciendo el LED */

outportb( puerto, led );

/* siguiente LED (1, 2, 4, 8, 16, 32, 64, 128) */

led = led * 2 ;

/* si excede 128 tiene que volver a 1 */

if( led > 128 )

led = 1;

}

}

/* FIN */

1. Indicar qué está mal en las siguientes instrucciones ensamblador

MOVE Temp, #4

ADD.B #1,A3

CMP.L D0, #9

MOVE.B #500,D5

ADD.W +(A2),D3

BEQ.B Bucle

2. Indicar tres aspectos de la arquitectura de un ordenador que pueden influir en

la velocidad de ejecución de una instrucción.

3. ¿Cuál era el tamaño de la memoria en la máquina de Von Neuman expresada

en K octetos?

4. Encontrar la palabra o frase de la lista que aparece a continuación que mejor

se ajusta a las afirmaciones siguientes. Afirmaciones:

Otro nombre para procesador

Máquina de alto rendimiento con un precio elevado

Page 30: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

26

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Aproximación al diseño hardware o software. El sistema está formado por

capas jerárquicas, en las que cada capa de nivel superior oculta detalles

de la capa de nivel inferior.

Orden individual para un computador.

Localización de los programas cuando se están ejecutando, también con-

tiene los datos que se necesitan.

Parte activa del computador que sigue las instrucciones del programa al

pie de la letra: suma números, examina números, etc.

Memoria pequeña rápida que actúa como buffer de la memoria principal

Abstracción específica que el hardware proporciona al software de bajo ni-

vel.

Palabras:

a) ensamblador

b) caché

c) CPU

d) Instrucción

e) Arquitectura del repertorio de instrucciones

f) Procesador

g) Memoria

h) Supercomputador

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel, se llaman así

porque están muy cercanos al hardware del ordenador. Es por ello de el

lenguaje ensamblador asigna una abreviatura a c da instrucción en binario

(código máquina), de esta forma es más fácil recordar y más difícil equivo-

carse con las instrucciones o abreviaturas.

Una desventaja es que con este lenguaje sigue siendo necesario conocer

muy bien el hardware del ordenador. En otras palabras es necesario cono-

cer a fondo la arquitectura de la máquina para la que se va a programar.

Fue usado ampliamente en el pasado para el desarrollo de software, pero

actualmente sólo se utiliza en contadas ocasiones, especialmente cuando

se requiere la manipulación directa del hardware o se pretenden rendi-

mientos inusuales de los equipos.

Page 31: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

27

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Unidades de información

Para que la PC pueda procesar la información es necesario que ésta se

encuentre en celdas especiales llamadas registros.

Los registros son conjuntos de 8 o 16 flip-flops (basculadores o biesta-

bles).

Un flip-flop es un dispositivo capaz de almacenar dos niveles de voltaje,

uno bajo, regularmente de 0.5 volts y otro alto comúnmente de 5 volts. El

nivel bajo de energía en el flip-flop se interpreta como apagado o 0, y el

nivel alto como prendido o 1. A estos estados se les conoce usualmente

como bits, que son la unidad más pequeña de información en una compu-

tadora.

A un grupo de 16 bits se le conoce como palabra, una palabra puede ser

dividida en grupos de 8 bits llamados bytes, y a los grupos de 4 bits les

llamamos nibbles.

Sistemas numéricos

El sistema numérico que utilizamos a diario es el sistema decimal, pero

este sistema no es conveniente para las máquinas debido a que la infor-

mación se maneja codificada en forma de bits prendidos o apagados; esta

forma de codificación nos lleva a la necesidad de conocer el cálculo posi-

cional que nos permita expresar un número en cualquier base que lo ne-

cesitemos.

J. Mª. Angulo Usategui, E. Martín Cuenca, I. Angulo Martínez, Microcontro-

ladores PIC. La Solución en un Chip. Ed. Paraninfo. ( 1997 )

J. Mª. Angulo Usategui, I. Angulo Martínez, Microcontroladores PIC. Diseño

práctico de aplicaciones, Mc Graw Hill [ 1999 ]

Page 32: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

28

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Cherre, Rafael Juan, Lenguaje de Programación en C++, Editorial Macro.

Francia, Darío Rafael, Programación Orientada a Objetos, Editorial Acisclo,

2009

Los planteamientos explicados en este fascículo deben ser tenidos en

cuenta para el tratamiento de problemas posteriores. En el siguiente fascí-

culo daremos introducción a la descripción interna del Microcontrolador,

esto para adentrarnos en funcionalidad, programación, características y

variables a programar y prácticas en la plataforma.

Page 33: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

29

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

Seguimiento al autoaprendizajeSeguimiento al autoaprendizajeSeguimiento al autoaprendizaje

Procesadores - Fascículo No. 3

Nombre_________________________________________________________

Apellidos ______________________________Fecha ___________________

Ciudad _______________________________Semestre__________________

Resolver:

1. Cómo se detecta el Overflow?

2. Sea X= 1100 0001 un número binario de 8 bits. Especifique en qué consiste el

desplazamiento lógico (derecha o izquierda), el desplazamiento aritmético (de-

rEcha/izquierda) y la rotación (derecha/izquierda). Obtenga el resultado de rea-

lizar dichas operaciones con el número X e interprete el resultado, cuando sea

posible, según X se considere como un número con signo o como un número

sin signo.

3. En qué consiste un ciclo de Fetch y un ciclo de Execute.

4. ¿Qué son los modos de direccionamiento?. Describa algunos de ellos.

5. ¿Qué funciones tiene el contador de programa, PC, de un microprocesador?

6. ¿Qué funciones tiene un registro de datos?

7. ¿Qué funciones tiene un registro de direcciones?

8. Si un microprocesador dispone de:

a. 16

b. 20

c. 24

d. 32

Líneas en su bus de direcciones, ¿cuántas direcciones físicas distintas puede

generar?

9. Representa el esquema de una RAM de 32Kx8 y una ROM de 16Kx8.

10. Definir brevemente: programa fuente, programa objeto, lenguaje ensambla-

dor, lenguaje de máquina y programa ensamblador.

Page 34: Fascículo 3 - Dominios, Hosting, Multidominio, Ilimitado, …€¦ ·  · 2013-08-29Es necesario comprender la arquitectura interna del procesador así como ... Hay mucho más que

30

Procesadores

Procesadores

Fascículo No. 3

Semestre 6

11. Describir brevemente los conceptos de puerto y periférico, los métodos de

transferencia paralela de datos, y las técnicas de entrada y salida.

12. Comente las técnicas de E/S programada e interrupción en cuanto a recur-

sos necesarios y velocidad de la transferencia de datos.