Práctica 6: Programación en ASM Orga 1

Documentos relacionados
Práctica 3 - Arquitectura del CPU

Organización de computadoras. Clase 6. Universidad Nacional de Quilmes. Lic. Martínez Federico

Práctica 4. Organización del Computador 1 12 de septiembre de Algunas consideraciones preliminares:

Ejercicios Práctica 4 Primer Cuatrimestre de de abril de 2008

Operaciones lógicas y repetición

Práctica 4 - Arquitectura CPU

Práctica 7 - Microarquitectura del CPU

Conceptos de Arquitectura de Computadoras Curso 2015

Organización de computadoras. Clase 8. Universidad Nacional de Quilmes. Lic. Martínez Federico

Práctica 4 - Microarquitectura del CPU

Los números naturales y enteros en el 80X86 y en LAN

Introducción Ejercicio Interrupciones Ejercicio Cierre. Entrada/Salida. Organización del Computador I. Departamento de Computación - FCEyN UBA

Organización del Computador I 1er. Parcial 17-Mayo Turno:

Práctica 8 - DMA y Almacenamiento Masivo

DESCRIPCIÓN ESPECÍFICA NÚCLEO: Núcleo Sector Comercio y Servicios.

RELACIÓN DE PROBLEMAS DE LÓGICA PROGRAMADA (TEMA 4)

Variables, expresiones y sentencias

ALGORÍTMICA. Dpto. Ingeniería de Sistemas y Automática Facultad de Ciencias Universidad de Valladolid.

El Diseño de un Lenguaje Máquina

ÁREA: MATEMÁTICAS NIVEL: 6º

Arquitectura del CPU. Organización del Computador 1 Verano 2016

Algoritmos. Medios de expresión de un algoritmo. Diagrama de flujo

Tema 6: Generación de código (parte 2)

Programación Estructurada

Álgebra vs Aritmética. ÁLGEBRA Álgebra Unidad 4. El lenguaje algebraico. TEMA 4: Polinomios. Expresiones algebraicas. Álgebra elemental.

Introducción a la programación: Algoritmos

SESIÓN DE EJERCICIOS E1

Práctica 5 - Memoria

Sistemas Operativos Avanzados Ejercicios del tema 1: Gestión de memoria

Exploiting... Stack Based Buffer Overflow

Lección 4: RELACIÓN DE DIVISIBILIDAD

Criterios de evaluación. Tema 1. Matemáticas. 5º Primaria

EJERCICIOS DE POLINOMIOS

1. Para los siguientes ejercicios haga una prueba de escritorio de los fragmentos de código y responda las preguntas cuál es la salida?

INTRODUCCIÓN A LA MATEMÁTICA FI- NANCIERA

Ensamblador. Introducción. Dpto. Física y Arquitectura de Computadores. Universidad Miguel Hernandez

Instrucciones del microprocesador

Algoritmo de Euclides

Organización de computadoras. Clase 4. Universidad Nacional de Quilmes. Lic. Martínez Federico

Funciones: Pasos por Referencia Recursividad

Repetición Condicional

Tema 2. Concepto de Algoritmo

4.- Leer tres números y escribirlos en orden decreciente

Tema 9. Algoritmos sobre listas. Programación Programación - Tema 9: Algoritmos sobre listas

Álgebra I Práctica 7 - Polinomios

Programación Estructurada

Programación de Computadores 4 Iteraciones y Decisiones. Prof. Javier Cañas. Universidad Técnica Federico Santa María Departamento de Informática

UNIDAD I CONCEPTOS GENERALES. Conceptos Generales Microprocesadores Otoño 2011

<tipo> Tipo de dato de los elementos del vector

Aritmética en Haskell

Nota: Se entiende que el usuario no introducirá un divisor igual a cero.

Construyendo Programas más Complejos

Valores Booleanos Interpretación #t Cierto #f Falso

Fundamentos de Informática 3. Construcción de Software

Tema 2. El lenguaje JAVA

Práctica 5 - Memoria Cache

Matemática y Razonamiento Lógico 1er. semestre EMT

Java para no Programadores

INTRODUCCION A LA PROGRAMACION (C.U.) PROGRAMACION (T.I.G.)

Centro Asociado Palma de Mallorca. Antonio Rivero Cuesta

Laboratorio de Arquitectura de Computadoras

Práctica 1. Introducción a la programación en ensamblador

2. EXPRESIONES 3. OPERADORES Y OPERANDOS 4. INDENTIFICADORES COMO LOCALIDADES DE MEMORIA

Fundamentos PHP. El término puntuación nos referimos a la sintaxis usada en PHP para la terminación de una línea de código (;)

Variables y tipos básicos 1. Definir una variable de tipo char. Convertirla a una variable de tipo entera e imprimir su valor asociado.

Ejercicios. 18 Capítulo 2 Divisores y múltiplos. 1. a. 38 = b. 284 = c =

Tema#2. Tipos de Datos 10

Operaciones con números racionales. SUMA/RESTA.

ARQUITECTURA VON NEUMANN

Microprocesadores. Introducción al Lenguaje C - Parte III. Prof. Luis Araujo. Universidad de Los Andes

FUNDAMENTOS DE INFORMÁTICA PARA INGENIERÍA INDUSTRIAL

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:

SESIÓN DE EJERCICIOS E1

Organización de Computadoras. Clase 6

Ejercicios del Tema 3. Fundamentos de la programación en ensamblador

(71.56) Programación. Diagrama

Actividades prácticas Programación en ensamblador de MIPS: ejercicios avanzados de desarrollo

Memoria Estática Punteros, Vectores y Matrices

Relaciones de orden. Definición 1. Llamamos conjunto ordenado a un par (E, ) donde E es un conjunto y es un orden definido en E

Polinomios y fracciones algebraicas. Resolución de ecuaciones polinómicas y racionales.

Codificación en C. Como pasar de Pseudocódigo a C (con pequeños trucos de C++)

Arquitectura de Computadores II Clase #3

PRIMER CURSO AÑO LECTIVO El módulo de la multiplicación es el 0 V F. 4. La división de Z si cumple la propiedad conmutativa V F

Funciones polinómicas

Guía práctica de estudio 06: Lenguaje binario

Tema 2 INSTRUCCIONES DE UN COMPUTADOR. Estructura de Computadores OCW_2015 Nekane Azkona Estefanía

Transcripción:

Matías Vargas Telles y Azul López basado en trabajo previo de Carlos A. Di Pietro Organización del Computador I DC - UBA 2 do Cuatrimestre de 2013

Dónde estamos?

Arquitectura Orga1 Operaciones: Manejo de memoria: { MOV } Aritmético - Lógicas: { ADD, SUB, AND, OR, CMP, ADDC, NEG, NOT } Llamadas a función : { CALL, RET } Saltos:{Jxxx}

Se puede o no se puede? Si quiero realizar alguna operación que no está entre las anteriores, por ejemplo la división entera, Debo cambiar de arquitectura?

El ejercicio Enunciado: Escribir un programa que calcule la división entera entre dos enteros sin signo de 16 bits. R1 contiene la dirección de memoria donde se aloja el dividendo. R2 contiene la dirección de memoria donde se aloja el divisor. R3 debe ser el registro en el que se devuelva el cociente (el resultado de la división). En caso de que el divisor sea 0, habrá que devolver 0.

Pseudocódigo Para qué? Qué es el Pseudocódigo? Es una descripción informal de alto nivel de la lógica detrás de un algoritmo Ventajas: Abstracción. No pensar en 2 problemas a la vez. Claridad. Independencia del lenguanje. 1 pseudocódigo, n lenguajes. Flexibilidad. Licencia poética

Pseudocódigo del Ejercicio 1 resultado = 0 if (divisor == 0): listo else: while (dividendo >= divisor): dividendo = dividendo - divisor resultado = resultado + 1 listo

Resolución del Ejercicio 1 ; R1 --> puntero al dividendo ; R2 --> puntero al divisor ; R3 --> cociente ; R4 --> dividendo ; R5 --> divisor inicio: MOV R3, 0x0000 ; R3 = 0 MOV R4, [R1] ; R4 = dividendo MOV R5, [R2] ; R5 = divisor CMP R5, 0x0000 ; divisor == 0? JE fin ciclo: CMP R4, R5 ; dividendo < divisor? JCS fin ; uso JCS en lugar de JL porque ; son enteros sin signo SUB R4, R5 ; R4 = R4-R5 ADD R3, 0x0001 ; R3 = R3+1 JMP ciclo fin:

Ej 1 cont Puedo usar el código anterior para... saber si un número es divisible por 7? saber si un número es divisible por 3? saber si un número es divisible por 2? Para el último caso existe una forma mejor. Cuál? Tarea. TIP: Listar los primeros 5 pares y buscar coincidencias. Luego, pensar el algoritmo

Ejercicio 2 Enunciado: Dado un vector de enteros sin signo de 16 bits. calcular la suma de todos sus valores sabiendo que: R1 contiene la dirección en memoria del vector El valor de la sumatoria debe almacenarse en R2. El vector termina en 0x0000h Si la sumatoria pudo completarse con éxito se debe setear R3 en 1. Caso contario deberá indicarse que hubo un error colocando un 0 en dicho registro y devolver el valor anterior al error.

1er Paso: Pseudocódigo sumatoria = 0 i = 0 mientras (vector[i]!= 0): sumatoria = sumatoria + vector[i] i = i + 1 devolver sumatoria Not Impressed

1er Paso: Pseudocódigo 2.0 sumatoria = 0 i = 0 mientras (vector[i]!= 0 & sumatoria <= 0xFFFF): tmp = sumatoria sumatoria = sumatoria + vector[i] i = i + 1 if (sumatoria > 0xFFFF): devolver tmp else: devolver sumatoria Ahora sí!

Vectores en memoria Cómo se representa un vector en Orga1?

Ej. 2 cont. Qué devuelve el código anterior en el siguiente caso? < 0x0001, 0xFFFF, 0x00AA, 0x0BB0, 0xD00D > < 0x0001, 0xFF00, 0x00FF, 0x00A0, 0x000D, 0x0001, 0xFFFF, 0x00BB, 0x000A, 0x000D > Puedo hacer algo para salvar irregularidades de este tipo? TIP: Si tan solo pudiera evitar los casos malos...

Hoy Conocimos un poco más de Orga1. Programamos en su lenguaje. Comprendimos (ojalá) la importancia del pseudocódigo como paso previo a la implementación Para profundizar más sobre ASM de Orga1: Hacer los ejercicios de tarea (Ver paridad sin algoritmo división, arreglar la sumatoria y suma de matrices) Hacer la práctica ad hoc. Consultar a los docentes.

Gracias, vuelva prontos