SlideShare una empresa de Scribd logo
INSTITUTO TECNOLOGICO DE MANTEHUALAINGENIERIA EN SISTEMAS COMPUTACIONELESLENGUAJE ENSAMBLADORIng. Martin Luis LedezmaDATA SEGMENTEva María Alonso Rueda Andrés Arévalo CovarrubiasThalía Carrillo LópezAna Cristina Contreras LunaFabiola Dafne Méndez Zúñiga
DATA SEGMENT¿Qué es?Es una de las secciones de un programa en un objeto de archivo o en la memoria, que contiene el variables globales y variables estáticas que se inicializan por el programador.Tiene un tamaño fijo, ya que todos los datos de esta sección se establecen por el programador antes de que el programa se carga. Sin embargo, no es de sólo lectura, Ya que los valores de las variables pueden ser modificados en tiempo de ejecución. Esto está en contraste con la Rodata (Constante, los datos de sólo lectura) en la sección, así como el código de segmento (También conocido como segmento de texto).
En la arquitectura de PC hay cuatro básicas de lectura y escritura regiones de memoria en un programa:Datos.- Contiene las variables globales y estáticos utilizados por el programa que se inicializan. Este segmento puede ser clasificada en el área inicializado de sólo lectura y se inicializa la zona de lectura y escritura.
BSS segmento.- conocido como Sin inicializar los datos comienza al final del segmento de datos y contiene todas las variables sin inicializar variables estáticas y globales que se inicializan a cero de forma predeterminada.Montón de espacio.- comienza a finales de la BSS segmento y crece a grandes direcciones de allí. El área de montón es dirigido por malloc, Realloc, y libre, que pueden utilizar el sistema brk y sbrk llamadas, para ajustar el tamaño (aunque tenga en cuenta que el uso de brk / sbrk y una sola "zona escombrera" no está obligado a cumplir el contrato de malloc / realloc / gratuita , sino que también puede ser implementado usando mmap para reservar regiones potencialmente no contiguos de memoria virtual en el proceso ' espacio de direcciones virtuales). El área de montón es compartida por todas las bibliotecas compartidas y módulos de carga dinámica de un proceso.
Apilar.- es una LIFO estructura, normalmente se encuentra en la parte alta de la memoria. Por lo general, "crece hacia abajo" con todos los registros, el valor inmediato o marco de pila se añadió a la misma. Un marco de pila se compone como mínimo de una dirección de retorno.EJEMPLOEste ejemplo está completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS (systemcalls)  para imprimir el mensaje Hola mundo!!  en pantalla.; HOLA.ASM; Programa clasico de ejemplo. Despliega una leyenda en pantalla.STACK     SEGMENT STACK                ; Segmento de pila                    DW     64 DUP (?)             ; Define espacio en la pilaSTACK     ENDS DATA      SEGMENT                             ; Segmento de datosSALUDO      DB    "Hola mundo!!",13,10,"$" ; CadenaDATA      ENDS CODE      SEGMENT                            ; Segmento de CodigoASSUME CS:CODE, DS:DATA, SS:STACK INICIO:                                                  ; Punto de entrada al programa          MOV  AX,DATA                         ; Pone direccion en AX          MOV  DS,AX                              ; Pone la direccion en los registros          MOV  DX,OFFSET SALUDO      ; Obtiene direccion del mensaje          MOV  AH,09H                            ; Funcion: Visualizar cadena          INT     21H                                  ; Servicio: Funciones alto nivel DOSMOV  AH,4CH                            ; Funcion: Terminar          INT     21HCODE      ENDSEND  INICIO                               ; Marca fin y define INICIO
La descripción es como sigue:1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar. 2.- La variable SALUDO en el segmento DATA, define la cadena a ser desplegada. El signo de dólares al final de la cadena (denominado centinela) es requerido por la función de visualización de la cadena de MS-DOS. La cadena incluye los códigos para carriage-return y line-feed. 3.- La etiqueta START  en el segmento de código marca el inicio de las instrucciones del programa. 4.- La declaración DW en el segmento de pila define el espacio para ser usado por el stack del programa. 5.-  La declaración ASSUME indica que registros de segmento se asociarán con las etiquetas declaradas en las definiciones de segmentos. 
6.- Las primeras dos instrucciones cargan la dirección del segmento de datos en el registro DS.  Estas instrucciones no son necesarias para los segmentos de código y stack puesto que la dirección del segmento de código siempre es cargado en el registro CS y la dirección de la declaración del stacksegment es automáticamente cargada en el registro SS.  7.- Las últimas dos instrucciones del segmento CODE  usa la función 4CH de MS-DOS para regresar el control al sistema operativo.  Existen muchas otras formas de hacer esto, pero ésta es la más recomendada. 8.- La directiva END indica el final del código fuente y especifica a START como punto de arranque.
El formato:De acuerdo a las convenciones y notación seguidas en el manual del Microsoft Macro Assembler, y que usaremos nosotros también, tenemos:Cada programa en lenguaje ensamblador es creado a partir de un archivo fuente de código ensamblador. Estos son archivos de texto que contienen todas las declaraciones de datos e instrucciones que componen al programa y  que se agrupan en áreas o secciones, cada una con un propósito especial. Las sentencias en ensamblador tienen la siguiente sintaxis:
[nombre]  mnemónico  [operandos] [;comentarios]En cuanto a la estructura, todos los archivos fuente tienen la misma forma: cero  o más segmentos de programa seguidos por una directiva END. No  hay una regla sobre la estructura  u orden que deben seguir las diversas secciones o áreas en la creación del código fuente de un programa en ensamblador. Sin embargo la mayoría de los programas tiene un segmento de datos, un segmento de código y un segmento  de stack, los cuales pueden ser puestos en cualquier lugar. Para la definición de datos y declaración de instrucciones y  operandos el  MASM reconoce el conjunto de caracteres formado por letras mayúsculas, letras minúsculas (excluyendo caracteres acentuados, ñ, Ñ), números, y los símbolos: ? @ _ $ : . [ ] ( ) ‹ › { } + - / * & % ! ´ ~ ¦  \  = #  ˆ ; , " ‘ 
La declaración de números requiere tener presente ciertas consideraciones. En el MASM un entero  se refiere a un número entero: combinación de dígitoshexadecimales, octales, decimales o binarios,  más una raíz opcional. La raíz se especifica con B,  Q u O, D, o H. El ensamblador usará siempre la raíz decimal por defecto, si se omite la especificación de la raíz (la cual se puede cambiar con la directiva .RADIX).  Así nosotros podemos especificar un entero de la siguiente manera: dígitos, dígitosB, dígitosQ o dígitosO, dígitosD, dígitosH. Si una D o B aparecen al final de un número, éstas siempre se considerarán un indicador de raíz, e.g. 11B será tratado como 112 (210), mientras que si se trata del número 11B16 debe introducirse como 11Bh.   Para los números reales tenemos al designadorR, que sólo puede ser usado con  números hexadecimales de 8, 16, ó 20 dígitos de la forma dígitosR. También puede usarse una de las directivas DD, DQ, y DT con el formato [+¦-]dígitos.dígitos[E[+¦-]igitos]. 
Las cadenas de carácter y constantes alfanuméricas son formadas como ´caracteres´  o "caracteres" .  Para referencias simbólicas se utilizan cadenas especiales denominadas nombres. Los nombres son cadenas de caracteres que no se entrecomillany que deben comenzar con una A..Z¦ a..z ¦ _ ¦ $ ¦ @los caracteres restantes pueden ser cualquiera de los permitidos,  y solamente los 31 primeros caracteres son reconocidos.

Más contenido relacionado

PPTX
Gestion de memoria en windows
PPTX
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
PPTX
Monitores-sistemas operativos
DOCX
Traductor y su estructura
PPT
Terminologia basica del sistema operativo
PDF
SO - Administración de Memoria
PPTX
Analisis Semantico
Gestion de memoria en windows
Topicos Avanzados de Programacion - Unidad 3 componentes y librerias
Monitores-sistemas operativos
Traductor y su estructura
Terminologia basica del sistema operativo
SO - Administración de Memoria
Analisis Semantico

La actualidad más candente (20)

PPT
Modelo Relacional
PPTX
Modelado del sistema
PPTX
Noción de archivo real y virtual
DOCX
Lenguajes libre de contexto
PPTX
Proceso, modelos y metodos de ingenieria de software
DOCX
Ejemplos de herramientas case más utilizadas
DOCX
control de concurrencia
PPTX
Tecnicas de Administracion de Memoria
PPTX
Segmentacion de memoria
PPTX
Sistemas Operativos I- Algoritmo de QUANTUM
PPTX
Modos de direccionamiento y formatos
PPTX
Administración de memoria el linux
PPTX
Manejo de los procesos en los sistemas operativos
PPTX
Control de Flujo [Telecomunicaciones]
PPTX
Estimación de Proyectos de Software
PPTX
Fundamentos de ingenieria del software (2)
PPT
Metricas Tecnicas Del Software
PPTX
Estructura de almacenamiento
PPT
Estructuras (CAPAS) de un sistema operativo
PPTX
Compiladores
Modelo Relacional
Modelado del sistema
Noción de archivo real y virtual
Lenguajes libre de contexto
Proceso, modelos y metodos de ingenieria de software
Ejemplos de herramientas case más utilizadas
control de concurrencia
Tecnicas de Administracion de Memoria
Segmentacion de memoria
Sistemas Operativos I- Algoritmo de QUANTUM
Modos de direccionamiento y formatos
Administración de memoria el linux
Manejo de los procesos en los sistemas operativos
Control de Flujo [Telecomunicaciones]
Estimación de Proyectos de Software
Fundamentos de ingenieria del software (2)
Metricas Tecnicas Del Software
Estructura de almacenamiento
Estructuras (CAPAS) de un sistema operativo
Compiladores
Publicidad

Destacado (20)

PPTX
Div, idiv, Neg ensamblador
PPTX
Lenguaje ensamblador y Estructura del CPU
PDF
Tutorial ensamblador
PDF
Lenguaje ensamblador y programacion para ibm pc y compatibles
PDF
Ensamblador
DOC
Ensamblador
PPT
Instrucciones lenguaje assembler
PDF
Microprocesador 8085 Apuntes assembler
PPTX
Lenguaje de ensamblador daniel romo 9 a -san felipe
DOC
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
PPTX
Tipos De Lenguajes
PDF
Unidad 1 interfaz
PPTX
Lenguaje Ensamblador
PPTX
Nivel de lenguaje ensamblador
PPT
Lenguaje Ensamblador
PPTX
Lenguajeensamblador
PPTX
Lengujes de 2 generacion
PPTX
Lenguaje ensamblador
Div, idiv, Neg ensamblador
Lenguaje ensamblador y Estructura del CPU
Tutorial ensamblador
Lenguaje ensamblador y programacion para ibm pc y compatibles
Ensamblador
Ensamblador
Instrucciones lenguaje assembler
Microprocesador 8085 Apuntes assembler
Lenguaje de ensamblador daniel romo 9 a -san felipe
Relatório de Gestão 2008 - Sala Verde Judith Cortesão FURG
Tipos De Lenguajes
Unidad 1 interfaz
Lenguaje Ensamblador
Nivel de lenguaje ensamblador
Lenguaje Ensamblador
Lenguajeensamblador
Lengujes de 2 generacion
Lenguaje ensamblador
Publicidad

Similar a Data segment (20)

PDF
estructura_de_un_programa_en_lenguaje_ensamblador
PPT
PPT
PPTX
Assembler
PPT
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
PPTX
Comenzando a programar
PDF
Equipo 6 codigo segment
PPTX
Estructura .COM
PDF
Lenguaje ensamblador basico
PDF
Programas asm
PDF
Ensamblador8086 100921111644-phpapp02
PDF
Microcomputadoras al detalle
PPSX
Debug utilitario dos
PDF
Practica1
PDF
Practica1
PDF
38912287 practica1
PDF
Clase10 2-lenguaje ensamblador
PDF
Introduccion al assembler
PPTX
Emsamblador
PDF
Unidad I.pdf
estructura_de_un_programa_en_lenguaje_ensamblador
Assembler
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
Comenzando a programar
Equipo 6 codigo segment
Estructura .COM
Lenguaje ensamblador basico
Programas asm
Ensamblador8086 100921111644-phpapp02
Microcomputadoras al detalle
Debug utilitario dos
Practica1
Practica1
38912287 practica1
Clase10 2-lenguaje ensamblador
Introduccion al assembler
Emsamblador
Unidad I.pdf

Último (20)

PDF
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
PDF
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
PDF
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
PDF
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
PDF
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
DOCX
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
PDF
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
PDF
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
PDF
biología es un libro sobre casi todo el tema de biología
PDF
Punto Critico - Brian Tracy Ccesa007.pdf
PPTX
caso clínico iam clinica y semiología l3.pptx
DOCX
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
PDF
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
PDF
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
PDF
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
PDF
Escuela Sabática 6. A través del Mar Rojo.pdf
PDF
ciencias-1.pdf libro cuarto basico niños
DOCX
Tarea De El Colegio Coding For Kids 1 y 2
PDF
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
PDF
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL
Salcedo, J. et al. - Recomendaciones para la utilización del lenguaje inclusi...
Cronograma de clases de Práctica Profesional 2 2025 UDE.pdf
SESION 12 INMUNIZACIONES - CADENA DE FRÍO- SALUD FAMILIAR - PUEBLOS INDIGENAS...
Integrando la Inteligencia Artificial Generativa (IAG) en el Aula
COMPLETO__PROYECTO_VIVAN LOS NIÑOS Y SUS DERECHOS_EDUCADORASSOS.pdf
UNIDAD DE APRENDIZAJE 5 AGOSTO tradiciones
ACERTIJO Súper Círculo y la clave contra el Malvado Señor de las Formas. Por ...
Gasista de unidades unifuncionales - pagina 23 en adelante.pdf
biología es un libro sobre casi todo el tema de biología
Punto Critico - Brian Tracy Ccesa007.pdf
caso clínico iam clinica y semiología l3.pptx
III Ciclo _ Plan Anual 2025.docx PARA ESTUDIANTES DE PRIMARIA
Escuela de Negocios - Robert kiyosaki Ccesa007.pdf
Educación Artística y Desarrollo Humano - Howard Gardner Ccesa007.pdf
Didactica de la Investigacion Educativa SUE Ccesa007.pdf
Escuela Sabática 6. A través del Mar Rojo.pdf
ciencias-1.pdf libro cuarto basico niños
Tarea De El Colegio Coding For Kids 1 y 2
IDH_Guatemala_2.pdfnjjjkeioooe ,l dkdldp ekooe
GUIA DE: CANVA + INTELIGENCIA ARTIFICIAL

Data segment

  • 1. INSTITUTO TECNOLOGICO DE MANTEHUALAINGENIERIA EN SISTEMAS COMPUTACIONELESLENGUAJE ENSAMBLADORIng. Martin Luis LedezmaDATA SEGMENTEva María Alonso Rueda Andrés Arévalo CovarrubiasThalía Carrillo LópezAna Cristina Contreras LunaFabiola Dafne Méndez Zúñiga
  • 2. DATA SEGMENT¿Qué es?Es una de las secciones de un programa en un objeto de archivo o en la memoria, que contiene el variables globales y variables estáticas que se inicializan por el programador.Tiene un tamaño fijo, ya que todos los datos de esta sección se establecen por el programador antes de que el programa se carga. Sin embargo, no es de sólo lectura, Ya que los valores de las variables pueden ser modificados en tiempo de ejecución. Esto está en contraste con la Rodata (Constante, los datos de sólo lectura) en la sección, así como el código de segmento (También conocido como segmento de texto).
  • 3. En la arquitectura de PC hay cuatro básicas de lectura y escritura regiones de memoria en un programa:Datos.- Contiene las variables globales y estáticos utilizados por el programa que se inicializan. Este segmento puede ser clasificada en el área inicializado de sólo lectura y se inicializa la zona de lectura y escritura.
  • 4. BSS segmento.- conocido como Sin inicializar los datos comienza al final del segmento de datos y contiene todas las variables sin inicializar variables estáticas y globales que se inicializan a cero de forma predeterminada.Montón de espacio.- comienza a finales de la BSS segmento y crece a grandes direcciones de allí. El área de montón es dirigido por malloc, Realloc, y libre, que pueden utilizar el sistema brk y sbrk llamadas, para ajustar el tamaño (aunque tenga en cuenta que el uso de brk / sbrk y una sola "zona escombrera" no está obligado a cumplir el contrato de malloc / realloc / gratuita , sino que también puede ser implementado usando mmap para reservar regiones potencialmente no contiguos de memoria virtual en el proceso ' espacio de direcciones virtuales). El área de montón es compartida por todas las bibliotecas compartidas y módulos de carga dinámica de un proceso.
  • 5. Apilar.- es una LIFO estructura, normalmente se encuentra en la parte alta de la memoria. Por lo general, "crece hacia abajo" con todos los registros, el valor inmediato o marco de pila se añadió a la misma. Un marco de pila se compone como mínimo de una dirección de retorno.EJEMPLOEste ejemplo está completamente desarrollado en lenguaje ensamblador que usa servicios o funciones de MS-DOS (systemcalls) para imprimir el mensaje Hola mundo!! en pantalla.; HOLA.ASM; Programa clasico de ejemplo. Despliega una leyenda en pantalla.STACK SEGMENT STACK ; Segmento de pila DW 64 DUP (?) ; Define espacio en la pilaSTACK ENDS DATA SEGMENT ; Segmento de datosSALUDO DB "Hola mundo!!",13,10,"$" ; CadenaDATA ENDS CODE SEGMENT ; Segmento de CodigoASSUME CS:CODE, DS:DATA, SS:STACK INICIO: ; Punto de entrada al programa MOV AX,DATA ; Pone direccion en AX MOV DS,AX ; Pone la direccion en los registros MOV DX,OFFSET SALUDO ; Obtiene direccion del mensaje MOV AH,09H ; Funcion: Visualizar cadena INT 21H ; Servicio: Funciones alto nivel DOSMOV AH,4CH ; Funcion: Terminar INT 21HCODE ENDSEND INICIO ; Marca fin y define INICIO
  • 6. La descripción es como sigue:1.- Las declaraciones SEGMENT y ENDS definen los segmentos a usar. 2.- La variable SALUDO en el segmento DATA, define la cadena a ser desplegada. El signo de dólares al final de la cadena (denominado centinela) es requerido por la función de visualización de la cadena de MS-DOS. La cadena incluye los códigos para carriage-return y line-feed. 3.- La etiqueta START en el segmento de código marca el inicio de las instrucciones del programa. 4.- La declaración DW en el segmento de pila define el espacio para ser usado por el stack del programa. 5.- La declaración ASSUME indica que registros de segmento se asociarán con las etiquetas declaradas en las definiciones de segmentos. 
  • 7. 6.- Las primeras dos instrucciones cargan la dirección del segmento de datos en el registro DS. Estas instrucciones no son necesarias para los segmentos de código y stack puesto que la dirección del segmento de código siempre es cargado en el registro CS y la dirección de la declaración del stacksegment es automáticamente cargada en el registro SS.  7.- Las últimas dos instrucciones del segmento CODE usa la función 4CH de MS-DOS para regresar el control al sistema operativo. Existen muchas otras formas de hacer esto, pero ésta es la más recomendada. 8.- La directiva END indica el final del código fuente y especifica a START como punto de arranque.
  • 8. El formato:De acuerdo a las convenciones y notación seguidas en el manual del Microsoft Macro Assembler, y que usaremos nosotros también, tenemos:Cada programa en lenguaje ensamblador es creado a partir de un archivo fuente de código ensamblador. Estos son archivos de texto que contienen todas las declaraciones de datos e instrucciones que componen al programa y que se agrupan en áreas o secciones, cada una con un propósito especial. Las sentencias en ensamblador tienen la siguiente sintaxis:
  • 9. [nombre] mnemónico [operandos] [;comentarios]En cuanto a la estructura, todos los archivos fuente tienen la misma forma: cero o más segmentos de programa seguidos por una directiva END. No hay una regla sobre la estructura u orden que deben seguir las diversas secciones o áreas en la creación del código fuente de un programa en ensamblador. Sin embargo la mayoría de los programas tiene un segmento de datos, un segmento de código y un segmento de stack, los cuales pueden ser puestos en cualquier lugar. Para la definición de datos y declaración de instrucciones y operandos el MASM reconoce el conjunto de caracteres formado por letras mayúsculas, letras minúsculas (excluyendo caracteres acentuados, ñ, Ñ), números, y los símbolos: ? @ _ $ : . [ ] ( ) ‹ › { } + - / * & % ! ´ ~ ¦ \ = # ˆ ; , " ‘ 
  • 10. La declaración de números requiere tener presente ciertas consideraciones. En el MASM un entero se refiere a un número entero: combinación de dígitoshexadecimales, octales, decimales o binarios, más una raíz opcional. La raíz se especifica con B, Q u O, D, o H. El ensamblador usará siempre la raíz decimal por defecto, si se omite la especificación de la raíz (la cual se puede cambiar con la directiva .RADIX). Así nosotros podemos especificar un entero de la siguiente manera: dígitos, dígitosB, dígitosQ o dígitosO, dígitosD, dígitosH. Si una D o B aparecen al final de un número, éstas siempre se considerarán un indicador de raíz, e.g. 11B será tratado como 112 (210), mientras que si se trata del número 11B16 debe introducirse como 11Bh.  Para los números reales tenemos al designadorR, que sólo puede ser usado con números hexadecimales de 8, 16, ó 20 dígitos de la forma dígitosR. También puede usarse una de las directivas DD, DQ, y DT con el formato [+¦-]dígitos.dígitos[E[+¦-]igitos]. 
  • 11. Las cadenas de carácter y constantes alfanuméricas son formadas como ´caracteres´ o "caracteres" . Para referencias simbólicas se utilizan cadenas especiales denominadas nombres. Los nombres son cadenas de caracteres que no se entrecomillany que deben comenzar con una A..Z¦ a..z ¦ _ ¦ $ ¦ @los caracteres restantes pueden ser cualquiera de los permitidos, y solamente los 31 primeros caracteres son reconocidos.