Programación en lenguaje ensamblador Instrucciones de maquina

Anuncio
Programación en lenguaje ensamblador
Instrucciones de maquina intel 80386
1.- Escriba un segmento de código assembler que sume los elementos de un vector
almacenado en palabras contiguas de memoria.
2.- Escriba código para sumar los primeros bytes de cada segmento de un 80386 con
1Mbyte de RAM operando en modo real. Determine el tamaño que debe tener el
resultado para que la suma no produzca rebalse.
3.- Escriba código assembler para multiplicar dos números de 64 bits cada uno.
4.- Escriba código assembler para sumar dos cadenas de longitud variable de valores
ASCII desempaquetados.
5.- Escriba código para convertir un numero de punto fijo almacenado en EAX a una
cadena de 8 caracteres ASCII que represente la configuración hexadecimal del mismo.
6.- Escriba código para convertir un numero de punto fijo almacenado en EAX a una
cadena de dígitos decimales ASCII que represente el valor decimal de dicho numero.
7.- Escriba código tal que dada una cadena de bytes en memoria, construya otra en base
a la primera pero cambiando los siguientes símbolos como se indica: '{' a '['; '}' a ']', '_' a
'-'; '$' a '&'; mayúsculas a minúsculas.
El código debe ser escrito de la manera mas eficiente posible.
8.- Escriba código assembler para implementar de la manera mas eficiente posible, un
CASE. La variable que se evalúa puede ser un byte o un entero.
9.- Escriba una subrutina recursiva que sume los elementos de una lista vinculada.
Recibe como parámetros la dirección de comienzo del primer elemento de la lista. Cada
elemento de la lista se compone de un valor en una palabra y una dirección del siguiente
elemento en 32 bits.
10.- Escriba una subrutina que dada una zona de memoria (se recibe su dirección de
comienzo y su longitud en bytes) y una cadena de la cual se recibe su dirección y
longitud, forme un vector de direcciones (del cual se recibe su dirección inicial) con las
direcciones iniciales de cada ocurrencia de la cadena dentro de la zona de memoria.
11.- Escriba un trozo de código assembler cuya función sea copiarse a si mismo en las
posiciones de memoria donde esta cargado y luego saltar a la primera instrucción de
esta nueva copia. El resultado de la ejecución de este código será el llenado de la
memoria con copias de el mismo. En la primera palabra de cada copia deberá figurar el
numero de copia de que se trata. Cuantas copias entraran en un equipo con 640 Kbytes
de RAM
12.- Escriba un segmento de código para hallar el mayor, el menor valor , el valor
promedio de todos los elementos de una matriz de dobles palabras almacenada por
columnas en memoria. También debe hallarse el mayor elemento de cada fila y de cada
columna. El programa debe ser escrito de la manera mas eficiente posible en cuanto a
tiempo de ejecución.
13.- Determine el tiempo de ejecución de una instrucción NOP y de acuerdo a ese
tiempo, cuanto insume un ciclo de maquina. Estime la precisión con que obtuvo el
resultado (ejercicio para realizar en maquina)
14.- Determine cuanto tiempo insume ejecutar las instrucciones: ADD AX,AX y
ADD AX,[EBX]. Compare los resultados con los que figuran en la cartilla.(ejercicio
para realizar en maquina)
15.- Determine la mejora que introduce alinear las instrucciones en el 80386. Para ello
escriba un codigo que contenga instrucciones no alineadas; el mismo codigo pero con
instrucciones alineadas, y compare los tiempos de ejecucion.(ejercicio para realizar en
maquina)
16.- Encuentre la manera mas rápida de transferir 64 kbytes de memoria de un lugar a
otro de memoria y determine el tiempo que insume(ejercicio para realizar en maquina)
17.- Escriba una subrutina que reciba como parámetros:
• La dirección de una cadena de bits en memoria
• La longitud en bits de la cadena
• La dirección de una zona de memoria
• La cantidad de filas y de columnas que tiene dicha zona de memoria si se la piensa
organizada como una matriz de bits.
• Una fila y una columna a partir de la cual se debera copiar la cadena de bits recibida.
a- Escríbala utilizando solo instrucciones de transferencia de bits (BTS, etc)
b- Escríbala sin utilizar instrucciones de transferencia de bits
c- Escríbala combinando instrucciones de transferencia de bits y otras, por ejemplo de
transferencia de cadenas.
d- Determine bajo que condiciones será mas eficiente cada una de las alternativas, y
evalúe el tiempo que insume cada una de ellas.
Descargar