Ensamblador

9

Click here to load reader

description

trabajo de investigación de lo que es un ensamblador

Transcript of Ensamblador

Page 1: Ensamblador

I.- Contestar las siguientes preguntas

1. ¿ qué es un ensamblador ?

Existen tres formas básicas de traducir los lenguajes de programación al lenguaje máquina (lenguaje de 0 y 1).

Mediante un ensamblador

Mediante un compilador

Mediante un interprete Mediante un ensamblador se traduce únicamente lenguaje ensamblador. De este lenguaje puedes saber más si te lees el artículo llamado Tipos de lenguajes de programación.

Por otra parte el ensamblador traduce un programa codificado en este lenguaje a lenguaje máquina. En otras palabras, sustituye el lenguaje ensamblador por 0 y 1 fácilmente entendibles por la máquina.

El término ensamblador (del inglés assembler) se refiere a un tipo de programa

informático que se encarga de traducir un fichero fuente escrito en un lenguaje

ensamblador, a un fichero objeto que contiene código máquina, ejecutable directamente por la máquina para la que se ha generado. El propósito para el que se crearon este tipo de aplicaciones es la de facilitar la escritura de programas, ya que escribir directamente en código binario, que es el único código entendible por la computadora, es en la práctica imposible. La evolución de los lenguajes de programación a partir del lenguaje ensamblador originó también la evolución de este programa ensamblador hacia lo que se conoce como programa compilador.

2. ¿ cuál es la característica principal del modelo Von Newman ?

consiste en almacenar las instrucciones del programa de una computadora en su propia memoria, logrando así que la máquina siga los pasos definidos por su programa almacenado.

3. ¿ para qué sirven los registros generales?

Los registros de propósitos generales AX, BX, CX y DX son las herramientas del sistema. Son los únicos en el sentido de que se puede direccionarlos como una palabra o como una parte de un byte. El ultimo byte de la izquierda es la parte "alta", y el ultimo byte de la derecha es la parte "baja" por ejemplo, el registro CX consta de una parte CH (alta) y una parte CL (baja), y se puede referirse a cualquier parte por su nombre.

Page 2: Ensamblador

4. ¿ qué tipo de compilación realiza debug ?

5. ¿ qué función realizan los registros DS, ES, SS ?

Registro DS.

La dirección inicial de un segmento de datos de programa es almacenada

en el registro DS. En términos sencillos, esta dirección, mas un valor de

desplazamiento en una instrucción, genera una referencia a la localidad de

un bytes especifico en el segmento de datos.

Registro ES

Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el

registro esta de segmento para manejar el direccionamiento de memoria. En este

contexto, el registro ES esta asociado con el registro DI (índice) . un programa que

requiere el uso del registro ES puede inicializarlo con una dirección apropiada.

Registro SS.

El registro SS permite la colocación en memoria de una pila, para almacenamiento

temporal de direcciones y datos. El DOS almacena la dirección de inicio del

segmento de pila de un programa en el registro SS. Esta dirección de segmento,

más un valor de desplazamiento en el registro del apuntador de la pila (SP), indica

la palabra actual en la pila que está siendo direccionada. Para propósitos de

programación normal, no se necesita referenciar el registro SS.

6. ¿ para qué sirven las interrupciones ?

Sirven para solicitar la atención del microprocesador por parte del

hardware para avisarle que necesita de su atención para ejecutar una

tarea.

7. explica un tipo de interrupción

por ejemplo, cuando un dispositivo como el disco duro solicita la

atención al microprocesador de que requiere escribir los datos que se

encuentran en memoria en el disco entonces solicita estos datos por

medio de una interrupción.

8. ¿ qué es un compílador ?

Page 3: Ensamblador

es una aplicación que toma un programa escrito en un lenguaje de alto nivel y lo convierte a un

programa escrito en un lenguaje que la maquina puede entender, es decir el lenguaje maquina

9. explica el concepto de programa almacenado

10.¿ para qué sirven los registros índice?

los registros índice SI y DI están disponibles para direccionamientos indexados y para

sumas y restas. Que son la operaciones de punta.

11.¿ qué es debug ?

Una herramienta de depuración a nivel del sistema.

12.¿ qué función realizan los registros AX, BX, CX ?

13.Registros AX.

El registro AX, el acumulador principal, es utilizado para operaciones que

implican entrada/salida y la mayor parte de la aritmética. Por ejemplo, las

instrucciones para multiplicar, dividir y traducir suponen el uso del AX.

También, algunas operaciones generan código más eficientes si se refiere

al AX en lugar de los otros registros.

14.Registro BX.

El BX es conocido como el registro base ya que es el único registro de

propósitos generales que pueden ser unos índices para direccionamiento

indexado. También es común emplear al BX para cálculos.

15.Registro CX.

El CX es conocido como el registro contador. Puede contener un valor para

controlar el número de veces que un ciclo se repite o un valor para

corrimiento de bits, hacia la derecha o hacia la izquierda. El CX también es

usado para muchos cálculos.

16.explica la interrupción 21

La interrupción 21 útiliza el valor almacenado en el registro AH para ejecutar una determinada función, en éste caso mostrar la cadena en pantalla, la cadena que muestra es la que está almacenada en el registro DX.

17.explica un comando de ensamblador

mov, mueve el contenido de una dirección de memoria, o de un registro

a otra posición o registro.

18.¿ cuáles son los 2 componentes de las direcciones de memoria ?

Page 4: Ensamblador

Al segmento de memoria y la dirección dentro de ese segmento

19.¿ qué es un segmento ?

la memoria es divida en segmentos con un tamaño máximo de 64k, información

importante para el direccionamiento de la memoria

20.¿ qué elemento define las direcciones de segmentos ?

21.¿ describe 2 tipos de pseudo operadores ?

El nombre viene de la palabra "equal", (igual)". La directiva EQU permite al programador "igualar"

nombres personalizados a datos o direcciones. Los nombres utilizados se refieren generalmente a

direcciones de dispositivos, datos numéricos, direcciones de comienzo, direcciones fijas,

posiciones de bits, etc.

 Esta directiva dice al ensamblador a partir de que posición de memoria de programa se situarán las siguientes instrucciones. Rutinas de comienzo, subrutinas de interrupción y otros programas deben comenzar en locaciones de memoria fijados por la estructura del microcontrolador. Recordemos que el 16F84 sólo tiene 1024 posiciones de memoria flash para código.

    La directiva ORG hace al compilador colocar el código que le sigue 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 instrucción del programa). Usualmente se la utiliza para: reset, programas de servicios de interrupción, programa principal, subrutinas.

22.¿ cómo se envían datos del cpu al monitor ?

Con la instrucción ah,9 con la interrupción 21h

23.¿ cómo se establece la comunicación con el puerto de salida ?

24. menciona un ejemplo de transferencia de información a los periféricos

25.¿ qué es el desplazamiento ?

26.¿ qué es el "stack" ?

27.¿ describe el pseudo operador CODE ?

28.¿ cómo se envían datos del teclado al cpu ?

29.¿ cómo se envían datos del cpu al drive ?

30.¿ cómo se establece la comunicación con un puerto externo ?

31. menciona un ejemplo de transferencia de información a los periféricos

Page 5: Ensamblador

32.¿ cómo es el manejo del ambiente gráfico en ensamblador ?

II.- Realiza los programas en ensamblador

33.elabora un programa que calcule el polinomio 2x + 4y2 con x=2, y=3

34.elabora un programa que imprima tu nombre

35.elabora un programa que imprima los primeros 8 números pares en

orden descendente

36.elabora un programa que imprima las letras "uvm"

37.elabora un programa que calcule la expresión x - 3y con x=2, y=3

38.elabora un programa que imprima los primeros 5 números naturales

C:\WINDOWS>debug

-a

18A0:0100 mov ax,00ef

18A0:0103 add ax,000a

18A0:0106 int 20

18A0:0108

-t

AX=00EF BX=0000 CX=0000 DX=0000 SP=FFEE BP=0000 SI=0000

DI=0000

DS=18A0 ES=18A0 SS=18A0 CS=18A0 IP=0103 NV UP EI PL NZ NA

PO NC

18A0:0103 050A00 ADD AX,000A

-d

18A0:0100 B8 EF 00 05 0A 00 CD 20-8B D1 CD 21 0E 1F B8

00 ....... ...!....

18A0:0110 3F B9 01 00 BA 19 D8 CD-21 72 2B 3B 34 00 8F 18 ?.......!

r+;4...

18A0:0120 3E 19 D8 1A 8E 1E 08 D3-75 40 B8 01 42 B9 FF FF

>[email protected]...

18A0:0130 8B D1 CD 21 EB 34 2E 8E-1E 08 D3 B8 00 42 33

C9 ...!.4.......B3.

Page 6: Ensamblador

18A0:0140 8B D1 CD 21 EB 24 3D 05-00 F9 75 03 E9 5B FF BE ...!.

$=...u..[..

18A0:0150 E7 04 33 C9 2E A1 39 E7-BB 22 00 BA 12 01 BF

01 ..3...9.."......

18A0:0160 00 CD 21 73 03 E9 42 FF-8B D8 B0 FF 86 47 18 A2 ..!

s..B......G..

18A0:0170 19 00 C3 50 33 C9 FC AC-41 0A C0 75 FA 2B F1

58 ...P3...A..u.+.X

39.¿ cuál es el desplazamiento de la primera instrucción ?

40.¿ qué contiene el registro CS ?

41.¿ qué significa IP = 103 ?

42.elabora un programa que despliegue un cuadro de diálogo en masm32

43.elabora un programa que despliegue un menú en masm32

44.¿cuál es la función de "addr"?

45.¿cuál es la función del comando MASM en el lenguaje c?

La utilidad DEBUG incluída en los sistemas MS-DOS, es una herramienta para depuración de programas muy interesante que permite desensamblar los módulos y, además, ejecutar programas paso a paso, viendo las modificaciones que sufren los registros y banderas. Se trata de un programa menos complejo, cómodo y potente que depuradores de código como Turbo Debugger (de Borland) o Codeview (Microsoft), pero en algunos casos es más útil. Veremos ahora los principales comandos del DEBUG, los cuales también son admitidos en su mayoría por Codeview, por lo que el tiempo invertido en aprenderlos será útil no sólo para conocer el clásico y mítico DEBUG.

Antes de empezar con ellos, conviene hacer referencia al programa SYMDEB que acompaña al MASM de Microsoft: se trata de un DEBUG mejorado, con ayuda, más rápido e inteligente (indica el tipo de función del sistema cuando al tracear un programa éste llama al DOS) y, en la práctica, es 99% compatible. También admite las instrucciones adicionales del 286 y los NEC V20/V30. Su diferencia principal es que al abandonarlo para volver al DOS restaura los vectores de interrupción, lo que puede no ser deseable en algunos casos muy concretos. Además, desde la versión 4.0 se admite el parámetro /S (con SYMDEB /S nomfich.ext) lo que permite conmutar entre la pantalla de depuración y la de ejecución pulsando la tecla '\'.

Sintaxis general: DEBUG [programa.ext [parámetros] ]

Los programas pueden ser de tipo EXE o COM; en el caso de los primeros se les cargará ya montados y con los registros inicializados, listos para su ejecución. Evidentemente, los programas

Page 7: Ensamblador

COM también se cargan con los registros inicializados y el correspondiente PSP preparado, así como con IP=100h. Los parámetros opcionales no son los de el DEBUG o SYMDEB sino los que normalmente se suministrarían al programa a depurar. También se pueden cargar otros ficheros de cualquier extensión o simplemente entrar en el programa sin cargar ningún fichero. Al entrar, aparecerá el prompt particular del DEBUG: un guión (-). Entonces se pueden teclear órdenes que constarán generalmente de una sola letra. La mayoría de las mismas admiten parámetros, que normalmente irán separados por comas. Estos parámetos pueden ser números hexadecimales de hasta dos o cuatro dígitos, registros y, además: