SlideShare una empresa de Scribd logo
1 de 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

Más contenido relacionado

La actualidad más candente

Tipos de cable utp
Tipos de cable utpTipos de cable utp
Tipos de cable utp
OSWALDODEDE0
 
ESTANDARES IEEE
 ESTANDARES IEEE ESTANDARES IEEE
ESTANDARES IEEE
salesperson
 
La capa de aplicación
La capa de aplicaciónLa capa de aplicación
La capa de aplicación
Juan Alvarez
 
Direcciones ip
Direcciones ipDirecciones ip
Direcciones ip
wsar85
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Francesc Perez
 

La actualidad más candente (20)

Interfaz dte dce
Interfaz dte dceInterfaz dte dce
Interfaz dte dce
 
DISPOSITIVOS DE CAPA 2 DEL MODELO OSI
DISPOSITIVOS DE CAPA 2 DEL MODELO OSIDISPOSITIVOS DE CAPA 2 DEL MODELO OSI
DISPOSITIVOS DE CAPA 2 DEL MODELO OSI
 
Tipos de cable utp
Tipos de cable utpTipos de cable utp
Tipos de cable utp
 
VLSI Module 5.pdf
VLSI Module 5.pdfVLSI Module 5.pdf
VLSI Module 5.pdf
 
ESTANDARES IEEE
 ESTANDARES IEEE ESTANDARES IEEE
ESTANDARES IEEE
 
Redes, capa fisica
Redes, capa fisicaRedes, capa fisica
Redes, capa fisica
 
Tutorial getting started with RISC-V verification
Tutorial getting started with RISC-V verificationTutorial getting started with RISC-V verification
Tutorial getting started with RISC-V verification
 
Frame Relay & X25
Frame Relay & X25Frame Relay & X25
Frame Relay & X25
 
Administracion de usuarios y grupos
Administracion de usuarios y gruposAdministracion de usuarios y grupos
Administracion de usuarios y grupos
 
Modelo de Referência OSI
Modelo de Referência OSIModelo de Referência OSI
Modelo de Referência OSI
 
Tabla de símbolos
Tabla de símbolosTabla de símbolos
Tabla de símbolos
 
Analizador lexico
Analizador lexicoAnalizador lexico
Analizador lexico
 
La capa de aplicación
La capa de aplicaciónLa capa de aplicación
La capa de aplicación
 
Synthesis
SynthesisSynthesis
Synthesis
 
Direcciones ip
Direcciones ipDirecciones ip
Direcciones ip
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Protocolos FTP y SFTP
Protocolos FTP y SFTPProtocolos FTP y SFTP
Protocolos FTP y SFTP
 
Arquitectura de Redes 802.x
Arquitectura de Redes 802.xArquitectura de Redes 802.x
Arquitectura de Redes 802.x
 
Generador de codigo intermedio
Generador de codigo intermedioGenerador de codigo intermedio
Generador de codigo intermedio
 
Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4Fundamentos de redes: 6. Direccionamiento de la red ipv4
Fundamentos de redes: 6. Direccionamiento de la red ipv4
 

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
 
Lenguaje Ensamblador
Lenguaje EnsambladorLenguaje Ensamblador
Lenguaje Ensamblador
gbermeo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
gabo
 
Equipo 1
Equipo 1Equipo 1
Equipo 1
gabo
 
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
 
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
gbermeo
 
Codigos2adsmediamobile
Codigos2adsmediamobileCodigos2adsmediamobile
Codigos2adsmediamobile
PAVEL ALVAREZ
 

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
 
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