SlideShare ist ein Scribd-Unternehmen logo
1 von 11
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

Weitere ähnliche Inhalte

Was ist angesagt?

24 Ejercicios Subnetting
24 Ejercicios Subnetting24 Ejercicios Subnetting
24 Ejercicios SubnettingPatty Vm
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prologmaxsp5566
 
GNS3 instalación, configuración, ipv4, ipv6
GNS3 instalación, configuración, ipv4, ipv6GNS3 instalación, configuración, ipv4, ipv6
GNS3 instalación, configuración, ipv4, ipv6Alex Vasquez
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelaspineda2
 
ENRUTAMIENTO ESTADO ENLACE
ENRUTAMIENTO ESTADO ENLACEENRUTAMIENTO ESTADO ENLACE
ENRUTAMIENTO ESTADO ENLACECecy Hernandez
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#rezzaca
 
Documento de Busqueda Binaria
Documento de Busqueda BinariaDocumento de Busqueda Binaria
Documento de Busqueda BinariaSanTy BizZle
 
Fecha y hora cmd
Fecha y hora cmdFecha y hora cmd
Fecha y hora cmdrubhen123
 
Perceptrón simple y multicapa
Perceptrón simple y multicapaPerceptrón simple y multicapa
Perceptrón simple y multicapaJefferson Guillen
 
Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Anel Sosa
 
Protocolo De Resolucion De Direcciones
Protocolo De Resolucion De Direcciones Protocolo De Resolucion De Direcciones
Protocolo De Resolucion De Direcciones Royer Llocclla Juarez
 
Registros del procesador 01
Registros del procesador 01Registros del procesador 01
Registros del procesador 01Isaias Castro
 
Clasificación de flynn (arquitectura del computador)
Clasificación de flynn (arquitectura del computador)Clasificación de flynn (arquitectura del computador)
Clasificación de flynn (arquitectura del computador)rosluck29
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparacionesgabo
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos josecuartas
 
Direccionamiento - Ejercicios - Explicacion - Clases A-B-C
Direccionamiento - Ejercicios - Explicacion - Clases A-B-CDireccionamiento - Ejercicios - Explicacion - Clases A-B-C
Direccionamiento - Ejercicios - Explicacion - Clases A-B-Cliberaunlibroupeg
 

Was ist angesagt? (20)

Telefonía Móvil Celular (0 a 4G LTE-Advanced)
Telefonía Móvil Celular (0 a 4G LTE-Advanced)Telefonía Móvil Celular (0 a 4G LTE-Advanced)
Telefonía Móvil Celular (0 a 4G LTE-Advanced)
 
24 Ejercicios Subnetting
24 Ejercicios Subnetting24 Ejercicios Subnetting
24 Ejercicios Subnetting
 
De palabras y lenguajes
De palabras y lenguajesDe palabras y lenguajes
De palabras y lenguajes
 
Practicas prolog
Practicas prologPracticas prolog
Practicas prolog
 
GNS3 instalación, configuración, ipv4, ipv6
GNS3 instalación, configuración, ipv4, ipv6GNS3 instalación, configuración, ipv4, ipv6
GNS3 instalación, configuración, ipv4, ipv6
 
Bases De Datos Paralelas
Bases De Datos ParalelasBases De Datos Paralelas
Bases De Datos Paralelas
 
Lenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajesLenguaje y automata operaciones con lenguajes
Lenguaje y automata operaciones con lenguajes
 
ENRUTAMIENTO ESTADO ENLACE
ENRUTAMIENTO ESTADO ENLACEENRUTAMIENTO ESTADO ENLACE
ENRUTAMIENTO ESTADO ENLACE
 
Recursividad Con C#
Recursividad Con C#Recursividad Con C#
Recursividad Con C#
 
Documento de Busqueda Binaria
Documento de Busqueda BinariaDocumento de Busqueda Binaria
Documento de Busqueda Binaria
 
Fecha y hora cmd
Fecha y hora cmdFecha y hora cmd
Fecha y hora cmd
 
Perceptrón simple y multicapa
Perceptrón simple y multicapaPerceptrón simple y multicapa
Perceptrón simple y multicapa
 
Subneteo
SubneteoSubneteo
Subneteo
 
Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)Componentes y evolucion del modelado de negocios(investigacion)
Componentes y evolucion del modelado de negocios(investigacion)
 
Protocolo De Resolucion De Direcciones
Protocolo De Resolucion De Direcciones Protocolo De Resolucion De Direcciones
Protocolo De Resolucion De Direcciones
 
Registros del procesador 01
Registros del procesador 01Registros del procesador 01
Registros del procesador 01
 
Clasificación de flynn (arquitectura del computador)
Clasificación de flynn (arquitectura del computador)Clasificación de flynn (arquitectura del computador)
Clasificación de flynn (arquitectura del computador)
 
Equipo 6 comparaciones
Equipo 6 comparacionesEquipo 6 comparaciones
Equipo 6 comparaciones
 
Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos Sql DML Lenguaje de manipulación de datos
Sql DML Lenguaje de manipulación de datos
 
Direccionamiento - Ejercicios - Explicacion - Clases A-B-C
Direccionamiento - Ejercicios - Explicacion - Clases A-B-CDireccionamiento - Ejercicios - Explicacion - Clases A-B-C
Direccionamiento - Ejercicios - Explicacion - Clases A-B-C
 

Ähnlich wie 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_ensambladorGloria Azúa
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensambladorgbermeo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1gabo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1gabo
 
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 IIavaldero
 
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 - ExasolJavier Abadía
 
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
 
Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02Ensamblador8086 100921111644-phpapp02
Ensamblador8086 100921111644-phpapp02samueldcruz
 
Oracle tipos-de-datos
Oracle tipos-de-datosOracle tipos-de-datos
Oracle tipos-de-datosJairocklml
 
Propiedades del campo
Propiedades del campoPropiedades del campo
Propiedades del campoDubraska1
 
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAMODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAgbermeo
 
Codigos2adsmediamobile
Codigos2adsmediamobileCodigos2adsmediamobile
Codigos2adsmediamobilePAVEL ALVAREZ
 

Ähnlich wie 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
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
 
Data segment
Data segmentData segment
Data segment
 
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
 
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMAMODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
MODOS DE DIRECIONAMIENTO DE LA MEMORIA DE PROGRAMA
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Cursor Adapter
Cursor AdapterCursor Adapter
Cursor Adapter
 
Codigos2adsmediamobile
Codigos2adsmediamobileCodigos2adsmediamobile
Codigos2adsmediamobile
 
Oracle database
Oracle databaseOracle database
Oracle database
 

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