SlideShare una empresa de Scribd logo
María Guadalupe Olvera Nolasco
Verónica Patricia Pasillas Gutiérrez
Luz Angélica Sánchez Castruita
Definición Simplificada de Segmento

    La versión 5.0 de MASM implementa un
sistema simplificado para declarar segmentos.
   Por default, las directivas simplificadas de
segmento usan los nombres de los segmentos
 y convenciones usadas por Microsoft en sus
             lenguajes de alto nivel.
Modelos de Memoria.
Especifican el tamaño usado tanto en datos como en
código en el programa. Los lenguajes de alto nivel
requieren la definición de un modelo de memoria
específico, si vamos a enlazarlo con una rutina en
ensamblador, ésta deberá tener la definición del mismo
modelo de memoria. Esta deberá utilizarse antes que
cualquier otra directiva de segmento y si se usa la
directiva DOSSEG, ésta deberá ir antes de la directiva del
modelo de memoria.
DOSSEG nos acomoda los segmentos en el orden prestablecido.
Para declarar el tipo de memoria a utilizar en un
programa, la sintaxis es la siguiente :
.MODEL nombre_memoria_modelo

• Donde:
nombre_memoria_modelo -> Corresponde al
tipo de memoria y puede ser una de las
siguientes:

      Tiny, Small, Medium, Compact, Large, Huge
Los apuntadores NEAR solo
contienen el offset de la
dirección, éstos pueden
inicializarse con la directiva DW.


                Los apuntadores FAR contienen
                tanto la dirección del segmento
                como la del offset, éstos se pueden
                inicializar mediante la directiva DD.
Modelo    Descripción

Tiny      Tanto datos como código son acomodados en un mismo segmento.

Small     Los datos se escriben en un segmento y el código en otro segmento. Cada segmento
          puede tener hasta 64 KB. En este caso se usan punteros NEAR para código y datos.
          En este caso se usan punteros NEAR para código y datos.
Medium    Todos los datos se escriben en un segmento 64 KB máximo.
          El código puede ocupar más de un segmento, entonces los datos se manejan como
          NEAR paro el código como FAR.
Compact   Todo el código se acomoda en un solo segmento, pero los datos pueden ocupar más
          de un segmento, sin embargo los arreglos no pueden ocupar más de 64K.
          De esta manera código es NEAR pero los datos son FAR.
Large     Tanto el código como los datos pueden ocupar más de un segmento, sin embargo los
          arreglos se siguen limitando a 64 KB.
          De esta manera, tanto los datos como el código son FAR.
Huge       Tanto el código como los datos pueden ocupar más de un segmento, en este caso
          también los arreglos pueden ser mas grandes que 64 KB.
          Todos los punteros utilizados en este modelo son FAR.
Directivas de definición de segmentos
   Sintaxis

.STACK [tamaño]   Define el tamaño que tendrá la pila.
.CODE             Segmento de código.
.DATA             Segmento para datos inicializados NEAR.
.DATA?            Segmento para datos no inicializados NEAR.
.FARDATA           Segmento para datos inicializados
                  FAR.
.FARDATA?          Segmento para datos no inicializados
                  FAR.
.CONST            Segmento para datos constantes.
Orden de los segmentos.
 Los segmentos deberán ser ordenados de acuerdo a la convención para segmentos
  del DOS, esta convención se utiliza por Microsoft para los lenguajes de alto nivel.

• Cuando se usa esta directiva los segmentos son ordenados como sigue:
• Segmentos teniendo el nombre de clase 'CODE'.
• Cualquier segmento que no tenga el nombre de clase 'CODE' y no se encuentre en
  el DGROUP.
• Segmentos que son parte de DGROUP en el siguiente orden:

    – Segmentos con nombre de clase BEGDATA.
      (Este nombre se reserva para uso de Microsoft).
    –Cualquier segmento cuyo nombre de clase no sea: BEGDATA, CONST, DATA, BSS
      ó STACK.
    – Segmento de clase CONST.
    – Segmentos de clase DATA.
    – Segmentos de clase BSS.
    – Segmento de clase STACK.
STACK

    BSS
    DATA
                  DGROUP
   CONST


   BEGDATA


Otros segmentos

    CODE



     Orden de los segmentos
Valores de segmento.
•Para cada una de las directivas de segmento existe su correspondiente valor, el
cual se expresa por su mismo nombre, excepto que este valor inicia con el signo
(@) y la directiva empieza con un punto (.).

Nombres de segmentos predefinidos.
• En esta sección analizaremos solo los correspondientes al modelo Small.
Segmentos y tipos para el Modelo de Memoria SMALL.

   Modelo   Directiva   Nombre   Alineación   Combinación   Clase     Grupo
   Small    .CODE       _TEXT    WORD         PUBLIC        ‘CODE’
            .DATA       _DATA    WORD         PUBLIC        ‘DATA’    DGROUP
            .CONST      CONST    WORD         PUBLIC        ‘CONST’   DGROUP
            .DATA?      _BSS     WORD         PUBLIC        ‘BSS’     DGROUP
            .STACK      STACK    PARA         STACK         ‘STACK’   DGROUP
EJEMPLO
.MODEL SMALL
.STACK 64
.DATA
 WORDA DW 250
 WORDB DW 150
 WORDC DW ?
.CODE
 INICIO:
   MOV AX, @DATA
   MOV DS, AX
   MOV AX, WORDA
   ADD AX, WORDB
   MOV WORDC, AX
   MOV AX, 4C00H
  INT 21H
 END INICIO

Más contenido relacionado

La actualidad más candente

Tipos de datos en postgres
Tipos de datos en postgresTipos de datos en postgres
Tipos de datos en postgres
DIEGO CCALLA
 
Direccionamiento ip
Direccionamiento  ipDireccionamiento  ip
Direccionamiento ip
Luz Caraballo Naranjo
 
Data segment
Data segmentData segment
Data segment
Eva Mamidelik
 
Funciones de la capa de enlace
Funciones de la capa de enlaceFunciones de la capa de enlace
Funciones de la capa de enlace
cleiver_antonio
 
Spyglass dft
Spyglass dftSpyglass dft
Spyglass dft
kumar gavanurmath
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
Guillermo
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
ishanavas2012
 
Ejercicio no 9
Ejercicio no 9Ejercicio no 9
Ejercicio no 9
Rodrigo Quintero Valdez
 
Elaboración de formularios dinámicos en páginas web
Elaboración de formularios dinámicos en páginas web Elaboración de formularios dinámicos en páginas web
Elaboración de formularios dinámicos en páginas web
Liliana Berenice Rosales Amezcua
 
Tipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolosTipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolos
Lucre Castillo Lorenzo
 
Detección y corrección de errores
Detección y corrección de erroresDetección y corrección de errores
Detección y corrección de errores
santi_rafael7777
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
ROSA IMELDA GARCIA CHI
 
Mejores Practicas Soporte Tecnico IT
Mejores Practicas Soporte Tecnico ITMejores Practicas Soporte Tecnico IT
Mejores Practicas Soporte Tecnico IT
llopez.consultoria
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
gbermeo
 
Comparacion modelo osi y tcp ip
Comparacion modelo osi y tcp ipComparacion modelo osi y tcp ip
Comparacion modelo osi y tcp ip
wsar85
 
Métodos para la detección y corrección de errores
Métodos para la detección y corrección de erroresMétodos para la detección y corrección de errores
Métodos para la detección y corrección de errores
Daniel Huerta Cruz
 
DDR3
DDR3DDR3
Acercádonos a Dart
Acercádonos a DartAcercádonos a Dart
Acercádonos a Dart
Fernando García Pichel
 
Ejercicio 8 bd
Ejercicio 8 bdEjercicio 8 bd
Ejercicio 8 bd
Sahory Ramirez
 
..Historia de las telecomunicaciones
..Historia de las telecomunicaciones..Historia de las telecomunicaciones
..Historia de las telecomunicaciones
marihelena
 

La actualidad más candente (20)

Tipos de datos en postgres
Tipos de datos en postgresTipos de datos en postgres
Tipos de datos en postgres
 
Direccionamiento ip
Direccionamiento  ipDireccionamiento  ip
Direccionamiento ip
 
Data segment
Data segmentData segment
Data segment
 
Funciones de la capa de enlace
Funciones de la capa de enlaceFunciones de la capa de enlace
Funciones de la capa de enlace
 
Spyglass dft
Spyglass dftSpyglass dft
Spyglass dft
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Diccionario de datos
Diccionario de datosDiccionario de datos
Diccionario de datos
 
Ejercicio no 9
Ejercicio no 9Ejercicio no 9
Ejercicio no 9
 
Elaboración de formularios dinámicos en páginas web
Elaboración de formularios dinámicos en páginas web Elaboración de formularios dinámicos en páginas web
Elaboración de formularios dinámicos en páginas web
 
Tipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolosTipos de módems, estandares y protocolos
Tipos de módems, estandares y protocolos
 
Detección y corrección de errores
Detección y corrección de erroresDetección y corrección de errores
Detección y corrección de errores
 
Unidad 2 expresiones regulares
Unidad 2 expresiones regularesUnidad 2 expresiones regulares
Unidad 2 expresiones regulares
 
Mejores Practicas Soporte Tecnico IT
Mejores Practicas Soporte Tecnico ITMejores Practicas Soporte Tecnico IT
Mejores Practicas Soporte Tecnico IT
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Comparacion modelo osi y tcp ip
Comparacion modelo osi y tcp ipComparacion modelo osi y tcp ip
Comparacion modelo osi y tcp ip
 
Métodos para la detección y corrección de errores
Métodos para la detección y corrección de erroresMétodos para la detección y corrección de errores
Métodos para la detección y corrección de errores
 
DDR3
DDR3DDR3
DDR3
 
Acercádonos a Dart
Acercádonos a DartAcercádonos a Dart
Acercádonos a Dart
 
Ejercicio 8 bd
Ejercicio 8 bdEjercicio 8 bd
Ejercicio 8 bd
 
..Historia de las telecomunicaciones
..Historia de las telecomunicaciones..Historia de las telecomunicaciones
..Historia de las telecomunicaciones
 

Similar a Definicion simplificada de segmento

estructura_de_un_programa_en_lenguaje_ensamblador
estructura_de_un_programa_en_lenguaje_ensambladorestructura_de_un_programa_en_lenguaje_ensamblador
estructura_de_un_programa_en_lenguaje_ensamblador
Gloria Azúa
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
gabo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
gabo
 
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
avaldero
 
Oracle database
Oracle databaseOracle database
Oracle database
Giuliana Jacinto Periche
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Javier Abadía
 
Manual c18
Manual c18Manual c18
Manual c18
mateussergio57
 
Oracle Características y tipos de datos
Oracle Características y tipos de datos Oracle Características y tipos de datos
Oracle Características y tipos de datos
jerson rojas lopez
 
Oracle database
Oracle databaseOracle database
Oracle database
Aldo Trucios Cornejo
 
Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02
samueldcruz
 
Oracle tipos-de-datos
Oracle tipos-de-datosOracle tipos-de-datos
Oracle tipos-de-datos
Jairocklml
 
Oracle database
Oracle databaseOracle database
Oracle database
Benhur Cochachi
 
Propiedades del campo
Propiedades del campoPropiedades del campo
Propiedades del campo
Dubraska1
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
guestebc336
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
guestebc336
 
Codigos2adsmediamobile
Codigos2adsmediamobileCodigos2adsmediamobile
Codigos2adsmediamobile
PAVEL ALVAREZ
 
Oracle database
Oracle databaseOracle database
Oracle database
Wendy Misari
 
Ia32 Modo Protegido
Ia32 Modo ProtegidoIa32 Modo Protegido
Ia32 Modo Protegido
Erwin Meza
 
Seg y pag en diapositivas
Seg y pag en diapositivasSeg y pag en diapositivas
Seg y pag en diapositivas
memp1234
 
Clase de investigacion presentacion 1
Clase de investigacion presentacion 1Clase de investigacion presentacion 1
Clase de investigacion presentacion 1
Bryan Matos
 

Similar a Definicion simplificada de segmento (20)

estructura_de_un_programa_en_lenguaje_ensamblador
estructura_de_un_programa_en_lenguaje_ensambladorestructura_de_un_programa_en_lenguaje_ensamblador
estructura_de_un_programa_en_lenguaje_ensamblador
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
 
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
 
Manual c18
Manual c18Manual c18
Manual c18
 
Oracle Características y tipos de datos
Oracle Características y tipos de datos Oracle Características y tipos de datos
Oracle Características y tipos de datos
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02
 
Oracle tipos-de-datos
Oracle tipos-de-datosOracle tipos-de-datos
Oracle tipos-de-datos
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Propiedades del campo
Propiedades del campoPropiedades del campo
Propiedades del campo
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Codigos2adsmediamobile
Codigos2adsmediamobileCodigos2adsmediamobile
Codigos2adsmediamobile
 
Oracle database
Oracle databaseOracle database
Oracle database
 
Ia32 Modo Protegido
Ia32 Modo ProtegidoIa32 Modo Protegido
Ia32 Modo Protegido
 
Seg y pag en diapositivas
Seg y pag en diapositivasSeg y pag en diapositivas
Seg y pag en diapositivas
 
Clase de investigacion presentacion 1
Clase de investigacion presentacion 1Clase de investigacion presentacion 1
Clase de investigacion presentacion 1
 

Definicion simplificada de segmento

  • 1. María Guadalupe Olvera Nolasco Verónica Patricia Pasillas Gutiérrez Luz Angélica Sánchez Castruita
  • 2. Definición Simplificada de Segmento La versión 5.0 de MASM implementa un sistema simplificado para declarar segmentos. Por default, las directivas simplificadas de segmento usan los nombres de los segmentos y convenciones usadas por Microsoft en sus lenguajes de alto nivel.
  • 3. Modelos de Memoria. Especifican el tamaño usado tanto en datos como en código en el programa. Los lenguajes de alto nivel requieren la definición de un modelo de memoria específico, si vamos a enlazarlo con una rutina en ensamblador, ésta deberá tener la definición del mismo modelo de memoria. Esta deberá utilizarse antes que cualquier otra directiva de segmento y si se usa la directiva DOSSEG, ésta deberá ir antes de la directiva del modelo de memoria. DOSSEG nos acomoda los segmentos en el orden prestablecido.
  • 4. Para declarar el tipo de memoria a utilizar en un programa, la sintaxis es la siguiente : .MODEL nombre_memoria_modelo • Donde: nombre_memoria_modelo -> Corresponde al tipo de memoria y puede ser una de las siguientes: Tiny, Small, Medium, Compact, Large, Huge
  • 5. Los apuntadores NEAR solo contienen el offset de la dirección, éstos pueden inicializarse con la directiva DW. Los apuntadores FAR contienen tanto la dirección del segmento como la del offset, éstos se pueden inicializar mediante la directiva DD.
  • 6. Modelo Descripción Tiny Tanto datos como código son acomodados en un mismo segmento. Small Los datos se escriben en un segmento y el código en otro segmento. Cada segmento puede tener hasta 64 KB. En este caso se usan punteros NEAR para código y datos. En este caso se usan punteros NEAR para código y datos. Medium Todos los datos se escriben en un segmento 64 KB máximo. El código puede ocupar más de un segmento, entonces los datos se manejan como NEAR paro el código como FAR. Compact Todo el código se acomoda en un solo segmento, pero los datos pueden ocupar más de un segmento, sin embargo los arreglos no pueden ocupar más de 64K. De esta manera código es NEAR pero los datos son FAR. Large Tanto el código como los datos pueden ocupar más de un segmento, sin embargo los arreglos se siguen limitando a 64 KB. De esta manera, tanto los datos como el código son FAR. Huge Tanto el código como los datos pueden ocupar más de un segmento, en este caso también los arreglos pueden ser mas grandes que 64 KB. Todos los punteros utilizados en este modelo son FAR.
  • 7. Directivas de definición de segmentos Sintaxis .STACK [tamaño] Define el tamaño que tendrá la pila. .CODE Segmento de código. .DATA Segmento para datos inicializados NEAR. .DATA? Segmento para datos no inicializados NEAR. .FARDATA Segmento para datos inicializados FAR. .FARDATA? Segmento para datos no inicializados FAR. .CONST Segmento para datos constantes.
  • 8. Orden de los segmentos. Los segmentos deberán ser ordenados de acuerdo a la convención para segmentos del DOS, esta convención se utiliza por Microsoft para los lenguajes de alto nivel. • Cuando se usa esta directiva los segmentos son ordenados como sigue: • Segmentos teniendo el nombre de clase 'CODE'. • Cualquier segmento que no tenga el nombre de clase 'CODE' y no se encuentre en el DGROUP. • Segmentos que son parte de DGROUP en el siguiente orden: – Segmentos con nombre de clase BEGDATA. (Este nombre se reserva para uso de Microsoft). –Cualquier segmento cuyo nombre de clase no sea: BEGDATA, CONST, DATA, BSS ó STACK. – Segmento de clase CONST. – Segmentos de clase DATA. – Segmentos de clase BSS. – Segmento de clase STACK.
  • 9. STACK BSS DATA DGROUP CONST BEGDATA Otros segmentos CODE Orden de los segmentos
  • 10. Valores de segmento. •Para cada una de las directivas de segmento existe su correspondiente valor, el cual se expresa por su mismo nombre, excepto que este valor inicia con el signo (@) y la directiva empieza con un punto (.). Nombres de segmentos predefinidos. • En esta sección analizaremos solo los correspondientes al modelo Small. Segmentos y tipos para el Modelo de Memoria SMALL. Modelo Directiva Nombre Alineación Combinación Clase Grupo Small .CODE _TEXT WORD PUBLIC ‘CODE’ .DATA _DATA WORD PUBLIC ‘DATA’ DGROUP .CONST CONST WORD PUBLIC ‘CONST’ DGROUP .DATA? _BSS WORD PUBLIC ‘BSS’ DGROUP .STACK STACK PARA STACK ‘STACK’ DGROUP
  • 11. EJEMPLO .MODEL SMALL .STACK 64 .DATA WORDA DW 250 WORDB DW 150 WORDC DW ? .CODE INICIO: MOV AX, @DATA MOV DS, AX MOV AX, WORDA ADD AX, WORDB MOV WORDC, AX MOV AX, 4C00H INT 21H END INICIO