PRÁCTICAS MICROPROCESADORES
|
|
|
- Miguel Ángel Naranjo Río
- hace 7 años
- Vistas:
Transcripción
1 E.U.I.T.I. UNIVERSIDAD POLITÉCNICA DE MADRID DPTO. ELECTRÓNICA, AUTOMÁTICA E INFORMÁTICA INDUSTRIAL PRÁCTICAS DE MICROPROCESADORES PRÁCTICA II PROGRAMACIÓN BÁSICA EN ENSAMBLADOR Y SIMULACIÓN EN TM-683
2
3 PRÁCTICA II PROGRAMACIÓN BÁSICA EN ENSAMBLADOR Y SIMULACIÓN EN TM-683 ÍNDICE 1 OBJETIVO DE LA PRÁCTICA MODELO DE PROGRAMACIÓN DEL MC REGISTROS DE DATOS REGISTROS DE DIRECCIONES REGISTROS DE MANEJO DE PILA (STACK POINTER) REGISTRO DE ESTADO CONTADOR DE PROGRAMA ALMACENAMIENTO DE DATOS EN MEMORIA SINTAXIS DEL ENSAMBLADOR ESCRITURA DE PROGRAMAS ETIQUETAS DIRECTIVAS DE COMPILACIÓN Directivas básicas Directivas para la reserva de memoria Directivas para el uso de variables en varios módulos INSTRUCCIONES INSTRUCCIONES DE MOVIMIENTO DE DATOS INSTRUCCIONES ARITMÉTICO-LÓGICAS INSTRUCCIONES DE SALTO Y BIFURCACIÓN Instrucciones de bifurcación Instrucciones de salto Instrucciones de bifurcación y salto a subrutina MODOS DE DIRECCIONAMIENTO BÁSICOS DEL DIRECTO A REGISTRO DIRECCIONAMIENTO ABSOLUTO DIRECCIONAMIENTO INMEDIATO INDIRECTO A REGISTRO DE DIRECCIÓN INDIRECTO A REGISTRO DE DIRECCIÓN CON DESPLAZAMIENTO INDIRECTO A REGISTRO DE DIRECCIÓN CON DESPLAZAMIENTO E ÍNDICE INDIRECTO A REGISTRO DE DIRECCIÓN CON POSTINCREMENTO INDIRECTO A REGISTRO DE DIRECCIÓN CON PREDECREMENTO PROGRAMA SIMULADOR SIM68K MENÚS EMPLEADOS DURANTE LA PRÁCTICA COMANDOS RELACIONADOS CON LA CARGA DEL PROGRAMA COMANDOS RELACIONADOS CON LA EJECUCIÓN DEL PROGRAMA Ejecución continua... 15
4 7.3.2 Ejecución paso a paso PUNTOS DE RUPTURA OPCIONES EJERCICIOS PRÁCTICOS PROPUESTOS PROGRAMA PARA CALCULAR LA LONGITUD DE UNA CADENA ALFANUMÉRICA PROGRAMA PARA CAPITALIZAR UNA CADENA ALFANUMÉRICA PROGRAMA PARA HALLAR LA SUMA DE UN CONJUNTO DE DATOS... 17
5 1 Objetivo de la práctica Esta práctica pretende familiarizar al alumno con las instrucciones y los modos de direccionamiento más simples del microprocesador 68000, así como de las directivas de compilación básicas. Una vez comprendidos estos conceptos, el alumno deberá realizar algunos programas sencillos para aprender a manejarlos. Al mismo tiempo, se introduce el manejo del simulador, herramienta que permite la ejecución de código máquina del MC68000 en el PC. 2 Modelo de programación del MC68000 Se conoce como modelo de programación de un microprocesador el conjunto de registros e instrucciones visibles o disponibles para el programador de código ensamblador. Este conjunto no coincide siempre con el conjunto real de registros e instrucciones del microprocesador, pero si que constituye su interfaz de programación. En la figura 1 se muestra el modelo de programación para el modo usuario del 68000: OCHO REGISTROS DE DATOS SIETE REGISTROS DE DIRECCIONES PUNTERO DE PILA USUARIO CONTADOR DE PROGRAMA REGISTRO DE ESTADO Figura 1. Modelo de programación de usuario del El modelo de programación para el modo supervisor añade un nuevo registro, el puntero de pila del supervisor, y amplía uno de los existentes, el registro de estado, utilizando sus bits de mayor peso. También añade algunas instrucciones privilegiadas que sólo pueden ejecutarse en este modo (intentar ejecutarlas en modo usuario provoca una excepción de violación de privilegio). En los siguientes apartados se hace un repaso de las características y cometidos de los registros del MC
6 2.1 Registros de datos Existen 8 registros de datos de uso general numerados de D0 a D7. Todos tienen 32 bits. Se emplean para almacenar los operandos de las operaciones que realiza el microprocesador y también son los destinatarios de sus resultados. Son los más versátiles de todos los registros y se pueden utilizar para operaciones de 32 bits, 16 bits y 8 bits. 2.2 Registros de direcciones Existen 7 registros de direcciones de uso general numerados de A0 a A6. Todos tienen 32 bits. Contienen direcciones de memoria y se utilizan como punteros para acceder a datos en la memoria principal. Admiten un conjunto de operaciones más reducido que los registros de datos y se pueden utilizar para operaciones de 32 y 16 bits únicamente; cuando se utilizan en operaciones de 16 bits, el resultado es extendido en signo automáticamente. El registro A6 se emplea con frecuencia en los compiladores como frame pointer, un puntero que se usa para gestionar las variables locales de las subrutinas. 2.3 Registros de manejo de pila (stack pointer) Existen numerosas situaciones en las que el microprocesador debe cambiar temporalmente de contexto de ejecución (salto a subrutina, solicitud de interrupción de un periférico, etc.), para luego regresar a su contexto original. Para ello, el microprocesador debe almacenar la suficiente información sobre su contexto de ejecución actual (contador de programa, registro de estado y contenido de sus registros entre otras informaciones) antes de realizar el cambio. El problema se complica por el hecho de que los cambios pueden estar anidados: se puede llamar a una subrutina desde dentro de otra subrutina o desde la rutina de atención a la interrupción o, incluso, una interrupción en curso puede ser interrumpida por otra de mayor prioridad. Se necesita, por tanto, una capacidad de almacenamiento poco menos que impredecible y bastante considerable. En la mayoría de los microprocesadores este problema se ha resuelto mediante el uso de una estructura de datos tipo LIFO (Last In, First Out) conocida como pila (stack). Si bien existen microprocesadores muy especializados que implementan esta estructura en registros internos, lo habitual es reservar parte de la memoria RAM del sistema para este cometido y gestionarla a través de un registro del microprocesador que almacena la siguiente posición vacía de la pila. A este registro se le conoce como el puntero de pila o stack pointer. Salvo en situaciones muy concretas, es el microprocesador quien gestiona automáticamente la actualización de su contenido. Como el modelo de seguridad del MC68000 contempla dos modos de trabajo, modo supervisor y modo usuario, es necesario un puntero de pila para cada uno de ellos: el SSP (Supervisor Stack Pointer) y el USP (User Stack Pointer), respectivamente. En modo usuario sólo es visible, a través del registro A7, el USP. En modo supervisor son accesibles los dos: el SSP directamente a través de A7 y el USP a través de una instrucción privilegiada que permite cargar su contenido en un registro de direcciones (MOVE USP,An) 2
7 2.4 Registro de estado Contiene los códigos de condiciones de resultado producidos al ejecutar las instrucciones. Tiene 16 bits. El byte alto se denomina byte de sistema, y es utilizado en modo supervisor. El byte bajo se denomina byte de usuario y contiene los siguientes códigos de condición de resultado: Bit 0 : Bit de acarreo. Se pone a uno si se produce un acarreo. Se denota por la letra C. Bit 1: Desbordamiento. Se representa con la letra V, y se pone a uno si la operación produce un desbordamiento para el tamaño de datos elegido. Bit 2: Cero. Se activa si la operación produce como resultado cero. Se denota con la letra Z. Bit 3: Negativo. Activo si la operación ofrece un resultado negativo. Utilizamos la N para representarlo. Bit 4: Extend. En el caso de operaciones aritméticas, toma el mismo valor que el bit C. En la figura 2 se representan estos bits, incluyendo su posición dentro del registro: Figura 2. Registro de estado 2.5 Contador de programa Este registro contiene la dirección en memoria de la próxima instrucción a ejecutar (salvo en el caso de instrucciones de salto o bifurcación) y lo actualiza el microprocesador automáticamente en cada ciclo de ejecución. Mientras que el resto de registros cambia en número o funcionalidad dependiendo del modelo de microprocesador, este registro existe en todos los microprocesadores y cumple con la misma función en todos ellos. 3 Almacenamiento de datos en memoria El microprocesador puede trabajar con datos de distintos tamaños. En concreto, podemos encontrarnos operaciones con datos de: 8 bits: se denominan tipo byte, y para distinguirlos podemos usar la letra B. 16 bits: son el tipo word, representados por la letra W. En este tipo de dato podemos distinguir dos bytes: el de menor peso (bits 0 a 7) y el de mayor peso (bits 8 a 15). 32 bits: es el mayor dato posible, y se denomina long word. Se representa con la letra L, y también se puede subdividir, en este caso en dos palabras de 16 bits: la de menor peso (bits 0 a 15) y la de mayor peso (bits 16 a 31). BCD o decimal: el dato se divide en grupos de 4 bits cada uno de los cuales representa un dígito entre 0 y 9 codificado en binario. 3
8 A la hora de trabajar con datos de distinto tamaño en los registros de un microprocesador no es necesario hacer ninguna consideración especial: en todos ellos el bit más significativo está a la izquierda y tiene el ordinal más alto; si el tamaño del dato es menor que el del registro, siempre se usan los bits menos significativos. Sin embargo, cuando se trabaja con datos en la memoria del sistema es importante saber como los almacena nuestro microprocesador. De hecho, esta es la principal causa de incompatibilidad entre los archivos de datos de sistemas basados en distintos microprocesadores. En general, existen dos modelos de organización de los datos: little endian y big endian. En un microprocesador little endian el byte menos significativo se almacena en la dirección más baja y el más significativo, en la más alta; en un big endian ocurre lo contrario, el byte más significativo ocupa la dirección más baja y el menos significativo, la más alta. El MC68000 es un microprocesador de tipo big endian. Además, los datos almacenados en la memoria principal tienen que observar las siguientes reglas: 1. Aunque el MC68000 organiza la memoria en palabras de 16 bits, a cada byte se le asigna su propia dirección de memoria (por lo que una palabra ocupa dos direcciones de memoria contiguas y una doble palabra, cuatro). 2. Puesto que la memoria se organiza en palabras a partir de la dirección $000000, un dato de tamaño palabra siempre tiene que comenzar en una dirección par, es decir, no puede estar dividido entre dos palabras de la memoria. Esto facilita el diseño del hardware del microprocesador y acelera el acceso a los datos y al programa. Lo mismo sucede con las dobles palabras, tienen que comenzar en un límite de palabra de memoria, es decir, en una dirección par. El acceso a una palabra o doble palabra en una dirección impar provoca una excepción de dirección ilegal. 3. El acceso a datos de tamaño byte puede hacerse tanto en direcciones pares como impares. La representación gráfica de lo indicado anteriormente puede clarificar estas reglas: DIRECCIÓN BYTE $00000 BYTE $00001 BYTE $00002 BYTE $00003 Figura 3. Datos tipo byte en memoria: $0F, $4F, $8F y $00 DIRECCIÓN BYTE 0 (mayor peso) $00F06 BYTE 1 (menor peso) $00F07 BYTE 2 (mayor peso) $00F08 BYTE 3 (menor peso) $00F09 Figura 4. Datos tipo palabra en memoria: $0F4F y $8F00 4
9 DIRECCIÓN BYTE 0 (mayor peso) $00008 BYTE 1 (mayor peso) $00009 BYTE 2 (menor peso) $0000A BYTE 3 (menor peso) $0000B Figura 5. Datos tipo doble palabra en memoria: $0F4F8F00 4 Sintaxis del ensamblador. 4.1 Escritura de programas Un fichero fuente en ensamblador es un fichero de texto sin formato compuesto por una secuencia de instrucciones y directivas, cada una escrita en una línea distinta. Cada línea a su vez esta dividida en cuatro columnas separadas por tabuladores o espacios (se prefieren tabuladores por mejorar la legibilidad del código). La primera columna se reserva para las etiquetas, la segunda para instrucciones y directivas, la tercera para los operandos de éstas y todo lo que se encuentre a partir de la cuarta se considera comentarios que documentan el código. También se pueden introducir comentarios en cualquier posición si se preceden de ;. Cada instrucción o directiva consta de un nombre mnemotécnico y de operandos. Los operandos deben de ir separados del mnemotécnico por lo menos por un espacio; si hay varios operandos, estos deben ir separados entre sí por comas y no debe existir ningún espacio entre ellos. En el caso de operaciones que generen un resultado o un movimiento de datos, el primer operando es el operando fuente y el segundo es el operando destino, a donde irá a parar el resultado de la operación. Por ejemplo: ADD D1,D2 simplemente sumará el contenido del registro D1 al contenido del registro D2 y el resultado quedará en este último registro. Por tanto, el contenido original del operando fuente no se ve alterado por la ejecución de la instrucción, mientras que el del operando destino es sobrescrito y, por tanto, se destruye. Muchas instrucciones pueden operar con los distintos tipos de datos: bytes (8 bits), word (16 bits) y long word (32 bits). Para indicar el tamaño se le añade un sufijo al mnemotécnico de la instrucción. Este sufijo será.b,.w o.l. Si no se le añade ningún sufijo se supone que el tamaño será word. Por tanto la instrucción anterior es equivalente a: ADD.W D1,D2 En las directivas que admiten operandos y en aquellas instrucciones en las que un operando es una constante, es posible emplear expresiones matemáticas sencillas (sumas, restas, multiplicaciones, etc.) con constantes numéricas o simbólicas, siempre que sea posible calcular el valor final del operando en el momento del ensamblado (compile time): NDATOS EQU 2 MOVE.L D0,RSLTD+4 RSLTD DS.L NDATOS+1 5
10 4.2 Etiquetas Las etiquetas son palabras que utilizamos para designar una dirección de memoria o referirnos al valor de una constante. El sentido de dar nombre a una determinada dirección es el saber dónde empieza una determinada parte de un programa, bien sea porque se trata de una parte que hemos de utilizar varias veces y a la que pretendemos acceder desde otras partes del programa, bien porque sea una parte del programa que solo se ha de ejecutar en determinadas condiciones. Las etiquetas sólo pueden contener los siguientes grupos de caracteres ASCII: A-Z, a-z, 0-9, y _ y deben comenzar por una letra. La forma general de crear una etiqueta es escribir su nombre empezando en el margen izquierdo, sin ningún espacio anterior, en la misma línea donde se encuentre la instrucción que queremos identificar y, opcionalmente, terminada por :. Para mejorar la legibilidad del código, una etiqueta también puede estar en la línea anterior a la instrucción a la que identifica. En este caso es obligatorio añadirle : al final. A continuación se muestra un fragmento de código en el que se emplean etiquetas: ; Programa de ejemplo para mostrar el uso de etiquetas ORG $25000 ;origen del programa INICIO: CLR.W D0 ;pone a cero el registro D0 ET1: MOVE.B #$98,D1 ;mueve $98 a D1 MOVE.L #$76,D2 ;mueve $76 a D2 ET2 ADD.L D1,D0 ;D0 <- D1 + D0 END ;fin del programa Así, en este ejemplo, la etiqueta INICIO tiene como valor la dirección en memoria de la instrucción CLR.W D0. No nos hace falta saber el valor numérico de la posición, pues podemos referirnos a ella a través de su etiqueta. Esto facilita mucho la programación ya que: La posición de una instrucción no es conocida a priori, hay que ensamblar el código para determinarla. Usando etiquetas dejamos este trabajo al programa ensamblador. Si es necesario modificar su valor, sólo será necesario hacerlo en el lugar donde se defina la etiqueta en vez de tener que hacerlo en todos aquellos lugares donde se haya utilizado. Se aumenta mucho la legibilidad del código. 4.3 Directivas de compilación Las directivas de compilación son órdenes para el ensamblador que se incluyen en el código fuente. Aunque puedan parecer instrucciones para el 68000, no lo son, puesto que su función es indicar al programa compilador ciertas tareas a realizar. Cuando la herramienta ens68k encuentra una directiva, la procesa inmediatamente. Las directivas no son instrucciones ni quedan almacenadas como parte del código máquina ejecutable. Las directivas se utilizan en un programa para realizar las siguientes funciones: Control del ensamblado. Definición de símbolos. Definición de datos y reserva de memoria. Control del listado, macros, ensamblado condicional etc. 6
11 En los siguientes apartados se introducirán las directivas básicas, necesarias para realizar nuestros primeros programas Directivas básicas ORG Asigna al contador de programa el valor especificado por la expresión que acompaña a esta directiva. Esto quiere decir que las instrucciones posteriores a ORG son ubicadas en posiciones de memoria absolutas que comienzan a partir del nuevo valor del contador de localización. Por ejemplo: ORG $25000 MOVE #0,D5 posiciona el contador de localización en la dirección $25000 de forma que la instrucción siguiente quedará ubicada en esta dirección de memoria absoluta EQU Asigna a una etiqueta el valor especificado por la expresión que acompaña a esta directiva. La etiqueta no puede volverse a definir en ningún otro punto del programa. Por ejemplo: PRECIO EQU 1000 ADD #PRECIO,D1 ;Sumar 1000 a D1 define la etiqueta PRECIO y le asigna el valor Cada vez que el ensamblador encuentra esta etiqueta la sustituye por su valor. Por lo tanto, no se asigna memoria al símbolo como en otras directivas. La función de esta directiva es facilitar la legibilidad y modificación de un programa END Indica al ensamblador que el programa fuente ha terminado. Si existen instrucciones posteriores serán ignoradas Directivas para la reserva de memoria DC (Definir constante) Reserva un espacio de memoria, lo inicializa con un valor constante y, opcionalmente, define una etiqueta con la dirección de comienzo de ese espacio. Se pueden almacenar así datos de tamaño byte, word o long word. Si los datos son de tamaño word o long word, el ensamblador se asegura de que comiencen en dirección par, dejando posiciones de memoria sin usar si es necesario. También se pueden concatenar en una misma directiva DC varias constantes separadas por comas. Las constantes definidas por medio de DC pueden ser valores decimales, hexadecimales, binarios o ASCII, así como expresiones o cadenas de caracteres. Ejemplos: CADENA DC.B ABC,0 ;Almacena la cadena ABC mas 0 TABLA DC.W 25,$31,78 ;Crea una tabla de words. TOTAL DC.L PRECIO+1 ;Ocupa 4 bytes con 1001 MASCARA DC.B %
12 DS (Reservar memoria) Reserva un espacio de memoria y, opcionalmente, define una etiqueta con la dirección de comienzo de ese espacio. Se puede reservar espacio para datos de tamaño byte, word o long word. La memoria no se inicializa con ningún valor predeterminado. Si los datos son de tamaño word o long word, el ensamblador se asegura de que comiencen en dirección par, dejando posiciones de memoria sin usar si es necesario. Ejemplos: ORG $25000 ;Empezamos reserva en $25000 VAR1 DS.B 3 ;Reserva 3 bytes (VAR1 = $25000) DS 3 ;Reserva 3 words en $ DS $10 ;Reserva 16 words en $25000A VAR2 DS.L 10 ;Reserva 10 double words ;(VAR2 = 25001A) Directivas para el uso de variables en varios módulos XDEF (Definir símbolo externo) Cuando se divide un programa en varios módulos fuente se usa esta directiva para definir, en uno de los módulos, un símbolo que es utilizado en alguno de los otros. Esta directiva avisa al ensamblador que debe guardar la información relativa al valor del símbolo en una tabla de nombres exportados, como parte del módulo objeto. Cuando el montador lnk68k monta un programa en varios módulos, tiene acceso a los símbolos exportados por todos los módulo y resolver así las referencias externas XDEF INICIAR define como externa la referencia INICIAR XREF (Referenciar símbolo externo) Se usa esta directiva para indicar que en un módulo va a ser usado un símbolo que no está definido en el mismo. Necesariamente este símbolo deberá haberse definido como externo por medio de la directiva XDEF en alguno de los módulos que se van a montar conjuntamente con el módulo en que aparece referido el símbolo por medio de XREF. Por ejemplo: XREF INICIAR permite usar en un módulo en el que no ha sido definida, la referencia externa INICIAR que se definió anteriormente. 5 Instrucciones Esta sección contiene una introducción a las instrucciones básicas del Las instrucciones constituyen un conjunto de herramientas que incluyen todas las funciones de la máquina para realizar las siguientes operaciones: Movimiento de datos, operaciones aritmético lógicas, desplazamientos, manipulación de bits, control de programas, etc. A continuación se describen las instrucciones más comunes, relativas al movimiento de datos y a las operaciones aritmético lógicas: 8
13 5.1 Instrucciones de movimiento de datos El procedimiento fundamental de adquisición de datos (transferencia y almacenamiento) está constituido por la instrucción MOVE. Esta instrucción permite manipulación de datos así como direcciones de memoria. La instrucción MOVE permite transferir operandos de tamaño long, word y bytes (este último no está permitido para direcciones). Dependiendo del modo de direccionamiento, se pueden transferir datos y direcciones de memoria a memoria, registro a memoria, memoria a registro y registro a registro. Algunos ejemplos de esta instrucción son: MOVE.B D0,D2 ;byte bajo de D0 a D2 MOVE.W D1,25000 ;word bajo de D1 a MOVE.L A1,D2 ;contenido de A1 a D2 MOVE.L 25000,25100 ;contenido de a Otra instrucción utilizada para el movimiento de datos es LEA. Con esta instrucción podemos cargar una dirección efectiva en un registro de direcciones: LEA 25000,A1 ;Carga en A1 la dirección Instrucciones Aritmético-Lógicas Las operaciones aritméticas incluyen las cuatro operaciones básicas: sumar (ADD), restar (SUB), multiplicar (MUL) y dividir (DIV), así como la comparación aritmética (CMP), borrado (CLR) y negación (NEG). Las instrucciones ADD y SUB están disponibles para datos y direcciones aceptando todos los tamaños de operando. Ejemplo: ADD.B D1,D2 ;Suma el byte bajo de D1 a D2 SUB.W D1,25000 ;Al contenido de le resta D1 Las instrucciones de operaciones lógicas AND, OR, EOR y NOT están disponibles para todos los tamaños de datos enteros. Un conjunto similar de instrucciones (ANDI, ORI y EORI) permiten estas operaciones lógicas con todos los tamaños de operandos inmediatos. Ejemplo: ANDI.B #3,D0 ;operación AND de 3 con ;el contenido del byte bajo de D0 Una instrucción que se podría considerar en este grupo es CLR (borrado). Su función es poner a cero los bits del registro seleccionado. Su forma es como sigue: CLR.B D0 ;pone a cero el byte bajo de D0 5.3 Instrucciones de salto y bifurcación Para que un programa pueda realizar una tarea de mínimo interés es necesario que sea capaz de modificar su comportamiento en función de los datos que recibe o de los resultados que obtiene del tratamiento de dichos datos. También es interesante la posibilidad de transferir definitivamente la ejecución a otra parte del programa o de ejecutar bloques de código que realicen operaciones frecuentes y retomar la ejecución en el punto donde se dejó una vez finalizada su tarea. Esto es posible mediante el uso de las instrucciones de salto y bifurcación Instrucciones de bifurcación Las instrucciones de bifurcación (Bcc) se distinguen porque la dirección de destino se proporciona de forma relativa. Es decir, no se da la directamente la dirección de destino, 9
14 sino el incremento del contador de programa necesario para alcanzar el destino (puede ser tanto positivo como negativo) o dirección relativa. La dirección relativa puede ser de un byte o de una palabra: en el primer caso el salto puede tomar un valor entre -126 y 129 posiciones de memoria, en el segundo, de entre y Normalmente emplearemos etiquetas y dejaremos que sea el ensamblador quien calcule la dirección relativa necesaria y su tamaño. No obstante, es posible forzar el tamaño de la dirección realtiva: Bcc.S Bcc.L ;Dirección relativa de un byte ;Dirección relativa de una palabra Una ventaja de emplear direcciones relativas es que el código se puede cargar en cualquier parte de la memoria ya que, al emplear direcciones relativas en vez de absolutas, no depende para su funcionamiento de su posición en un lugar fijo. Otra particularidad de las instrucciones de bifurcación es que la ejecución de muchas de ellas es condicional: depende del contenido del registro de código de condición (CCR). El microprocesador examina los bits de este registro y en función de su valor y de la condición de la instrucción de bifurcación toma el salto o continúa con la instrucción siguiente. Como los bits del CCR se modifican en respuesta a las operaciones que realiza el microprocesador, es posible variar el comportamiento del programa en función de los resultados de estas operaciones. Diferentes combinaciones de bits del CCR permiten responder a distintas condiciones: CC: Carry clear EQ: Equal MI: Minus VC: No overflow HI: High GE: Greater or equal GT: Greater than CS: Carry set NE: Not equal RA: Always PL: Plus VS: Overflow LS: Low or same LE: Less or equal LT: Less than Las instrucciones de salto condicional siempre vienen precedidas de una operación lógico-aritmética, de comparación o de movimiento de datos que actualice el CCR, ya que no son capaces de comprobar la condición por sí mismas. Ejemplos: SUBQ #1,CONT ;Salta si el resultado no es 0 BNE BUCLE MOVE (A0)+,D0 ;Salta si el nuevo dato es cero BEQ FIN CMP #15,D2 ;Salta si D2 es mayor o igual que 15 BGE CONTINUAR 10
15 5.3.2 Instrucciones de salto La instrucción de salto, JMP, no es condicional y la dirección de destino se indica de forma explícita (salvo en los modos de direccionamiento relativos al contador de programa). JMP CONTINUAR ;Salta a la etiqueta CONTINUAR Instrucciones de bifurcación y salto a subrutina Ambas son incondicionales y se diferencia de las anteriores en que, antes del salto, el contenido del contador de programa se salva en la pila. De esta forma es posible retomar la ejecución en el punto en que se dejó recuperando la dirección salvada. Ejemplos: BSR SUBRUTINA1 ;Dirección relativa JSR SUBRUTINA2 ;Dirección absoluta Se emplean para llamar a subrutinas, bloques de código con una funcionalidad concreta que permiten estructurar un programa y evitan la repetición de código en el caso de operaciones comunes y de uso frecuente. Todas las subrutinas deben terminar con la instrucción RTS, que recupera la dirección de retorno de la pila y la vuelve a cargar en contador de programa. Esto provoca que la ejecución continúe en la siguiente instrucción después de la de salto a la subrutina. SUBRUTINA1: RTS 11
16 6 Modos de direccionamiento básicos del A continuación se detallan los modos de direccionamiento más comunes del Directo a registro Los datos del operando están en uno de los registros de datos o en uno de los registros de dirección. Estos registros se describen como Dn (registros de datos) o An (registros de dirección), donde n es un número que va de 0 a 7. Un ejemplo de este direccionamiento sería: MOVE.L A1,D2 que copiaría los 32 bits del registro A1 en el registro D2. Si la longitud fuera word sólo se copiarían los 16 bits menos significativos del registro. La longitud bytes no se puede utilizar con registros de dirección. 6.2 Direccionamiento absoluto En este tipo de direccionamiento el operando viene dado por su dirección absoluta. El operando se escribe simplemente como un número o como una etiquete absoluta. Ejemplo: MOVE.L 1000,D2 en donde se copiará el contenido de la posición de memoria 1000 en D Direccionamiento inmediato Este modo de direccionamiento permite que el valor del operando esté en la misma instrucción y por tanto solo es válido para los operandos fuente. Se utiliza poniendo el símbolo # delante de un número o de un símbolo absoluto. Ejemplo: MOVE #10,D1 El posee otros modos de direccionamiento (hasta un total de catorce), pero serán descritos en otra práctica mas avanzada de programación en lenguaje ensamblador. 6.4 Indirecto a registro de dirección Este tipo de direccionamiento se denomina indirecto porque en el registro está la dirección en memoria del operando. Este tipo de direccionamiento se utiliza escribiendo el nombre del registro entre paréntesis. Ejemplo: CLR.B (A2) borrará el byte que haya en la posición especificada por A Indirecto a registro de dirección con desplazamiento Es el mismo tipo de direccionamiento anterior pero modificando la dirección añadiéndole un desplazamiento de 16 bits con signo. Ejemplo: CLR.B -10(A2) 12
17 si el registro A2 contiene el valor 100, borrará el byte que haya en la dirección Indirecto a registro de dirección con desplazamiento e índice Este modo es similar al anterior pero además se le suma el valor de otro registro y el desplazamiento pasa a ser de solamente 8 bits. La extensión del registro índice puede ser.w o.l. Ejemplo: CLR.B 10(A2,D2.L) 6.7 Indirecto a registro de dirección con postincremento La dirección del operando está en un registro de dirección. Después de que se haya utilizado esta dirección el contenido del registro de dirección se incrementará en 1, 2 ó 4 dependiendo de si el tamaño de la instrucción es.b,.w o.l. Ejemplo: CLR.L (A5)+ 6.8 Indirecto a registro de dirección con predecremento La dirección del operando está en un registro de dirección. Antes de utilizar esta dirección se decrementará su valor dependiendo del tamaño de la instrucción como en el direccionamiento anterior. Ejemplo: CLR.L -(A1) 7 Programa simulador SIM68K El programa simulador tiene como objetivo la simulación del comportamiento de un microprocesador Motorola en un entorno compuesto por una determinada configuración de memoria. La distribución de memoria tiene un límite de 32 kbytes en total, que pueden configurarse de la forma que se desee, formando varios bancos que no tienen porque ser consecutivos. Por defecto, se establece una configuración totalmente compatible con el TM-683. En esta práctica conservaremos dicha configuración. Figura 6: menú principal Las directivas generales de uso del simulador son las siguientes: 1. El simulador trabaja con ficheros de datos en formato S28, propio de Motorola. Permite cargar el fichero, ejecutarlo de manera continua o paso a paso, disponer puntos de ruptura, y examinar y alterar el contenido de la memoria y de los 13
18 registros. También es capaz de generar ficheros en formato S28 a partir del contenido actual de la memoria. 2. La interfaz con el usuario está basada en un sistema de menús y submenús que organizan los comandos en distintos grupos según su función. Cuando se selecciona un comando del menú (vídeo inverso), aparece en pantalla una línea con una breve descripción de su función (figura 6). 3. Como norma general para todos los menús, un comando puede activarse de dos formas: Pulsando la inicial del nombre del comando, con lo cual éste se ejecuta de forma inmediata. Situando el cursor (vídeo inverso) sobre el comando deseado y pulsando la tecla ENTER. En este caso la ejecución comienza cuando se pulsa la tecla ENTER. Para desplazar el cursor a través de las distintas entradas del menú se emplean las teclas del cursor y. 4. Desde cualquier menú se puede retornar al menú precedente pulsando la tecla ESC. Si se pulsa ESC desde el menú principal, la ejecución del simulador, previa confirmación del usuario, finaliza. 5. Con la tecla ESC también se puede abortar cualquier opción o comando. 6. En caso necesario, también es posible finalizar la ejecución del simulador desde cualquier nivel de menú pulsando la combinación de teclas ALT-X. 7.1 Menús empleados durante la Práctica DIAGRAMA PARCIAL DE MENÚS DE SIM68K Ejecución Sistema Ejec. Paso/paso P.ruptura Opciones Directorio Lee Añadir Eliminar Selec. Restau. Ver Figura 7: diagrama de menús empleados. A continuación se van a detallar los comandos que van a utilizarse durante esta Práctica. Estos quedan resumidos en la figura 7. El simulador posee muchos más comandos cuyas descripciones, en caso de interés, pueden encontrarse en el Manual del Instrucciones del TM Comandos relacionados con la carga del programa Para cargar el programa se emplean los comandos del submenú Sistema. A este submenú se accede desde el menú principal pulsando S o seleccionando Sistema con la teclas del cursor y pulsando a continuación ENTER. Dentro de este submenú emplearemos los siguientes comandos: Lee : el simulador solicitará el nombre del fichero a leer. Si el fichero se encuentra en el directorio de trabajo, bastará con introducir el nombre del mismo (la extensión es opcional). En caso contrario, será necesario dar la ruta completa (no se admite el uso de. ni.. ). 14
19 Directorio : si no se recuerda el nombre del fichero, se puede ejecutar este comando. El simulador solicitará la máscara a emplear y listará aquellos ficheros que respondan a dicha máscara. 7.3 Comandos relacionados con la ejecución del programa Para ejecutar el programa se emplean los comandos del submenú Ejecución. A este submenú se accede desde el menú principal pulsando E o seleccionando Ejecución con la teclas del cursor y pulsando a continuación ENTER. Dentro de este submenú emplearemos los siguientes comandos: Ejec. : ejecución del programa de manera continua hasta que se alcance la dirección final de ejecución, se alcance un punto de ruptura o se produzca en error. Paso/paso : el programa es detenido tras la ejecución de cada instrucción. P.ruptura : introduce en un nuevo submenú que permite gestionar los puntos de ruptura. Opciones : este comando abre un diálogo que permite definir el comportamiento del simulador durante la ejecución del programa Ejecución continua Al seleccionar el comando Ejec. el simulador solicitará dos direcciones. Ambas se introducirán en hexadecimal y seguidas de ENTER: 1. Dirección inicial: dirección a partir de la cual comienza la ejecución del programa. Si no se introduce ninguna, la ejecución comenzará en la dirección apuntada por el contador de programa (PC). 2. Dirección final: dirección en la que, una vez alcanzada, se detendrá la ejecución del programa. Si no se introduce ninguna, el programa no se detendrá a no ser que alcance algún punto de ruptura o se produzca alguna interrupción. Si está activada la opción correspondiente, se mostrará en pantalla en vídeo inverso la instrucción ejecutada en cada instante Ejecución paso a paso Al seleccionar el comando Paso/paso, el simulador ejecutará una sola instrucción cada vez y se detendrá a continuación para permitir la inspección y/o modificación de los registros del procesador y la memoria. El simulador solicitará la dirección inicial, que se introduce en hexadecimal y seguida de ENTER. Si no se introduce ninguna, la ejecución comienza en la dirección apuntada por el contador de programa (PC). Una vez introducida aparecerá una lista de comandos asociados a una letra. Estos comandos se ejecutan pulsando la tecla asociada. Serán de nuestro interés: [Espacio]: ejecutar la siguiente instrucción. [R]: modificar/visualizar registros. [M]: modificar/visualizar la memoria. 15
20 [ESC]: finalizar la ejecución. [G]: ejecutar de forma continua. El usuario debe introducir la dirección inicial. Si no introduce ninguna, se continúa a partir de la dirección contenida en el registro del contador de programa (PC). [S]: permite seleccionar el registro de direcciones a utilizar como puntero de pila en la ventana de visualización de la pila. 7.4 Puntos de ruptura Un punto de ruptura es una condición que el usuario puede establecer para interrumpir la ejecución del programa cuando pasa por determinada dirección y/o se cumple determinada condición. En el caso del TM-683 cada punto de ruptura puede tener asociados hasta cuatro direcciones y cuatro contadores, uno por cada dirección. El punto de ruptura puede estar activo o no. Cuando, durante la ejecución, el simulador pasa por alguna de las direcciones asociadas a un punto de ruptura activo, el contador correspondiente se decrementa: si la cuenta llega a cero en todos sus contadores la ejecución se detiene. No es obligatorio asociar todas las direcciones, en ese caso sólo se tienen en cuenta los contadores de las direcciones asociadas. Una vez que se ha detenido la ejecución es necesario restaurar los contadores para que el punto de ruptura vuelva a estar activo. Para gestionar los puntos de ruptura se dispone de los siguientes comandos dentro del submenú P.ruptura : Añadir : añadir nuevos puntos de ruptura. Eliminar : eliminar puntos de ruptura. Selec. : activar o desactivar puntos de ruptura. Restau. : restaurar los contadores de los puntos de ruptura. Ver : visualiza los puntos de ruptura establecidos y su estado actual. 7.5 Opciones Este comando abre un diálogo donde es posible activar o desactivar las siguientes opciones: Ejecución paso a paso por las subrutinas: tiene utilidad cuando se ejecuta un programa paso a paso. Cuando está activa, un salto a subrutina nos introduce en la misma, de forma que seguimos su ejecución paso a paso; cuando no lo está, la subrutina se ejecuta, pero su ejecución no es visible. Ejecución de Rutinas de Servicio de Excepción (ESR): si está activa, permite la ejecución de la rutina de servicio a la excepción, si no, sólo se presenta un mensaje alertando de la situación. Ejecución paso a paso de las ESR: igual que la ejecución paso a paso de las subrutinas, pero en este caso con las ESR. Traza activada: activa o desactiva el volcado de nuestras acciones a un fichero de traza. 16
21 Refresco de la pantalla: activa o desactiva el refresco de pantalla, que muestra en cada momento la instrucción que se está ejecutando. 8 Ejercicios Prácticos Propuestos Se trata, para los ejercicios propuestos, de: 1. Diseñar y desarrollar los programas. 2. Introducir los programas en el ordenador con la ayuda de un procesador de textos. 3. Compilar los programas. 4. Unir sus partes (si las tuvieran) con el programa LNK68K. 5. Simular su comportamiento. 6. Ejecutar en el TM683 y comprobar mediante el programa de control que la ejecución ha sido satisfactoria. 8.1 Programa para calcular la longitud de una cadena alfanumérica El programa habrá de determinar la longitud de una cadena alfanumérica de bytes almacenada en memoria mediante una directiva DC apropiada. El final de la cadena estará marcado por un byte de valor cero. El resultado, de tamaño palabra, se almacenará en memoria en un espacio reservado mediante una directiva DS apropiada. La idea es programar un bucle que recorra la cadena hasta encontrar el carácter nulo al final de la misma. Se recomienda cargar la dirección inicial de la cadena en un registro de direcciones y emplear el direccionamiento indexado con postincremento para ir recorriendo la cadena en un bucle. 8.2 Programa para capitalizar una cadena alfanumérica Partiendo del programa anterior, hacer las modificaciones precisas para conseguir convertir en mayúsculas todas las letras de la cadena. Para ello habrá que determinar que caracteres son letras minúsculas (códigos entre $61 y $7A) y poner a cero su bit Programa para hallar la suma de un conjunto de datos Programar un bucle para que sume un vector de datos de tamaño palabra de dimensión conocida almacenados en memoria mediante una directiva DC apropiada y almacene el resultado en una posición de memoria reservada mediante una directiva DS apropiada. 17
22 ABSOLUTE ORG $25000 STRLRN LEA CADENA,A0 CLR D0 BUCLE TST.B (A0)+ BEQ FIN ADDQ #1,D0 BRA BUCLE FIN MOVE D0,LGTD TRAP #5 CADENA DC.B 'Mi cadena',0 LGTD DS.W 1 END ABSOLUTE ORG $25000 TOUPPER LEA CADENA,A0 BUCLE MOVE.B (A0)+,D0 BEQ FIN CMP.B #$61,D0 BCC NOLOWER CMP.B #$7A,D0 BHI NOLOWER AND.B #$DF,D0 MOVE.B D0,-1(A0) NOLOWER BRA BUCLE FIN TRAP #5 CADENA DC.B 'Mi cadena',0 END ABSOLUTE NDATOS EQU 5 ORG $25000 SUMA LEA DATOS,A0 CLR D0 MOVE #NDATOS,D1 BUCLE ADD (A0)+,D0 SUBQ #1,D1 BNE BUCLE MOVE.B D0,RSLTD TRAP #5 RSLTD DS.W 1 DATOS DS.W 256,15,6,168,500 END 18
9. Lenguaje ensamblador
9. Lenguaje ensamblador Lenguaje máquina: un programa o secuencia de instrucciones viene dado por una secuencia de códigos binarios. Lenguaje ensamblador: secuencia lógica de sentencias pertenecientes
El microprocesador de 16 bits MC68000
El microprocesador de 16 bits MC68000 INTRODUCCIÓN El microprocesador MC68000 fue presentado por Motorola en 1979 como el primero de una amplia familia de periféricos, microprocesadores y microcontroladores
Tema 1: Microprocesador MC68000
- Descripción externa - Arquitectura interna - Organización de memoria - Formato instrucciones - Modos de direccionamiento - Juego de instrucciones - Directivas de ensamblador y entorno de program. Descripción
MODOS DE DIRECCIONAMIENTO
MODOS DE DIRECCIONAMIENTO A algunos estudiantes no les parece muy importante el tema de los modos de direccionamiento. Si el objetivo último y principal es procesar de alguna manera (sumar, restar, desplazar,
ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES II BOLETÍN 4 MICROPROCESADOR MC 68000
1.- Partiendo de la siguiente situación inicial, donde se indica el contenido de ciertos registros y direcciones de memoria: Dirección Contenido Registro Contenido 800 08 A0 0000 0802 801 03 A1 0000 0804
Introducción a la Computación. Capítulo 10 Repertorio de instrucciones: Características y Funciones
Introducción a la Computación Capítulo 10 Repertorio de instrucciones: Características y Funciones Que es un set de instrucciones? La colección completa de instrucciones que interpreta una CPU Código máquina
5 - Lenguaje Ensamblador
PROGRAMACIÓN EN ENSAMBLADOR 62 Fuente.asm,.s51,... Fases del Ensamblado Ensamblado Objeto.obj,.r03 Objeto Enlazado Ejecutable.hex,.bin Librerías Eprom Simulador Emulador Monitor PROGRAMACIÓN EN ENSAMBLADOR
8.4. El software en los μprocesadores
8.4. El software en los μprocesadores Ejemplo de comandos de la CPU: Tarea: Sumar dos números A y B. Suponer los datos A y B almacenados en las posiciones 1000 2 y 1010 2 respectivamente. El resultado
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Escriba un programa en ensamblador del MIPS 32 para calcular la suma de los 100 primeros números naturales. El programa
Guía práctica lenguaje ensamblador
Guía práctica lenguaje ensamblador (c) Francisco Charte Ojeda Introducción Qué es el lenguaje ensamblador? Aplicaciones de la programación en ensamblador El lenguaje ensamblador de los x86 8, 16, 32 y
PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88
PROGRAMACIÓN EN ASSEMBLER SIMULADOR MSX88 REPASO CONCEPTO DE PROGRAMA ANTES se tenían sistemas cableados Datos Secuencia de funciones aritmético/lógicas Resultados Programación en hardware: cuando cambiamos
Arquitectura Interna del 8088
Arquitectura Interna del 8088 Intel diseñó el 8088/8086 para realizar al mismo tiempo las principales funciones internas de transferencia de datos y búsqueda de instrucciones. Para conseguir esto, el 8088
INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA PRÁCTICA 1: ESTRUCTURA INTERNA DE UNA CPU.
INFORMÁTICA INDUSTRIAL. 3º INGENIERÍA TÉCNICA ELECTRÓNICA PRÁCTICA 1: ESTRUCTURA INTERNA DE UNA CPU. OBJETIVOS: En esta práctica se pretende que el alumno aprenda la estructura y funcionamiento de un procesador
GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo:
Cuestionario Modulo 1.1 GLOSARIO 1. Qué es bit y byte? Bit: Es la unidad mínima de información. Puede ser 0 o 1. Byte: Es el conjunto de 8 bits. Ejemplo: 1001 0110. 2. qué es Dato? Definición: Es toda
El Diseño de un Lenguaje Máquina
Arquitectura de Ordenadores Juego de Instrucciones del Procesador Intel Pentium Abelardo Pardo [email protected] Universidad Carlos III de Madrid Departamento de Ingeniería Telemática El Diseño de un Lenguaje
Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos
TEMA 33 Programación en lenguaje ensamblador. Instrucciones básicas. Formatos. Direccionamientos Mª Luisa Garzón Villar Cuerpo de Profesores de Enseñanza Secundaria Volumen II. Informática ÍNDICE SISTEMÁTICO
Los números naturales y enteros en el 80X86 y en LAN
Los números naturales y enteros en el 80X86 y en LAN 1. Los números naturales en el 80X86/TASM Representación Sistema de representación En el 80X86 (y en la mayoría de los procesadores), los números naturales
Introducción al simulador
Departamento de Automática 1 / 17 Índice Proyecciones de dispositivos de entrada/salida Registros Instrucciones 2 / 17 Arquitectura del simulador Sitio web https://parraman.github.io/asm-simulator/ Proyecto
TEMA 5 JUEGO DE INSTRUCCIONES DE UN COMPUTADOR
TEMA 5 JUEGO DE INSTRUCCIONES DE UN COMPUTADOR 1. PROPIEDADES DEL JUEGO DE INSTRUCCIONES DE UN COMPUTADOR. 2. MODOS DE DECCIONAMIENTO. Inmediato. Directo. Absoluto. Relativo. Indirecto. Implícito. Instrucciones
Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales
UNA / AREA TRANSDEPARTAMENTAL DE ARTES MULTIMEDIALES Licenciatura en Artes Multimediales Informática General 2018 Cátedra: Valeria Drelichman, Pedro Paleo, Leonardo Nadel, Norma Morales JavaScript - Programación
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador
Ejercicios del Tema 3. Fundamentos de la programación en ensamblador Ejercicio 1. Dada la siguiente expresión de un lenguaje de alto nivel int a = 6; int b = 7; int c = 3; int d; d = (a+b) * (a+b); Indique
Programación en ensamblador edición 2009
Agradecimientos Programación en ensamblador edición 2009 Introducción Microprocesadores Sistemas hardware y sistemas operativos Objetivos de este libro (c) Francisco Charte Ojeda 1. Microprocesadores y
Tema 2: Lenguaje máquina. La interfaz entre el hardware y el software
Tema 2: Lenguaje máquina La interfaz entre el hardware y el software 1 Índice Introducción. Formatos de Instrucción. Modos de Direccionamiento. Ortogonalidad y Regularidad. Frecuencia de Utilización de
Maquina de Turing. 5. Fundamentos de algoritmos. Turing TURING TURING 10/08/2010. MI Elizabeth Fonseca Chávez
Maquina de Turing 5. Fundamentos de algoritmos MI Elizabeth Fonseca Chávez matemático inglés Alan Turing Turing Definición de algoritmo: conjunto ordenado de operaciones que permite hallar la solución
Estructura y tecnología de computadores - prácticas en ensamblador
Estructura y tecnología de computadores - prácticas en ensamblador Agradecimientos (c) Francisco Charte Ojeda Introducción Código fuente 1. Introducción a los microprocesadores 1.1. El sistema microcomputador
Un. VIII. Generación de Código Objeto
Un. VIII. Generación de Código Objeto 8.1 Lenguaje Máquina Es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. El lenguaje máquina solo es entendible por las computadoras.
Práctica ENS:Ensamblar y depurar
Práctica ENS:Ensamblar y depurar 1. Objetivos Familiarizarse con el manejo básico de la herramienta µvision3 con programas escritos en lenguaje ensamblador. Depurar los programas escritos en lenguaje ensamblador
Tema 4: Microprocesador MC68000 Bibliografía
Bibliografía SISTEMAS DIGITALES: Ingeniería de los microprocesadores 68000. Antonio García Guerra y Enrique Fenoll Comés Capítulos 4,5 y 6 LA FAMILIA DEL MC68000 Julio Septién et all Capítulos 2,5 y 6
SISTEMAS OPERATIVOS MANUAL DE USUARIO SIMULACIÓN GRÁFICA DE UN COMPUTADOR FICTICIO DE FUNCIONAMIENTO BÁSICO CHMÁQUINA
SISTEMAS OPERATIVOS 1 MANUAL DE USUARIO SIMULACIÓN GRÁFICA DE UN COMPUTADOR FICTICIO DE FUNCIONAMIENTO BÁSICO CHMÁQUINA CONTENIDO OBJETIVO.. 3 2 OPERACIONES DEL CHMÁQUINA.3 PANTALLA PRINCIPAL DEL CHMÁQUINA
Anexo 2. Para los nombres de variable se aplican las siguientes normas:
UNIVERSIDAD DE CHILE PROFESORA: SARA ARANCIBIA C Nombres de variable Anexo 2 Para los nombres de variable se aplican las siguientes normas: El nombre debe comenzar por una letra. Los demás caracteres pueden
Para cada Instrucción del µp hay un Mnemónico. Existen casi tantos lenguajes ensamblador como µps.
7-1 Para cada Instrucción del µp hay un Mnemónico Ej: 01 000 001 LD B, C Existen casi tantos lenguajes ensamblador como µps. Ejemplo: LD A, (OPER1) LD B, A LD A, (OPER2) ADD A, B LD (SUMA), A Qué son OPER1,
Curso sobre Microcontroladores Familia HC9S08 de Freescale
Curso sobre Microcontroladores Familia HC9S08 de Freescale Por Ing. Daniel Di Lella EduDevices www.edudevices.com.ar e-mail: [email protected] Responsable Area Educación ELKO / ARROW www.elkonet.com
LA CESIUS. Dónde estamos?
LA CESIUS ESTRUCTURA Y PROGRAMACIÓN Dónde estamos? Estructura de J. von Neumann Historia 1941 - Plankalkül K. Zuse, ingeniero (GE, 1910/95) 1943 - ENIAC 1er comp. controlada por programa (Z3 1941) 1952
LA CESIUS. Dónde estamos?
JOSÉ ÁNGEL ACOSTA RODRÍGUEZ INFORMÁTICA CURSO 2009/0 LA ESTRUCTURA Y PROGRAMACIÓN Dónde estamos Estructura de J. von Neumann Historia K. Zuse, ingeniero (GE, 90/95) 94 Plankalkül er comp. controlada por
Programación en Visual Basic Ricardo Rodríguez García
Manual Básico de Programación en Visual Basic 1.- Estructura de un proyecto Visual Basic Los programas o aplicaciones desarrolladas en Visual Basic van a constituir un único paquete que denominaremos proyecto.
Contenido. Conjunto de Instrucciones. Formato de la Instrucción. Instrucciones de 1 byte. Formato de la Instrucción 28/09/2011
1 ontenido 2 UNIDAD 5 EL LENGUAJE DE ENSAMBLADOR DEL Z80 onjunto de instrucciones Tipos de instrucciones Modos de direccionamiento El ensamblador del Z80 El simulador AVOET Implementación de un sistema
TEMA 1. PROGRAMACIÓN DE UN COMPUTADOR
Tema 1. Programación de un computador TEMA 1. CIÓN DE UN COMPUTADOR 1. CONCEPTO DE 2. LENGUAJES DE CIÓN 2.1. LENGUAJE MÁQUINA 2.2. LENGUAJE ENSAMBLADOR 2.3. LENGUAJE DE ALTO NIVEL 3. ALGORITMOS. REPRESENTACIÓN
Conceptos. Generales ALGORITMOS
Conceptos 1 Generales ALGORITMOS Que es un Algoritmo? 2 Es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos
PRÁCTICA 4: MOTOROLA 68000
PRÁCTICA 4: MOTOROLA 68000 1. OBJETIVOS 1.1 Manejo del software de simulación IDE68k. 1.2 Comprensión y manejo de excepciones. 1.3 Programación el lenguaje ensamblador. 2. INTRODUCCIÒN TEÓRICA 2.1 Introducción
Informática General Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales
Informática General 2018 Cátedra: Valeria Drelichman Pedro Paleo Leonardo Nadel Norma Morales Qué es JavaScript? Se trata de un lenguaje de tipo script compacto, basado en objetos y guiado por eventos
MOVE.W #$6728,D0 MOVE.W #100,D1 BUCLE SUB.W #$02A6,D0 SUBQ.W #1,D1 BNE BUCLE END D0 100 D1 (D0)-678 D0 (D1)-1 D1. No (D1)==0?
INGENIERÍA TÉCNICA en INFORMÁTICA de SISTEMAS y de GESTIÓN de la UNED ASIGNATURA: ESTRUCTURA Y TECNOLOGÍA DE COMPUTADORES I Tutoría del Centro Asociado de Plasencia Señale cuál es el contenido del registro
Todo programa en 'C' consta de una o más funciones, una de las cuales se llama main.
LENGUAJE C CARACTERISTICAS DEL LENGUAJE 'C' El lenguaje 'C' se conoce como un lenguaje compilado. Existen dos tipos de lenguaje: interpretados y compilados. Los interpretados son aquellos que necesitan
$0 Representa al parámetro cero o nombre del programa $1 Representa al parámetro uno $2 Representa al parámetro dos
PROGRAMACIÓN DE SHELL SCRIPTS EN LINUX El shell es un intérprete de órdenes, pero el shell no es solamente eso; los intérpretes de órdenes de Linux son auténticos lenguajes de programación. Como tales,
FUNDAMENTOS DE INFORMÁTICA
FUNDAMENTOS DE INFORMÁTICA Tema 1 Introducción a la Programación en Visual Basic Departamento de Ingeniería de Sistemas y Automática Universidad de Vigo undamentos de Informática. Departamento de Ingeniería
LECTURAS SOBRE COMPUTADORAS DIGITALES LECTURA Nº4 MATERIA: ARQUITECTURA DE LAS COMPUTADORAS 1.- REPERTORIO DE INSTRUCCIONES DE LA PETICOMPUTADORA
1 - L4 LECTURAS SOBRE COMPUTADORAS DIGITALES LECTURA Nº4 MATERIA: ARQUITECTURA DE LAS COMPUTADORAS 1.- REPERTORIO DE INSTRUCCIONES DE LA PETICOMPUTADORA Decimal Binario Mnemónico Función que verifica 0
Capítulo 9 Archivos de sintaxis
Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta
EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES
11 de febrero de 2010 16h. Escuela Técnica Superior de Ingeniería Informática Camino del Cementerio s/n. 47011 Valladolid EXAMEN ORDINARIO DE ORGANIZACIÓN DE COMPUTADORES NOTA: Los alumnos con las prácticas
7. Modos de direccionamiento
El MC68000 permite 12 modos de direccionamiento para localizar a los operandos. Podemos dividir los modos de direccionamiento en 5 grupos: Directo de registro : el operando es el dato contenido en un registro
TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL
TEMA 4 ESTRUCTURA VON-NEUMANN DEL COMPUTADOR DIGITAL 1. ESTRUCTURA GENERAL DE UN COMPUTADOR VON-NEUMANN. Unidad de memoria (UM) Unidad Aritmético Lógica (UAL) Unidad de control (UC) Buses. Unidades de
Unidad Nº II Capacidad de la unidad central. de procesamiento. Instituto Universitario Politécnico. Santiago Mariño
Instituto Universitario Politécnico Santiago Mariño Unidad Nº II Capacidad de la unidad central de procesamiento Organización de instrucción de máquina Cada instrucción requiere la información que necesita
CS2: Unidad de datos (UD)
S2: Unidad de datos (UD) ambios respecto al S1: Ancho datos: 12 bits Ancho direcciones: bits Rotación del registro A con carry LS, DS, IS TP, TIR, TSP W4, W, R 4 SP[] MAR[] IR 7-0 IR[12] IR 11- P[] DB
Lógica: Algoritmo: Archivo: Base de datos: Bit:
Lógica: Algoritmo: Archivo: Base de datos: Bit: 1 LÓGICA: Es una secuencia de operaciones realizadas por el hardware o por el software. Lógica del hardware, Son los circuitos y Chips que realizan las operaciones
Fundamentos de Programación
Fundamentos de Programación COMENTARIOS Microsoft Visual Basic interpreta que todo lo que está a la derecha del carácter ( ) en una línea cualquiera de programa es un comentario y no ejecuta acción alguna.
Laboratorio de Arquitectura de Redes. Datos en lenguaje C
Laboratorio de Arquitectura de Redes Datos en lenguaje C Datos en lenguaje C Introducción Tipos de datos básicos y modificadores Tipos de datos enteros Tipos de datos reales Tamaño y rango de los datos
Ejercicios del tema 4. El procesador
Ejercicios del tema 4. El procesador Estructura del procesador elemental WepSIM Address Bus Data Bus Control Bus C0 Ta Internal Bus RA RB RC LC MAR T9 Memory MRdy BE ADDR DATA R W A31-A0 BE3-BE0 D31-D0
FUNCIONAMIENTO DE LA UNIDAD DE CONTROL DEL PROCESADOR
MICROINSTRUCCIONES FUNCIONAMIENTO DE LA UNIDAD DE CONTROL DEL PROCESADOR La memoria de las maquinas IAS consiste en 1000 posiciones de almacenamiento, llamadas palabras, de 40 digitos binarios (bits) cada
Arquitectura de Computadores II Clase #3
Arquitectura de Computadores II Clase #3 Facultad de Ingeniería Universidad de la República Instituto de Computación Curso 2010 Veremos Registros Repertorio de instrucciones Modos de direccionamiento El
Expresiones y Operadores
Lenguaje C Expresiones y Departamento de Electrónica Fundación San Valero básicos: Operador de asignación: = No es del todo equivalente al igual matemático. A la derecha siempre estará el valor a asignar,
Este método de diseño de algoritmos en etapas, yendo de los conceptos generales a los de detalle, se conoce como método descendente (top-down).
PLANTEMAIENTO DEL PROBLEMA Identificación de entradas y salidas Un algoritmo puede ser definido como la secuencia ordenada de pasos, sin ambigüedades, que conducen a la resolución de un problema dado y
Estructura de Computadores. Problemas de Instrucciones y Direccionamientos
Estructura de Computadores. Problemas de Instrucciones y Direccionamientos Departamento de Arquitectura y Tecnología de Sistemas Informáticos Octubre 2009 1. Sea un computador con palabras y direcciones
Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria
1.2. Jerarquía de niveles de un computador Qué es un computador? Sistema electrónico digital (binario) que procesa datos siguiendo unas instrucciones almacenadas en su memoria Es un sistema tan complejo
Sistemas con Microprocesadores I
Sistemas con Microprocesadores I 1 Microcontroladores Introducción Harvard vs. von-neumann Clasificación del procesador Segmentado o Pipeline Ortogonal vs. No ortogonal 2 Microcontroladores PIC Siglas
Máster universitario en automatización de procesos industriales
DEPARTAMENTO DE ELECTRÓNICA Máster universitario en automatización de procesos industriales Departamento de Electrónica Universidad de Alcalá DEPARTAMENTO DE ELECTRÓNICA CX Programmer 2ª parte 3 Las tareas
Seminario 1. Excel Básico
Seminario 1. Excel Básico Contenidos 1. Qué es Microsoft Excel? 2. Identificar celdas 3. La barra de herramientas de acceso rápido y la cinta de opciones 4. Abrir y guardar libros de trabajo 5. La ayuda
APENDICE B Ensamblador IASM11/Simulador AVSIM11
APENDICE B Ensamblador IASM11/Simulador AVSIM11 El programa ensamblador IASM11, es una herramienta que permitirá editar y ensamblar programas para el microcontrolador HC11. Este programa corre bajo la
Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017
Práctica de Arquitectura de Computadores Sistemas de Entrada/Salida: Entrada/Salida Programada Curso 2016/2017 Antonio Pérez Ambite Santiago Rodríguez de la Fuente Departamento de Arquitectura y Tecnología
Estructura y Tecnología de Computadores. Módulo C. Arquitectura del procesador. Tema 4. Modos de direccionamiento y tipos de datos
1 Estructura y Tecnología de Computadores Módulo C. Arquitectura del procesador Tema. Modos de direccionamiento y tipos de datos José Manuel Mendías Cuadros Dpto.. Arquitectura de Computadores y Automática
INTRODUCCIÓN A IMPRESS 1. INTRODUCCIÓN
X INTRODUCCIÓN A IMPRESS 1. INTRODUCCIÓN Se puede definir Impress como una aplicación dirigida fundamentalmente a servir de apoyo en presentaciones o exposiciones de los más diversos temas, proyectando
Conceptos de Arquitectura de Computadoras Curso 2015
PRACTICA 1 Assembly, Instrucciones, Programas, Subrutinas y Simulador MSX88 Objetivos: que el alumno Domine las instrucciones básicas del lenguaje assembly del MSX88. Utilice los diferentes modos de direccionamiento.
MEMORIA EJERCICIO 1 EJERCICIO 2
MEMORIA EJERCICIO 1 Determinar el mapa de memoria de un procesador con 16 señales de bus de direcciones, una señal de asentimiento de bus de direcciones AS, una señal de lectura R, otra de escritura W
Programación de Microcontroladores Parte II / TEN. Noguera Guillermo Sebastián Nuestros primeros programas en Assembler para PICs
Programación de Microcontroladores Parte II / TEN. Noguera Guillermo Sebastián Nuestros primeros programas en Assembler para PICs Con el objetivo de adquirir una metodología clara en la programación de
Prefijo Símbolo Valor Sistema de unidades kibi kilo mebi mega gibi giga tebi tera 2^10 10^3 2^20 10^6 2^30 10^9 2^40 10^12
Unidades y funciones matemáticas usadas en el texto Las unidades básicas de almacenamiento u organización de la información son el bit (símbolo b) Y el byte (símbolo B). Un bit es un dígito binario, es
Primer Microprocesador: 4004, Intel, año bits de ancho de palabra de datos Intel 8 bits dir. 64K Z80
2-1 Primer Microprocesador: 4004, Intel, año 1971. 4 bits de ancho de palabra de datos. 1971 Intel 4 bits dir. 4K 1972 Intel 8 bits dir. 16K 1973 Intel 8 bits dir. 64K 1977 Intel 8 bits dir. 64K 1978 Intel
Tema 3. Estructuras de control
Tema 3. Estructuras de control 3.1. Secuencial 3.2. Selección 3.3. Repetición 2 Objetivos Objetivos del tema: Conocer y saber la utilidad de las tres estructuras de control (secuencial, alternativa y repetitiva)
1. INTRODUCCIÓN A WRITER
1. INTRODUCCIÓN A WRITER Con el nacimiento de los ordenadores y posteriormente de las aplicaciones para el tratamiento de texto, se ha ido desbancando a las tradicionales máquinas de escribir, cuyo uso
EJECUCIÓN DE INSTRUCCIONES
EJECUCIÓN DE INSTRUCCIONES Miguel Ángel Asensio Hernández, Profesor de Electrónica de Comunicaciones. Departamento de Electrónica, I.E.S. Emérita Augusta. 06800 MÉRIDA. La función básica que realiza un
INSTRUCCIONES DE ENSAMBLADOR
MPLAB INSTRUCCIONES DE ENSAMBLADOR ORGANIZACIÓN de la MEMORIA Dentro del PIC16F877 se distinguen tres bloques de memoria. Memoria de programa En sus 8192 posiciones (8K) contiene el programa con las instrucciones
MICROPROCESADORES. Ejercicio de evaluación continua: E/S del MC68000
MICROPROCESADORES Ejercicio de evaluación continua: E/S del MC68000 Un determinado sistema central dispone de un enlace vía radio con diferentes estaciones remotas con los que intercambia cierta información.
Práctica 3 - Arquitectura del CPU
Práctica 3 - Arquitectura del CPU Organización del Computador 1 Primer cuatrimestre de 2012 Ejercicio 1 A partir de cada uno de los siguientes vuelcos parciales de memoria y estados del procesador, realizar
Lección 2 Introducción al lenguaje C
Lección Introducción al lenguaje C Decimal Binario Hexadecimal A B C D E F Octal Equivalencia entre decimal, binario, hexadecimal y octal. Código ASCII (American Standard Code for Information Interchange)
PRÁCTICA. Estructura de Computadores Grado en Ingeniería Informática Estudios de Informática, Multimedia y Telecomunicación
PRÁCTICA Estructura de Computadores Grado en Ingeniería Informática 2014-02 Estudios de Informática, Multimedia y Telecomunicación Presentación La práctica que se describe a continuación es una práctica
