Lenguaje de Programacion
Lenguaje de Programacion
Lenguaje de Programacion
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
-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
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.
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
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.
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
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
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.
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ó.
.COMMENT
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.
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.
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
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.
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.