You are on page 1of 5

Universidad de insurgentes

Plantel San ngel


Informtica
Materia: Teora de Lenguajes
y Compiladores
Alan Garca Jalil
Grupo: 14131

Define las caractersticas del lenguaje ensamblador

Caractersticas

El cdigo escrito en lenguaje ensamblador posee una cierta dificultad de


ser entendido ya que su estructura se acerca al lenguaje mquina, es
decir, es un lenguaje de bajo nivel.

El lenguaje ensamblador es difcilmente portable, es decir, un cdigo


escrito para un microprocesador, puede necesitar ser modificado, para
poder ser usado en otra mquina distinta. Al cambiar a una mquina con
arquitectura diferente, generalmente es necesario reescribirlo
completamente.

Los programas hechos por un programador experto en lenguaje


ensamblador son generalmente mucho ms rpidos y consumen menos
recursos del sistema (memoria RAM y ROM) que el programa equivalente
compilado desde un lenguaje de alto nivel. Al programar cuidadosamente
en lenguaje ensamblador se pueden crear programas que se ejecutan
ms rpidamente y ocupan menos espacio que con lenguajes de alto
nivel.

Con el lenguaje ensamblador se tiene un control muy preciso de las


tareas realizadas por un microprocesador por lo que se pueden crear
segmentos de cdigo difciles y/o muy ineficientes de programar en un
lenguaje de alto nivel, ya que, entre otras cosas, en el lenguaje
ensamblador se dispone de instrucciones del CPU que generalmente no
estn disponibles en los lenguajes de alto nivel.

Tambin se puede controlar el tiempo en que tarda una rutina en


ejecutarse, e impedir que se interrumpa durante su ejecucin.

Escribe un ejemplo de instruccin en ensamblador


-A
1A9E:0100 MOV AH,02
1A9E:0102 MOV DL,03
1A9E:0104 INT 21
1A9E:0106 INT 20
1A9E:0108
-G

El programa ha finalizado con normalidad


-U
Describe las siguientes instrucciones:
a)
mov ax,4 - mueve y guarda la informacin a ax
b)
int 21h character que lo reconoce
c)
Sub ax,bx - resta el valor guardado en ax y lo muestra en bx
d)
.code - lee todo el cdigo.
e) CantU noR DW 0 - Define una variable numerica

Explica la funcin de una subrutina


El primer intento de organizar el cdigo de programacin fueron las
subrutinas. Una subrutina era un grupo de instrucciones que se escriba
al final del cdigo principal justo despus de la instruccin que indicaba
el fin del programa. Aunque en algunos casos haba quien las mezclaba
con el propio flujo del programa principal y las aislaba por medio de
saltos incondicionales. En el caso del antiguo BASIC se usaba la
instruccin GoSub seguida del nombre de la subrutina. Cuando el
cdigo llegaba a esta parte primero guardaba la posicin donde iba y
luego saltaba a la subrutina. Ya en la subrutina, la ltima instruccin era
RETURN. Cuando el procesador llegaba ah haca un salto hacia la
direccin que haba guardado previo al salto y segua su camino en la
linea principal del programa.
En ensamblador, este proceso fue copiado directamente con
instrucciones como CALL y RET. CALL hace lo mismo que GoSub,
guarda la posicin en la que se encuentra y luego salta a donde se
encuentra la subrutina. Cuando llega a RET tan solo toma la posicin
desde la que salt y contina su camino como si nada hubiera pasado.
Aqu la clave es el STACK. Como ya saben el STACK es una zona de la
memoria donde se guardan datos de manera que el ltimo en entrar es el
primero en salir. Esto permite que las subrutinas llamen a su vez a todas
las subrutinas que quieran y que el CPU siempre pueda regresar al
punto del programa del que la primera de ellas fue llamada.
Las subrutinas fueron muy tiles y todava se siguen usando para
programas pequeos y aislados. Aunque conforme el cdigo si fue
haciendo mas y mas estructurado mostraron serias desventajas. La

primera de ellas fue que trabajaban directamente con los datos del
programa principal, de modo que si uno quera reutilizarlas en otro
programa deba copiar tambin cualquier estructura de datos,
informacin o pieza de cdigo con la que interactuara. Para que una
subrutina fuera verdaderamente portable no deba de interactuar con
ningna variable o estructura ajena a si misma. Algunos programadores
astutos escribieron subrutinas con una seccin propia de la memoria de
esa misma subrutina y evitaron su ejecucin por medio de un salto. El
problema con esto era que ya no se poda llamar a las subrutinas de
manera tan libre como antes y la recursin (una rutina que se llama a si
misma) resultaba imposible. Era necesario que cada que se llamara a
una subrutina se creara un espacio de memoria en el que pudiera hacer
lo que quisiera sin alterar el resto del programa y que cuando terminara
este mismo espacio desapareciera. Adems de que haba que tener
control sobre la informacin que esta subrutina regresara. Y fue as
como nacieron las funciones.

Menciona las diferencias entre los tipos de subrutinas


o no es un fragmento tal cual, si no que es un punto
del programa al que podremos saltar de manera incondicional a travs de la
instruccin adecuada.
minado subrutina. Este empieza con una etiqueta
y acaba con la instruccin RETURN o RETLW, que veremos ms adelante.

la etiqueta es el primer campo en una lnea en lenguaje ensamblador y


puede no existir.
ensamblador la define como el
equivalente a la direccin del primer byte correspondiente a esa instruccin.
queta puede volver a usarse en otro lugar pero como operando de
una instruccin. El ensamblador reemplazar sta etiqueta por el valor de
cuando fue creada. Se usan frecuentemente en las instrucciones de salto.
campo de instruccin.
por el ensamblador ( ORG, EQU, etc.) o nombres de instrucciones ( movlw,
call, nop, etc.)
Describe mediante ejemplos: jmp, jne, loop, jnc, jz

Jmp lee la primera lnea del mensaje


Loop realiza ciclos en la instruccin
Describe la instruccin cmp
Uso del comando R
Observe el contenido de los registros del microprocesador y cambie a los
valores que se indican
el contenido de los siguientes registros, en cada caso luego de realizar el
cambio, verifquelo en
la pantalla y anote lo que va apreciando:
C:\>debug

You might also like