Lenguaje de Programacion

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 9

LENGUAJES DE PROGRAMACION DE BAJO NIVEL

1. ¿Qué es lenguaje de programación a bajo nivel?


Un lenguaje de bajo nivel es un lenguaje de programación que contiene instrucciones básicas que una
computadora puede reconocer. A diferencia de los lenguajes de alto nivel utilizados por los
desarrolladores de software, el código de bajo nivel suele ser oscuro y no legible por humanos. Dos
lenguajes de programación de bajo nivel comunes son el lenguaje ensamblador y el lenguaje máquina.

Hoy en día, los lenguajes de bajo nivel, con sus buenas y malas cualidades, se han convertido en uno de
los estándares para los profesionales de la tecnología. Es sumamente importante y conveniente
dominarlo en todos los aspectos para trabajar con eficacia en cualquier situación. Gracias a ella se
llevan a cabo muchos proyectos tecnológicos de gran envergadura con muy buenos resultados y
aportan funciones importantes que los lenguajes de alto nivel no tienen.

2.
3. Programación lineal, estructurada y concurrente

Tabla 1

Ventajas y Diferencias

Programación Lineal Estructurada Concurrente


-Más fácil de
-Los programas son más
desarrollar.
fáciles de leer.
Es relativamente simple y
Ventajas
directo. - permiten ejecutar
-Reducción de esfuerzo
en las pruebas
múltiples operaciones
en forma simultánea.

-Aumentar el cambio
- Cada instrucción se Se recibe un exclusivo de contexto, lo que
realiza hasta que la bloque del programa afecta la velocidad de
anterior se haya que cuando se hace ejecución.
Desventajas llevado a cabo. bastante enorme
puede ser problemático - Las limitaciones de
-Dificulta la para el funcionamiento recursos afectan el
compresión de lectura del código fuente rendimiento
4. Formato de instrucciones

4.1 Instrucciones de transferencias de datos

Tabla 2

Instruccione
Descripción
s
realiza la transferencia de datos del operando de origen al
MOV
destino
XCHG realiza el intercambio entre los valores de los operandos.
carga en AL el contenido de la dirección apuntada por
XLAT
[BX+AL]
carga en un registro especificado la dirección efectiva
LEA
especificada como en el operando origen
realizan las operaciones de apilado y desapilado en la pila
PUSH Y POP
del procesador
LAHF carga la parte baja del registro de estado en AH.
SAHF F carga AH en el la parte baja del registro de estado.

4.2 Instrucciones aritméticas


Tabla 3

Instruccione
Descripción
s
ADD Y ADC realizan la suma y la suma con acarreo
realizan la corrección BCD empaquetado del resultado de una
DAA
suma en AL
SUB Y SBB realizan la resta y la resta con acarreo
realizan la corrección BCD empaquetado del resultado de una
DAS
resta en AL
realiza la operación aritmética de negado de un operando y
NEG
guarda el resultado en el mismo operando.
MUL E IMUL realizan la multiplicación y multiplicación con signo.
DIV E IDIV realizan la división y la división con signo, respectivamente. D
realizan la extensión del bit de signo de byte a WORD y de
CBW Y CWD
WORD a DWORD, actuando sobre AX y DX:AX,
INC Y DEC realizan las operaciones de incremento y decremento

4.3 Instrucciones lógicas


Tabla 4

Instrucciones Descripción
OR,XOR Y realizan las operaciones lógicas “O”, “O exclusiva” e “Y”,
AND respectivamente, de dos operandos, guardando el resultado en
el primero de ellos.

realiza la operación de negado lógico de los bits del operando,


NOT
guardando el resultado en el mismo operando.

4.4 Instrucciones de comparación

tabla 5

Instrucciones Descripción
realiza la operación lógica “Y” de dos operandos, pero NO
TEST afecta a ninguno de ellos, SÓLO afecta al registro de estado

realiza la resta de los dos operandos (como la instrucción SUB)


CMP pero NO afecta a ninguno de ellos, SÓLO afecta al registro de
estado.

4.5 Instrucciones de E/S


Se usan para la comunicación con los dispositivos periféricos.
Tabla 6

Instrucciones Descripción
IN AX, inmediato ;obtiene un WORD del puerto especificado y lo
guarda en AX
IN IN AX, DX ;obtiene un WORD del puerto especificado en DX y lo
guarda en AX

OUT inmediato, AX ;escribe un WORD (contenido en AX) en el


puerto especificado
OUT
OUT DX, AX ;escribe un WORD (contenido en AX) en el puerto
especificado en DX.

Ciclos

TABLA 6

Ciclos Descripción
Esta función decrementa el registro CX, si el valor contenido en CX es cero,
ejecuta la siguiente instrucción, de lo contrario devuelve el control a la posición
LOOP:
especificada por la etiqueta utilizada en la declaración del bucle.

LOOPE: Esta función decrementa el registro CX, si el valor contenido en CX es cero y ZF no


es uno, ejecuta la siguiente instrucción, de lo contrario devuelve el control a la
posición especificada por la etiqueta utilizada en la declaración del ciclo.

Esta función decrementa el contador CX, si el valor contenido en CX es cero y ZF


es distinto de cero, ejecuta la siguiente instrucción; de lo contrario, transfiere el
LOOPNE: control a la posición especificada por la etiqueta utilizada en la declaración del
ciclo, lo contrario de las operaciones contraria a loope.

Esta función decrementa el contador CX, si el valor contenido en CX es cero y ZF


no es uno, ejecuta la siguiente instrucción, de lo contrario devuelve el control a la
LOOPZ:
posición especificada por la etiqueta utilizada en la declaración del bucle.

Esta función decrementa el contador CX, si el valor contenido en CX es cero y ZF


es distinto de cero, ejecuta la siguiente instrucción, de lo contrario devuelve el
LOOPNZ:
control a la posición especificada por la etiqueta utilizada en la declaración loop,
que es una operación, el inverso de loopz.

6. Subrutinas
Tabla 7

Instrucciones Descripción
Llamada a subrutina ,esta instrucción automáticamente guarda el
CALL contenido del registro IP en la pila y salta al comienzo de la
subrutina.
RET retorno al programa o subrutina que llamó.

7.ESTRUCTURA DE CODIGO FUENTE

En el siguiente ejemplo se muestra la estructura del código fuente

.COMMENT

PRIMERO.ASM Ejemplo de un programa en lenguaje ensamblador.

MODEL TINY; Modelo de memoria para el programa

DATA; Declaración de variables

Mensaje db 'Mi primer programa',10,13,'5'

CODE; Cuerpo del programa

INICIO: Punto de entrada al programa

mov dx OFFSET Mensaje; Dirección de la cadena de pesto


movah,9; función para imprimir cadenas

int 21h; Llamada al sistema operativo

movah Ach; Función para terminar un programa

int 21h; Llamada al sistema operativo

END INICIO fin del bloque principal del programa

END

El área de comentarios se usa para agregar comentarios sobre el programa que se está grabando, comienza con el
comando COMMENT y el comentario está encerrado entre dos caracteres *.

La definición del modelo de memoria es la parte que define el tipo de código a generar (16 o 32 bits). En este trabajo
solo se escriben programas ejecutables. 00M, por lo que siempre se utiliza la directiva MODEL TINY.

El área de datos es donde declaras las constantes y variables de tu programa. Las variables se declaran después de la
directiva DATA, las constantes después de CONST.

Las intrusiones del lenguaje, el principio y el final de Pascal, están incluidas en el cuerpo del programa. Además, se debe
especificar el punto de entrada del programa. El punto de instrucción se especifica con la instrucción Begin y End.

Cuando desee comentar las instrucciones del programa, debe insertar un punto y coma () para que el ensamblador
interprete cualquiera de los siguientes como un comentario de una línea. Se requieren comentarios de varias líneas,
puede usar el comando .COMMENT.

8. Como ensamblar un programa fuente

El programa de compilación de Microsoft (antes de 5.x) se llama MASM.EXE y el programa de Borland se llama
TASM.EXE. El ensamblador de Microsoft generalmente usa instrucciones ML, Agro también acepta MAS por
compatibilidad con versiones anteriores. Puede ingresar un comando para ejecutar MASM o TASM en la línea de
comando o a través de un indicador. Esta sección demuestra cómo usar la línea de comando; consulte el Apéndice D
para conocer el método de instrucción. El formato de línea de comando general utilizado para construir un programa es:
• Los parámetros brindan funciones como establecer el nivel de los mensajes de advertencia y se explican en el
Apéndice D. Dado que la configuración predeterminada del ensamblador suele ser suficiente, rara vez necesitará usar el
parámetro.

• Fuente especifica el nombre del programa fuente, por ejemplo, PO5ASM1 El ensamblador toma la extensión .ASM, por
lo que no es necesario escribirlo. Si no desea aceptar el disco predeterminado, también puede especificar uno.

• El objeto crea un de archivo .OBJ. Los nombres de unidades, subcarpetas y archivos pueden ser iguales o diferentes del
nombre original.

• La lista contiene el archivo .LST generado que contiene tanto el código fuente como el código objeto. Los nombres de
unidades, subcarpetas y archivos pueden ser iguales o diferentes del nombre original.

• Refcruzadas crea un archivo de referencias cruzadas con los símbolos utilizados en el programa que se puede utilizar
como una lista de referencias cruzadas. MASM usa extensiones CRF y TASM usa extensiones XRF. Los nombres de
unidades, subcarpetas y archivos pueden ser iguales o diferentes del nombre original.

El ensamblador traduce las instrucciones iniciales en código de máquina y muestra los errores en la pantalla, si los hay.
Los errores comunes incluyen nombres que violan las convenciones de nomenclatura, operaciones no válidas (por
ejemplo, MOVE en lugar de MOV) y operandos con nombres indefinidos. Aproximadamente 100 mensajes de error se
describen en las instrucciones de montaje. Dado que existen diferentes versiones del ensamblador, no intentaremos
enumerar los errores. El ensamblador intenta corregir algunos errores, pero
aún debe volver a cargar el editor, reparar el programa .ASM original y reconstruirlo.

9. CÓMO ENLAZAR UN PROGRAMA OBJETO

Cuando su programa se queda sin mensajes de error, el siguiente paso es vincular el módulo

El objeto POSASM1.OBJ es creado por el ensamblador y contiene solo el código del ensamblador

maquina. El enlazador realiza las siguientes funciones:

• A pedido, combina más de un módulo montado por separado en un programa

un archivo ejecutable, como dos o más programas ensambladores o un programa ensamblador con

programa C.

• Cree un módulo .EXE e inicialícelo con instrucciones especiales para hacerlo más fácil. Se realizará la siguiente carga
para ejecución.

Después de conectar uno o más módulos .OBJ a un módulo .EXE, puede ejecutar el módulo .EXE tantas veces como
desee, pero cada vez que necesite cambiar el programa, debe editar el programa nativo, compilarlo en otro OBJ y
vincular el módulo .OBJ en el módulo .EXE. Si bien estos pasos pueden no ser del todo obvios al principio, descubrirá que
con un poco de experiencia se vuelven automáticos. Muchos programas .EXE se pueden convertir a programas .COM.

La versión de Microsoft del enlazador es LINK y la versión de Borland es TLINK. Puede escribir LINK o TLINK en el símbolo
del sistema o a través del indicador (a partir de MASM6.0, el comando ML proporciona tanto el ensamble como el
enlace). Esta sección muestra cómo vincular usando la línea de comando; el comando para enlazar es:

• Archobj define el archivo objeto generado por el ensamblador. El enlazador tiene una extensión .OBJ, por lo que no
necesita importarlo. La unidad, el subdirectorio y el nombre del archivo pueden ser iguales o diferentes del archivo de
origen.

• Archeje le permite crear archivos .EXE. La unidad, el subdirectorio y el nombre del archivo pueden ser iguales o
diferentes del archivo de origen.

• Archmap genera un archivo .MAP con la posición relativa y el tamaño de cada fragmento, así como cualquier error
encontrado por LINK. Un error común es que no se puede determinar el segmento de la pila. Importar CON (desde la
consola) requiere que el enlazador muestre el mapa en la pantalla (en lugar de guardarlo en el disco) para que el mapa
pueda verificarse en busca de errores inmediatamente.
• Archbibl brinda la capacidad de usar bibliotecas que no necesita en las
primeras etapas de la programación de ensamblaje.

Este ejemplo incorpora el archivo de objeto PASASM1OBJ generado por la compilación anterior. Se solicita al enlazador
que guarde el archivo EXE en la unidad D, muestre el mapa e ignore las opciones de la biblioteca:

Si el nombre del archivo es el mismo que el nombre de la fuente, no es necesario repetirlo: la ID de la unidad es suficiente
para indicar la solicitud del archivo. El apéndice D proporciona otras opciones.

10.Como ejecutar un programa

Hay archivos. EXE está en la unidad predeterminada, puede usar DOS para ejecutarlo escribiendo:

P05ASM1.EXE o PO5ASM1

Si omite la extensión del archivo, DOS supondrá que es .EXE (o .COM). Sin embargo, dado que este programa no
produce resultados visibles, debe ejecutarlo con DEBUG y ejecutarlo en comandos de rastreo. (T. Ingrese la siguiente
información, incluyendo la extensión. EXE:

PISTA D: P05ASM1.EXE

DEBUG carga el modelo desde el programa .EXE. Y MOSTRAR SU INDICACION (un guión). Para mostrar el tipo de
segmento de pila:

SDS: 0.
La pila contiene solo ceros porque así es como se muestra. Para ver el segmento escriba la siguiente línea de codigo:
D D DS: 0.
La ejecución muestra tres elementos de datos. FA 00 7D 00 00 00, con los bytes de cada palabra invertidos, para mostrar
el código, ingrese:

SCD: 0.
Compare el código original que se muestra con el código en la lista de ensamblaje:
D8—-8ED8A10000...

En este caso, la lista de ensamblaje no representa con precisión el código de máquina porque el ensamblador no conoce la
operación del operando de la primera instrucción. Ahora puede determinar este requisito examinando el código que se
muestra. Escriba R para ver el registro y monitorear la ejecución del programa con comandos T consecutivos. Mientras se
ejecuta el programa, preste atención al contenido de los registros. Cuando llegue a la última declaración, puede usar L
para recargar y ejecutar el programa, o Q para salir de la sesión con DEBUG.

También podría gustarte