0% encontró este documento útil (0 votos)
78 vistas9 páginas

Introducción al Lenguaje Ensamblador

Este documento describe el lenguaje ensamblador. Explica que el lenguaje ensamblador tiene una correspondencia directa con las instrucciones de la máquina y se convierte en código de máquina ejecutable mediante un ensamblador. También describe algunas aplicaciones del lenguaje ensamblador como interactuar con hardware, optimizar bucles internos y enseñar conceptos subyacentes. Finalmente, explica las partes principales de un programa en lenguaje ensamblador como etiquetas, instrucciones, directivas y comentarios.

Cargado por

Daniel Manjarrez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
78 vistas9 páginas

Introducción al Lenguaje Ensamblador

Este documento describe el lenguaje ensamblador. Explica que el lenguaje ensamblador tiene una correspondencia directa con las instrucciones de la máquina y se convierte en código de máquina ejecutable mediante un ensamblador. También describe algunas aplicaciones del lenguaje ensamblador como interactuar con hardware, optimizar bucles internos y enseñar conceptos subyacentes. Finalmente, explica las partes principales de un programa en lenguaje ensamblador como etiquetas, instrucciones, directivas y comentarios.

Cargado por

Daniel Manjarrez
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

INVESTIGACIÓN LENGUAJE

ENSAMBLADOR
Materia: Lenguajes de interfaz

Mario Huerta Olivares


18121499
1 CONTENIDO
2 ¿Qué es el lenguaje ensamblador?................................................................................................... 2
3 ¿En qué aplicaciones se utiliza? ........................................................................................................ 2
4 ¿Que "IDE" se utilizan para crear un programa? ............................................................................ 3
5 ¿Cuáles son las partes principales de un programa? ..................................................................... 3
6 Directivas............................................................................................................................................... 4
7 Bibliografía........................................................................................................................................... 7

6 de mayo de 2022 1
2 ¿QUÉ ES EL LENGUAJE ENSAMBLADOR?

El lenguaje ensamblador es cualquier lenguaje de programación de bajo nivel en el que existe


una correspondencia muy fuerte entre las instrucciones del lenguaje y las instrucciones del código de
máquina de la arquitectura. El lenguaje ensamblador generalmente tiene una declaración por
instrucción de máquina (1: 1), pero las constantes, los comentarios, las directivas del ensamblador, las
etiquetas simbólicas de, por ejemplo, las ubicaciones de memoria, los registros y las macros
generalmente también son compatibles.

El código ensamblador se convierte en código de máquina ejecutable mediante un programa


de utilidad denominado ensamblador. El término "ensamblador" generalmente se atribuye a Wilkes,
Wheeler y Gill en su libro de 1951 La preparación de programas para una computadora digital
electrónica, quienes, sin embargo, usaron el término para referirse a "un programa que ensambla otro
programa que consta de varias secciones en un solo programa". El proceso de conversión se conoce
como ensamblado, como ensamblar el código fuente. El paso computacional cuando un ensamblador
está procesando un programa se llama tiempo de ensamblaje. El lenguaje ensamblador también puede
llamarse código de máquina simbólico.

Debido a que el ensamblado depende de las instrucciones del código máquina, cada lenguaje
ensamblador es específico para una arquitectura de computadora en particular.

A veces hay más de un ensamblador para la misma arquitectura y, a veces, un ensamblador es


específico para un sistema operativo o para sistemas operativos particulares. La mayoría de los
lenguajes ensambladores no proporcionan una sintaxis específica para las llamadas al sistema
operativo, y la mayoría de los lenguajes ensambladores se pueden usar universalmente con cualquier
sistema operativo, ya que el lenguaje brinda acceso a todas las capacidades reales del procesador,
sobre las cuales se basan todos los mecanismos de llamada del sistema. en definitiva. A diferencia de
los lenguajes ensambladores, la mayoría de los lenguajes de programación de alto nivel generalmente
son portátiles a través de múltiples arquitecturas, pero requieren interpretación o compilación, una
tarea mucho más complicada que ensamblar.

3 ¿EN QUÉ APLICACIONES SE UTILIZA?


En los primeros días de la programación, la mayoría de las aplicaciones se escribían parcial o
totalmente en lenguaje ensamblador. Tenían que ajustarse en una pequeña área de memoria y se
ejecutaban de la manera más eficiente posible en los procesadores lentos. A medida que la memoria
aumentó su capacidad y los procesadores su velocidad, los programas se hicieron más complejos. Los
programadores cambiaron a lenguajes de alto nivel tales como C, FORTRAN y COBOL, los cuales
contenían una cierta capacidad de estructuración. Los lenguajes de programación orientados a objetos
más recientes, tales como C++, C# y Java, han hecho posible la escritura de programas complejos que
contienen millones de líneas de código

6 de mayo de 2022 2
Hay algunas situaciones en las que los desarrolladores pueden optar por utilizar el lenguaje
ensamblador:

• Escribir código para sistemas con procesadores más antiguos que tienen opciones
limitadas de lenguaje de alto nivel, como Atari 2600, Commodore 64 y calculadoras
gráficas. Los programas para estas computadoras de las décadas de 1970 y 1980 a menudo
se escriben en el contexto de las subculturas demoscene o retrogaming.
• Código que debe interactuar directamente con el hardware, por ejemplo, en controladores
de dispositivos y controladores de interrupciones.
• En un procesador incorporado o DSP, las interrupciones de alta repetición requieren la
menor cantidad de ciclos por interrupción, como una interrupción que ocurre 1000 o
10000 veces por segundo.
• Programas que necesitan usar instrucciones específicas del procesador no implementadas
en un compilador. Un ejemplo común es la instrucción de rotación bit a bit en el núcleo
de muchos algoritmos de cifrado, así como la consulta de la paridad de un byte o el
acarreo de 4 bits de una suma.
• Programas con bucles internos sensibles al rendimiento, donde el lenguaje ensamblador
brinda oportunidades de optimización que son difíciles de lograr en un lenguaje de alto
nivel. Por ejemplo, álgebra lineal con BLAS o transformación de coseno discreta (por
ejemplo, versión de ensamblaje SIMD de x264).

El lenguaje ensamblador todavía se enseña en la mayoría de los programas de informática e


ingeniería electrónica. Aunque hoy en día pocos programadores trabajan regularmente con el
lenguaje ensamblador como herramienta, los conceptos subyacentes siguen siendo importantes.

4 ¿QUE "IDE" SE UTILIZAN PARA CREAR UN PROGRAMA?

Pendiente

5 ¿CUÁLES SON LAS PARTES PRINCIPALES DE UN PROGRAMA?

El lenguaje ensamblador es básicamente como cualquier otro lenguaje, lo que significa que tiene sus
palabras, reglas y sintaxis. Los elementos básicos del lenguaje ensamblador son:

• Etiquetas;
• Instrucciones;
• Directivas; y
• Comentarios.

Sintaxis del lenguaje ensamblador

6 de mayo de 2022 3
Al escribir un programa en lenguaje ensamblador, es necesario observar reglas específicas para
permitir que el proceso de compilación en "código HEX" ejecutable se ejecute sin errores. Estas
reglas obligatorias se llaman sintaxis y solo hay varias de ellas:
• Cada línea de programa puede constar de un máximo de 255 caracteres;
• Toda línea de programa a compilar, debe comenzar con un símbolo, etiqueta, mnemotécnico
o directiva;
• Texto que sigue a la marca “;” en una línea de programa representa un comentario ignorado
(no compilado) por el ensamblador; y
• Todos los elementos de una línea de programa (etiquetas, instrucciones, etc.) deben estar
separados por al menos un carácter de espacio. En aras de una mayor claridad, se suele
utilizar un botón TAB en un teclado en su lugar, de modo que es fácil delimitar columnas con
etiquetas, directivas, etc. en un programa.

Realiza la descripción de por lo menos 20 directivas. Explicando para qué es cada uno y mostrando un
ejemplo funcional. Los ejemplos de las directivas pueden sacarlos de internet.

6 DIRECTIVAS
A diferencia de las instrucciones que se compilan y escriben en la memoria del programa
del chip, las directivas son comandos del propio lenguaje ensamblador y no tienen influencia en
el funcionamiento del microcontrolador. Algunos de ellos son parte obligatoria de cada programa,
mientras que otros se utilizan solo para facilitar o acelerar la operación. Las directivas se escriben
en la columna reservada para las instrucciones. Hay una regla que permite solo una directiva por
línea de programa.

1. STACK

sirve para fijar un tamaño n del segmento de pila, por defecto 1K.

2. DATA

abre el segmento de datos.

3. CODE

abre el segmento de código, al final código debe aparecer END.

4. MOV dest,src

Copia el contenido del operando fuente (src) en el destino (dest).

Operación: dest <- src

Las posibilidades son:

6 de mayo de 2022 4
• MOV reg,{reg|mem|inmed}
• MOV mem,{reg|inmed}
• MOV {reg16|mem16},{CS|DS|ES|SS}
• MOV {DS|ES|SS},{reg16|mem16}

5. PUSH src

Pone el valor en el tope del stack.

Operación: SP <- SP - 2, [SP+1:SP] <- src donde src = {reg16|mem16|CS|DS|ES|SS}.

6. POP dest

Retira el valor del tope del stack poniéndolo en el lugar indicado.

Operación: dest <- [SP+1:SP], SP <- SP + 2 donde dest = {reg16|mem16|DS|ES|SS}.

7. IN {AL|AX},{DX|inmed (1 byte)}

Pone en el acumulador el valor hallado en el port indicado.

8. OUT {DX|inmed (1 byte)},{AL|AX}

Pone en el port indicado el valor del acumulador.

9. LEA reg,mem

Almacena la dirección efectiva del operando de memoria en un registro.

Operación: reg <- dirección mem

Instrucciones aritméticas (Afectan los flags AF, CF, OF, PF, SF, ZF)

1. ADD dest,src

Operación: dest <- dest + src.

2. ADC dest,src

6 de mayo de 2022 5
Operación: dest <- dest + src + CF.

3. SUB dest,src

Operación: dest <- dest - src.

4. SBB dest,src

Operación: dest <- dest - src - CF.

5. CMP dest,src

Operación: dest - src (sólo afecta flags).

6. INC dest

Operación: dest <- dest + 1 (no afecta CF).

7. DEC dest

Operación: dest <- dest - 1 (no afecta CF).

8. MUL {reg8|mem8}

Realiza una multiplicación con operandos no signados de 8 por 8 bits.

Operación: AX <- AL * {reg8|mem8}. CF=OF=0 si AH = 0, CF=OF=1 en caso contrario. AF,


PF, SF, ZF quedan indefinidos.

9. AND dest,src

Operación: dest <- dest and src.

10. TEST dest,src

Operación: dest and src. Sólo afecta flags.

11. OR dest,src

Operación: dest <- dest or src.

12. XOR dest,src

Operación: dest <- dest xor src.

Las cuatro instrucciones anteriores ponen CF = OF = 0, AF queda indefinido y PF, SF y ZF


dependen del resultado.

13. NOT dest

Operación: dest <- Complemento a 1 de dest. No afecta los flags.

14. JMP label

6 de mayo de 2022 6
Saltar hacia la dirección label.

15. CALL label

Ir al procedimiento cuyo inicio es label. Para llamadas dentro del mismo segmento
equivale a PUSH IP: JMP label, mientras que para llamadas entre segmentos equivale a
PUSH CS: PUSH IP: JMP label.

16. RET

Retorno de procedimiento.

17. RET inmed

Retorno de procedimiento y SP <- SP + inmed.

Variaciones de la instrucción de retorno:

18. JL etiqueta/JNGE etiqueta

Saltar a etiqueta si es menor.

19. JLE etiqueta/JNG etiqueta

Saltar a etiqueta si es menor o igual.

20. JE etiqueta

Saltar a etiqueta si es igual.

21. JNE etiqueta

Saltar a etiqueta si es distinto.

22. JE etiqueta

Saltar a etiqueta si es igual.

23. LOOP

Operación: CX <- CX-1. Saltar a label si CX<>0.

7 BIBLIOGRAFÍA

Lenguaje ensamblador. Para computadoras basadas en Intel ([Link])

6 de mayo de 2022 7
[Link]
Materials/Bibliografia/Ensamblador

Lenguajes de Interfaz - Grupo A - M6. Programacion en ensamblador (x86-64).pdf - All Documents


([Link])

Lenguajes de Interfaz - Grupo A - Ensamblador para PC [Paul A. CARTER].pdf - All Documents


([Link])

6 de mayo de 2022 8

También podría gustarte