Loading presentation...
Prezi is an interactive zooming presentation

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Unidad 1: Introducción al lenguaje ensamblador

No description
by

Aldo Perez

on 7 February 2016

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Unidad 1: Introducción al lenguaje ensamblador

Memoria del Microprocesador:
La memoria es el lugar donde el procesador encuentra sus instrucciones de programa y sus datos. Tanto los datos como las instrucciones están almacenados en memoria, y el procesador los toma de ahí.

La memoria es una parte interna de la computadora y su función esencial es proporcionar un espacio de trabajo para el procesador.
Memoria RAM:
La memoria de acceso aleatorio (en inglés: random-access memory cuyo acrónimo es RAM) es la memoria desde donde el procesador recibe las instrucciones y guarda los resultados. Es el área de trabajo para la mayor parte del software de un computador.

Su capacidad se mide en kilobytes, megabytes, gigabytes.

Características de la memoria RAM:
Localización:
Interna (se encuentra en la placa base).

Capacidad:
Hoy en día no es raro encontrar ordenadores PC equipados con 64, 128 o 256 Mb de memoria RAM.

Método de acceso:
La RAM es una memoria de acceso aleatorio, además, la RAM permite el acceso para lectura y escritura de información.

Clasificación:
Existen 2 tipos de memoria RAM
• RAM dinámica
• RAM estática

Los dos tipos de memoria RAM se diferencian en la tecnología que utilizan para guardar los datos, la memoria RAM dinámica es la más común.

GRACIAS!
UNIDAD I
Introducción al lenguaje ensamblador

Integrantes:

Luis Roman Ibarra Quintana
Raymundo Daniel Polanco Jurado

INTERRUPCIONES
La Memoria Principal (RAM)

El almacenamiento en RAM estática se basa en circuitos lógicos que retienen la información almacenada en ellos mientras haya energía suficiente para hacer funcionar el dispositivo (ya sean segundos, minutos, horas, o aún días).

Un chip de RAM estática puede almacenar tan sólo una cuarta parte de la información que puede almacenar un chip de RAM dinámica de la misma complejidad.

RAM Estática
RAM Dinámica
La Memoria Dinámica es la que permite solicitar memoria en tiempo de ejecución, por lo que cuanta más memoria se necesite, más se solicita al sistema operativo.
Velocidad de acceso:
Actualmente se pueden encontrar sistemas de memoria RAM capaces de realizar transferencias a frecuencias del orden de los Gbps (gigabits por segundo), la RAM pierde toda la información al desconectar el ordenador.

Tiempo de acceso:
Basado en el tiempo que se tarda en llegar los datos almacenados en la memoria (ns).

Latencia:
La más importante CAS (selección de dirección de columna), es el tiempo que transcurre desde que el controlador de memoria envía una petición para leer, hasta que se selecciona la columna de la memoria donde está el dato buscado (cantidad de ciclos de reloj).

Ancho de banda o BUS:
Determina la cantidad de información que se transfiere simultáneamente por una cierta cantidad de líneas de transmisión (bits).
Que es una Interrupción?
Una interrupción es una operación del hardware que indica a la CPU que detenga la ejecución de lo que estaba haciendo, conserva la situación del proceso y envía a la CPU a una dirección determinada en la que tiene un programa de control de interrupción o de servicio de interrupciones.
INTERRUPCIONES POR SOFTWARE:
Una interrupción por software es una interrupción activada por una instrucción especial: la instrucción Int. Esta es usada siempre en conjunto con el número de la interrupción a ser invocada.

Esto permite que un programa invoque una rutina de la cual no conoce la ubicación exacta en la memoria. Las rutinas pertenecientes al BIOS y al núcleo del DOS (kernel), pueden ser accesadas por este mecanismo.
INTERRUPCIONES POR HARDWARE:
Las interrupciones por hardware son procesos activados por los distintos componentes del sistema, con ello el dispositivo solicita la atención del microprocesador. La dirección de la rutina correspondiente es obtenida de la tabla de vectores de interrupción. Estos valores son iniciados por le BIOS.
INTERRUPCIONES INTERNAS:
Las interrupciones internas son generadas por ciertos eventos que surgen durante la ejecución de un programa. Este tipo de interrupciones son manejadas en su totalidad por el hardware y no es posible modificarlas.

Un ejemplo claro de este tipo de interrupciones es la que actualiza el contador del reloj interno de la computadora, el hardware hace el llamado a esta interrupción varias veces durante un segundo para mantener la hora actualizada.

INTERRUPCIONES EXTERNAS.-
Las interrupciones externas las generan los dispositivos periféricos, como pueden ser: teclado, impresoras, tarjetas de comunicaciones, etc. También son generadas por los coprocesadores. No es posible desactivar a las interrupciones externas.

Estas interrupciones no son enviadas directamente a la UCP, sino que se mandan a un circuito integrado cuya función es exclusivamente manejar este tipo de interrupciones.

INTERRUPCIONES EN EL BIOS Y EN DOS:
Las llamadas de interrupción del BIOS son una facilidad que los programas DOS, y otro tipo de programas como cargadores de arranque, usan para invocar las funciones del BIOS.

Algunos sistemas operativos también usan el BIOS para probar e inicializar recursos de hardware durante las primeras etapas del arranque.
LENGUAJE ENSAMBLADOR
El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de microprocesador.
• El código escrito en lenguaje ensamblador posee una cierta dificultad de ser entendido ya que su estructura se acerca al lenguaje máquina, es decir, es un lenguaje de bajo nivel.
• El lenguaje ensamblador es difícilmente portable, es decir, un código escrito para un microprocesador, puede necesitar ser modificado, para poder ser usado en otra máquina distinta. Al cambiar a una máquina con arquitectura diferente, generalmente es necesario reescribirlo completamente.
Caracteristicas:
• Al programar cuidadosamente en lenguaje ensamblador se pueden crear programas que se ejecutan más rápidamente y ocupan menos espacio que con lenguajes de alto nivel.
La importancia del lenguaje ensamblador es principalmente que se trabaja directamente con el microprocesador; por lo cual se debe de conocer el funcionamiento interno de este, tiene la ventaja de que en él se puede realizar cualquier tipo de programas que en los lenguajes de alto nivel no lo pueden realizar. Otro punto sería que los programas en ensamblador ocupan menos espacio en memoria.
Importancia:
EL PROCESADOR Y SUS REGISTROS INTERNOS
Registro:
Son áreas del almacenamiento dentro del procesador, usadas para almacenar datos con los cuales está trabajando el procesador en un momento dado de la ejecución de una instrucción.
¿Para que se emplean?
Los registros del procesador se emplean para controlar instrucciones en ejecución, manejar direccionamiento de memoria y proporcionar capacidad aritmética. Los registros son direccionables por medio de un nombre.
• Los registros están en la cumbre de la jerarquía de memoria, y son la manera más rápida que tiene el sistema de almacenar datos. Los registros se miden generalmente por el número de bits que almacenan; por ejemplo, un "registro de 8 bits" o un "registro de 32 bits“.
Caracteristicas:
• La CPU contiene un conjunto de localidades de almacenamiento temporal de datos de alta velocidad llamada registro. Algunos de los registros están dedicados al control, y solo la unidad de control tiene acceso a ellos. Los registros restantes son los registros de uso general y el programador es el usuario que tiene acceso a ellos.
Clasificación de los registros internos
Un registro de segmento se utiliza para alinear en un límite de párrafo o dicho de otra forma codifica la dirección de inicio de cada segmento y su dirección en un registro de segmento supone cuatro bits 0 a su derecha. Un registro de segmento tiene 16 bits de longitud y facilita un área de memoria para direccionamientos conocidos como el segmento actual.
Registro de Segmento:
Registro de Apuntador de Instrucciones:
El registro apuntador de instrucciones (IP) de 16 bits contiene el desplazamiento de dirección de la siguiente instrucción que se ejecuta. El IP está asociado con el registro CS en el sentido de que el IP indica la instrucción actual dentro del segmento de código que se está ejecutando actualmente.
Los registros SP (apuntador de la pila) Y BP (apuntador de base) están asociados con el registro SS y permiten al sistema accesar datos en el segmento de la pila.

Registro SP.-
El apuntador de la pila de 16 bits está asociado con el registro SS y proporciona un valor de desplazamiento que se refiere a la palabra actual que está siendo procesada en la pila. Los procesadores 80386 y posteriores tienen un apuntador de pila de 32 bits, el registro ESP. El sistema maneja de forma automática estos registros.
Registro de Apuntadores:

Registro BP.-
El BP de 16 bits facilita la referencia de parámetros, los cuales son datos y direcciones transmitidos vía pila. Los procesadores 80386 y posteriores tienen un BP ampliado de 32 bits llamado el registro EBP.
Registro de Banderas:
De los 16 bits del registro de banderas, nueve son comunes a toda la familia de procesadores 8086, y sirven para indicar el estado actual de la máquina y el resultado del procesamiento. Muchas instrucciones que piden comparaciones y aritmética cambian el estado de las banderas, algunas cuyas instrucciones pueden realizar pruebas para determinar la acción subsecuente.
Registro de Pila:
Un registro de pila es un registro de un CPU de computadora cuyo propósito es mantener la pista de la posición actual de la pila de llamadas.

La pila es un área de memoria importante y por ello tiene, en vez de uno, dos registros que se usan como desplazamiento (offset) para apuntar a su contenido.

Se usan como complemento al registro y son:
SP-Stack Pointer:
Se traduce como puntero de pila y es el que se reserva el procesador para uso propio en instrucciones de manipulado de pila. Por lo general, el programador no debe alterar su contenido.

BP-Base pointer:
Se usa como registro auxiliar. El programador puede usarlo para su provecho.

Registro CS.
El DOS almacena la dirección inicial del segmento de código de un programa en el registro CS. Esta dirección de segmento, más un valor de desplazamiento en el registro apuntador de instrucción (IP), indica la dirección de una instrucción que es buscada para su ejecución.


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, más un valor de desplazamiento en una instrucción, genera una referencia a la localidad de un byte especifico en el segmento de datos.


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 pila (SP), indica la palabra actual en la pila que está siendo direccionada.


Registros ES.
Algunas operaciones con cadenas de caracteres (datos de caracteres) utilizan el registro extra de segmento para manejar el direccionamiento de memoria. En este contexto, el registro ES está asociado con el registro DI (índice). Un programa que requiere el uso del registro ES puede inicializarlo con una dirección de segmento apropiada.


Registros FS y GS.
Son registros extra de segmento en los procesadores 80386 y posteriores.


Registro SI. (índice de fuente)
 Desplazamiento de un elemento de un arreglo o cadena.
 Requerido por algunas operaciones con cadenas (de caracteres).
 Asociado con el registro DS.

Registro DI.(Índice de destino)
 Desplazamiento de un elemento de una cadena o arreglo.
 Requerido por algunas operaciones con cadenas de caracteres.
 Asociado con el registro ES.
• OF (Overflow, desbordamiento): Indica desbordamiento de un bit de orden alto (más a la izquierda) después de una operación aritmética.

• DF (dirección): Designa la dirección hacia la izquierda o hacia la derecha para mover o comparar cadenas de caracteres.

• IF (interrupción): Indica que una interrupción externa, como la entrada desde el teclado, sea procesada o ignorada.

• TF (trampa): Permite la operación del procesador en modo de un paso. Los programas depuradores, como el DEBUG, activan esta bandera de manera que usted pueda avanzar en la ejecución de una sola instrucción a un tiempo, para examinar el efecto de esa instrucción sobre los registros de memoria.

• SF (signo): Contiene el signo resultante de una operación aritmética (0 = positivo y 1 = negativo).

• ZF (cero): Indica el resultado de una operación aritmética o de comparación (0 = resultado diferente de cero y 1 = resultado igual a cero).

• AF (acarreo auxiliar): Contiene un acarreo externo del bit 3 en un dato de 8 bits para aritmética especializada.

• PF (paridad): Indica paridad par o impar de una operación en datos de 8 bits de bajo orden (mas a la derecha).

• CF (acarreo): Contiene el acarreo de orden más alto (más a la izquierda) después de una operación aritmética; también lleva el contenido del último bit en una operación de corrimiento o de rotación.

Bibliografía:
http://carlos-barraza-lenguajesinterfaz.blogspot.mx/2013/09/modos-de-direccionamiento.html
http://www.infor.uva.es/~bastida/OC/modos.pdf
http://logica-reptilia.blogspot.mx/2009/03/interrupciones.html
http://lenguajes-interfaz-2013.blogspot.mx/2014_02_01_archive.html
http://ortihuela.galeon.com/ram.htm
es.slideshare.net/killermstr/prez-camacho-jess-asmeth
itpn.mx/recursosisc/6semestre/lenguajesdeinterfaz/unidad%201.pdf
es.slideshare.net/cirenio/definicin-de-registro-de-procesador
http://www.oocities.org/mx/antrahxg/documentos/org_comp/registro.html
http:/www.infor.uva.es/~bastida/OC/modos.pdf
https://sites.google.com/site/ensambladoralexa/1-1-3-tipos-de-lenguaje-ensamblador
 https://books.google.com.mx/books?id=d0IDEsqbD4wC&pg=PA7&lpg=PA7&dq=tipos+de+instrucciones+llamadas+a+servicio+con+el+sistema+operativo&source=bl&ots=VvbaFU3xKG&sig=jg76Qc9rJQpfrJ9fyTibnuOpOng&hl=es-419&sa=X&ved=0ahUKEwiJw_isrtrKAhWEvYMKHUUNDN8Q6AEIJTAC#v=onepage&q=tipos%20de%20instrucciones%20llamadas%20a%20servicio%20con%20el%20sistema%20operativo&f=false
 http://leo-yac.wix.com/lenguaje-ensamblador#!llamadas-a-servicios-del-sistema/cst9
 http://santana-macias-lenguajes.blogspot.mx/p/interrupciones-y-llamadas-al-sistema.html
https://es.scribd.com/doc/247763804/1-7-PROCESO-DE-ENSAMBLADO-Y-LIGADO
Tipos de Lenguaje Ensamblador
Aunque todos los ensambladores realizan básicamente las mismas tareas, podemos clasificarlos de acuerdo a características.


ENSAMBLADORES CRUZADOS:
permiten el soporte de medios físicos como pantallas, impresoras, teclado, etc. y la programación que ofrecen maquinas potentes que luego serán ejecutados en sistemas especializados.
• ENSAMBLADORES RESIDENTES:
permanecen en la memoria de la computadora, y cargan para su ejecución al programa objeto producido. Es el indicado para el desarrollo de pequeños sistemas de control.
• MACROENSAMBLADORES:
permiten el uso de macroinstrucciones, son programas grandes que no permanecen en memoria una vez que se a generado el código objeto, normalmente son programas complejos y residentes.

• MICROENSAMBLADORES:
Indica al interprete las instrucciones de cómo debe actuar la CPU.
• ENSAMBLADORES DE UNA FASE:
leen una línea de programa fuente y la traducen directamente para producir una instrucción en lenguaje máquina, estos ensambladores son sencillos, baratos y ocupan poco espacio.
• ENSAMBLADORES DE DOS FASES:
se llaman así por que realizan la traducción en dos etapas, en la primera fase revisan el código fuente y lo construyen en una tabla de símbolos, en la segunda fase vuelven a leer el programa fuente y pueden tardarlo por completo. Estos ensambladores son los más utilizados en la actualidad.

Llamadas al servicio del sistema
Las llamadas son peticiones a ejecución de rutinas y proporcionan la interfaz entre el sistema operativo y un programa en ejecución. Estas llamadas son instrucciones de lenguaje ensamblador y se presentan en los manuales que emplean los programadores de este lenguaje.

Algunos ejemplos de llamadas al sistema son las siguientes:

 Time: que permite obtener la fecha y hora del sistema.
 Write: que se emplea para escribir un dato en un cierto dispositivo de salida, tales como una pantalla o un disco magnético.
 Read: que es usada para leer de un dispositivo de entrada, tales como un teclado o un disco magnético.
 Open: que es usada para obtener un descriptor de un fichero del sistema, ese fichero suele pasarse a write.

Cuando una llamada al sistema es invocada, la ejecución del programa que invoca es interrumpida y sus datos son guardados, normalmente en su PCB (Bloque de Control de Proceso), para poder continuar ejecutándose luego. El procesador entonces comienza a ejecutar las instrucciones de código de alto nivel de privilegio, para realizar la tarea requerida. Cuando esta finaliza, se retorna al proceso original, y continúa su ejecución. El retorno al proceso demandante no obligatoriamente es inmediato, depende del tiempo de ejecución de la llamada al sistema y del algoritmo de planificación de CPU.
Instrucciones:
Hay dos tipos de instrucciones relacionadas con la llamada a servicios del sistema operativo:

Syscall.-
Instrucción de llamada a un servicio del sistema operativo, a través de su API. Cuando una tarea ejecuta esta instrucción pasa el control al sistema operativo.

Sysret.-
Instrucción de retorno de un servicio. El sistema operativo ejecuta esta instrucción justo antes de devolver el control a la tarea que solicito el servicio. Entre la ejecución de las instrucciones Syscall y Sysret, el sistema operativo accede al espacio de memoria de la tarea. Por ejemplo, el sistema operativo escribe en una estructura de datos de la tarea asociada a un fichero si la apertura del fichero se ha completado con éxito o no. Después de ejecutar la instrucción Sysret, se ejecuta la instrucción siguiente a la Syscall.



Llamada y retorno de un servicio del Sistema Operativo.

Modos de
Direccionamiento

Son medios que facilitan la tarea de programación, permitiendo el acceso a los datos de una manera natural y eficiente. Estos indican al procesador como calcular la dirección absoluta (real o efectiva) donde se encuentran los datos.

Las operaciones se hacen entre registros o registros y memoria, pero nunca entre memoria y memoria (salvo algunas operaciones con cadenas de caracteres).

Los modos de direccionamiento determinan el lugar en que reside un operando, un resultado o la siguiente instrucción a ejecutar según el caso.

Objetivos de los modos de direccionamiento:
 Reducir el espacio ocupado en memoria por las instrucciones.
 Permitir la reubicación del código.
 Facilitar el manejo de las estructuras de datos.

Ciclo De Operación Básico De Un Procesador:

La unidad de control de un procesador se diseña para ejecutar cada una de las instrucciones de un programa efectuando la siguiente secuencia de pasos:

1) Obtener la instrucción de memoria. Almacenarla en un registro de control.
2) Decodificar la instrucción.
3) Localizar los operandos empleados en la instrucción.
4) Obtener de la memoria los operandos (si fuese necesario)
5) Ejecutar la operación en la ruta de datos.
6) Almacenar el resultado en un lugar adecuado.
7) Volver al paso 1 y para procesar la siguiente instrucción.

La unidad de control del procesador consta de un registro especial, el contador de programa PC (Program Counter). Su contenido apunta a la posición de memoria de la instrucción que se va a ejecutar a continuación, y se incrementa cada vez que se lee una instrucción del programa almacenado en la memoria.
La decodificación del paso 2 determina la operación a ejecutar y el modo de direccionamiento de la instrucción.
En el paso 3, los operandos se localizan según el modo de direccionamiento y el campo de direcciones de la instrucción.
En el paso 3, los operandos se localizan según el modo de direccionamiento y el campo de direcciones de la instrucción.

Proceso de Ensamblado y Ligado
Para poder crear un programa se requieren varias herramientas: Primero un editor para crear el programa fuente. Segundo un compilador que no es más que un programa que "traduce" el programa fuente a un programa objeto. Y tercero un enlazador o linker, que genere el programa ejecutable a partir del programa objeto.
• Editor: El editor puede ser cualquier editor de textos que se tenga a la mano, como compilador utilizaremos el MASM (macro ensamblador de Microsoft) ya que es el más común, y como enlazador utilizaremos el programa link.
Ensamblado:
El ensamblado se lleva a cabo invocando al MASM. Este puede ser invocado, usando una línea de comando, de la siguiente manera:

MASM archivo [,[objeto][,[listado][,[cross]]]]][opciones][;]
Donde:

-Objeto: Es el nombre para el archivo objeto.

-Listado: Nombre del archivo de listado de ensamblado.

-Cross: Es un archivo de referencias cruzadas.
Ligado (Link):
De la misma forma que el ensamblado, la fase de liga se lleva a cabo con el LINK. Este puede ser invocado de la misma forma que el MASM. Los parámetros que este requiere son:

LINK objeto [,[ejecutable][,[mapa][,[librería]]]]][opciones][;]
Donde:

-Objeto.- Es el nombre para el archivo .OBJ

-Ejecutable.- Nombre del archivo .EXE

-Mapa.- Nombre del archivo mapa

-Librería.- Nombre del archivo biblioteca de rutinas
Desplegados de mensajes en el monitor
Un monitor de pantalla de cristal líquido (LCD) digital directo recibe un flujo de bits digitales directamente desde el controlador de vídeo, y no requiere del barrido de trama.
¿Qué es la pantalla en el despliegue de mensajes?
Todos los gráficos y el texto que se muestran en el monitor se escriben en la RAM de visualización de vídeo, para después enviarlos al monitor mediante el controlador de vídeo. El controlador de vídeo es en sí un microprocesador de propósito especial, que libera a la CPU principal del trabajo de controlar el hardware de vídeo.
¿Cómo se realiza este proceso de despliegue de mensajes?
Lo que haremos es decirle al chip "¡Hey! dime en qué modo está trabajando la tarjeta de vídeo", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de vídeo que deje de trabajar en ese modo y que comience a trabajar en el modo de vídeo que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando ¡Y que comience a trabajar en ese mismo modo!
Ejemplo de un mensaje en el monitor con lenguaje ensamblador:
Lo que haremos es decirle al chip "¡Hey! dime en qué modo está trabajando la tarjeta de vídeo", cuando obtengamos la respuesta le diremos: "Dile a la tarjeta de vídeo que deje de trabajar en ese modo y que comience a trabajar en el modo de vídeo que me diste". Una instrucción rara, pues lo que le estamos ordenando es que deje de trabajar en el modo en el que está trabajando ¡Y que comience a trabajar en ese mismo modo!
Así se lo decimos en su propio lenguaje:
principio:

mov ah, 0fh

int 10h

mov ah, 0

int 10h
Lo primero que vemos es una "etiqueta", con ella le damos nombre a un punto dentro del código, si más tarde dentro del programa deseamos repetir esta parte del código solo tenemos que decir "salta a 'principio'" y ya está. El primer grupo de instrucciones después de la etiqueta le dicen al BIOS que obtenga la modalidad en la que está trabajando el video. Aquí vemos por primera vez una interrupción (int 10h).
Las interrupciones son funciones ya incorporadas dentro del BIOS y del sistema operativo MS-DOS que realizan tareas comunes como leer del disco, mostrar un mensaje en el monitor, o ¡borrar la pantalla!. Enseguida, mediante una función de la interrupción 10h, le decimos que cambie a la misma modalidad de vídeo.
Bueno, ahora que la pantalla está limpia, podemos mostrar nuestro mensaje en el monitor. Aquí está el código:
lea dx, mensaje_a_mostrar

mov ah, 9h

int 21h

Con la primera instrucción le decimos al procesador "Carga en el registro DX, la dirección de memoria de la variable llamada 'mensaje_a_mostrar'". Enseguida le decimos que la despliegue en pantalla con la función 9h de la interrupción 21h.

Nuestra tarea está terminada, así que digámosle a la computadora que no hay más instrucciones que procesar.
int 20h
Las instrucciones están terminadas, pero todavía tenemos que decirle a la computadora que valor va a tener la variable 'mensaje_a_mostrar'.
mensaje_a_mostrar db "¡Hola Mundo!$",0

El signo de pesos al final de la cadena, es necesario para que el sistema operativo sepa en donde se acaba la cadena (una cadena es un grupo de caracteres) que va a desplegar.
Una vez que terminamos con las instrucciones y valores para la máquina, hay que marcar el archivo para que el compilador sepa que ya terminamos de darle instrucciones a la máquina.
CODE ENDS

end principio
¡Al fin! ¡Llegamos al final! Aquí está el código fuente completo:
CODE SEGMENT
ASSUME CS:CODE, DS:CODE, SS:CODE, ES:CODE
ORG 100h
principio:
mov ah, 0Fh
mov ah, 0
int 10h
lea dx, mensaje_a_mostrar
mov ah, 9h
int 21h
int 20h
mensaje_a_mostrar db "¡Hola Mundo!$",0
CODE ENDS
end principio
Conclusión
A lo largo de esta unidad pudimos comprender las diferentes características que constituyen al lenguaje ensamblador y como a partir de el se generan otras acciones en los dispositivos que pueden llegar a trabajar en conjunto con el, ya sea tanto el Software y el Hardware contienen una propiedad muy especifica ya que son elementos muy complejos debido que dependiendo de la situación que se pudiera presentar van a actuar de cierta manera para tratar de hacer mas eficiente su proceso.
También observamos que el trabajo en conjunto de estos componentes nos permite una mejor interacción con la maquina logrando que responda a nuestras solicitudes haciéndolo mas ameno debido a que anteriormente era más compleja el tratar de interactuar con las maquinas.
Full transcript