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

PDF
Demostracion de congruencia de triangulos
PDF
estructura_de_un_programa_en_lenguaje_ensamblador
PPT
Lenguaje Ensamblador
PPTX
Data segment
PDF
Equipo 1
PDF
Equipo 1
PDF
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
PPTX
Oracle database
Demostracion de congruencia de triangulos
estructura_de_un_programa_en_lenguaje_ensamblador
Lenguaje Ensamblador
Data segment
Equipo 1
Equipo 1
2.Teoria-II PROGRAMACION SIEMENS TIA PORTAL NIVEL II
Oracle database

Similar a Definicion simplificada de segmento (20)

PPTX
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
PPTX
Tipus de Dades IEC 61131-3 d'us en els PLC Siemens.pptx
PDF
Manual c18
PDF
Oracle Características y tipos de datos
PPTX
Oracle database
PDF
Ensamblador8086 100921111644-phpapp02
PPT
Oracle tipos-de-datos
PPTX
Oracle database
PDF
Propiedades del campo
PPT
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
PPT
Cursor Adapter
PPS
Cursor Adapter
PDF
Codigos2adsmediamobile
PPTX
Como-funciona-el-lenguaje-ensamblador.pptx
PPTX
Oracle database
PDF
Ia32 Modo Protegido
PDF
IA Segura, el uso de llm en entornos locales.
PPT
Seg y pag en diapositivas
PPTX
Clase de investigacion presentacion 1
DOCX
Trabajo ddl
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Tipus de Dades IEC 61131-3 d'us en els PLC Siemens.pptx
Manual c18
Oracle Características y tipos de datos
Oracle database
Ensamblador8086 100921111644-phpapp02
Oracle tipos-de-datos
Oracle database
Propiedades del campo
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
Cursor Adapter
Cursor Adapter
Codigos2adsmediamobile
Como-funciona-el-lenguaje-ensamblador.pptx
Oracle database
Ia32 Modo Protegido
IA Segura, el uso de llm en entornos locales.
Seg y pag en diapositivas
Clase de investigacion presentacion 1
Trabajo ddl
Publicidad

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