SlideShare uma empresa 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

Mais conteúdo relacionado

Mais procurados

Controller area network
Controller area networkController area network
Controller area networkDivi1597
 
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...Shrishail Bhat
 
Types of buses of computer
Types of buses of computerTypes of buses of computer
Types of buses of computerSAGAR DODHIA
 
IC 8253 - Microprocessor
IC 8253 - Microprocessor IC 8253 - Microprocessor
IC 8253 - Microprocessor Vatsal N Shah
 
Memory organization
Memory organizationMemory organization
Memory organizationishapadhy
 
CXL chapter1 and chapter 2 presentation.pptx
CXL chapter1 and chapter 2 presentation.pptxCXL chapter1 and chapter 2 presentation.pptx
CXL chapter1 and chapter 2 presentation.pptxkirankumarpalakurthi
 
Microcontoller and Embedded System
Microcontoller and Embedded SystemMicrocontoller and Embedded System
Microcontoller and Embedded SystemKaran Thakkar
 
Memory organization (Computer architecture)
Memory organization (Computer architecture)Memory organization (Computer architecture)
Memory organization (Computer architecture)Sandesh Jonchhe
 
Intel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationIntel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationAdeel Rasheed
 
Introduction to Embedded System I : Chapter 2 (2nd portion)
Introduction to Embedded System I : Chapter 2 (2nd portion)Introduction to Embedded System I : Chapter 2 (2nd portion)
Introduction to Embedded System I : Chapter 2 (2nd portion)Moe Moe Myint
 
Pic microcontroller architecture
Pic microcontroller architecturePic microcontroller architecture
Pic microcontroller architectureDominicHendry
 
Introduction to microcontroller
Introduction to microcontrollerIntroduction to microcontroller
Introduction to microcontrollerRajib Roy
 

Mais procurados (20)

Cache memory
Cache memoryCache memory
Cache memory
 
8086 memory segmentation
8086 memory segmentation8086 memory segmentation
8086 memory segmentation
 
Controller area network
Controller area networkController area network
Controller area network
 
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...
Embedded Systems (18EC62) - ARM Cortex-M3 Instruction Set and Programming (Mo...
 
CISC & RISC Architecture
CISC & RISC Architecture CISC & RISC Architecture
CISC & RISC Architecture
 
Procesamiento en paralelo
Procesamiento en paraleloProcesamiento en paralelo
Procesamiento en paralelo
 
Types of buses of computer
Types of buses of computerTypes of buses of computer
Types of buses of computer
 
IC 8253 - Microprocessor
IC 8253 - Microprocessor IC 8253 - Microprocessor
IC 8253 - Microprocessor
 
DDR SDRAMs
DDR SDRAMsDDR SDRAMs
DDR SDRAMs
 
Memory organization
Memory organizationMemory organization
Memory organization
 
CXL chapter1 and chapter 2 presentation.pptx
CXL chapter1 and chapter 2 presentation.pptxCXL chapter1 and chapter 2 presentation.pptx
CXL chapter1 and chapter 2 presentation.pptx
 
Microcontoller and Embedded System
Microcontoller and Embedded SystemMicrocontoller and Embedded System
Microcontoller and Embedded System
 
Memory organization (Computer architecture)
Memory organization (Computer architecture)Memory organization (Computer architecture)
Memory organization (Computer architecture)
 
Intel Microprocessors 8086 Documentation
Intel Microprocessors 8086 DocumentationIntel Microprocessors 8086 Documentation
Intel Microprocessors 8086 Documentation
 
82C55 PPI (1).ppt
82C55 PPI (1).ppt82C55 PPI (1).ppt
82C55 PPI (1).ppt
 
Lpc2148 i2c
Lpc2148 i2cLpc2148 i2c
Lpc2148 i2c
 
Introduction to Embedded System I : Chapter 2 (2nd portion)
Introduction to Embedded System I : Chapter 2 (2nd portion)Introduction to Embedded System I : Chapter 2 (2nd portion)
Introduction to Embedded System I : Chapter 2 (2nd portion)
 
Dd sdram
Dd sdramDd sdram
Dd sdram
 
Pic microcontroller architecture
Pic microcontroller architecturePic microcontroller architecture
Pic microcontroller architecture
 
Introduction to microcontroller
Introduction to microcontrollerIntroduction to microcontroller
Introduction to microcontroller
 

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

Semelhante 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