SlideShare une entreprise Scribd logo
1  sur  22
María Guadalupe Olvera Nolasco
Verónica Patricia Pasillas Gutierrez
Luz Angélica Sánchez Castruita
Los archivos COM tienen como máximo
65536 bytes de extensión, que "curiosamente"
coinciden con 0FFFFh, que es el máximo valor
que puede tener un registro de 16 bits, y es
almacenado en memoria inmediatamente
después del PSP.

     Por lo tanto, cualquier dirección dentro
del COM tendrá en común el registro de
segmento, y con el de desplazamiento se podrá
averiguar el lugar donde se encuentra
cualquier cosa en el archivo.
El registro SP contiene una dirección de 2
bytes abajo de la memoria máxima disponible para
el programa, lo que significa que hay 64 KB de
espacio disponible para el programa, SP = 0FFFEh.

     Esto se debe a que DOS siempre coloca un
CERO en la pila antes de transferir el control al
programa .COM.
Lineamientos para programas .COM
1. Un programa .COM solamente puede ocupar un espacio
máximo de memoria de 64 KB. (Un segmento.)
2. La definición del segmento es muy simple, ya que solo
puede usarse un segmento.
3. Todos los registros de segmento son inicializados en el
mismo segmento.
4. Deberá usarse la directiva ORG para iniciar en el byte 256
(100h), de tal manera de dejar espacio para el PSP, el
cual es cargado en memoria de manera automática en el
momento de cargar el programa.
5. Si el programa contiene DATOS, éstos no deberán ser
ejecutados, se podrá usar la instrucción JMP de tal forma
de brincarlos. También se pueden colocar dichos datos al final
del programa después de la instrucción de retorno al
DOS.
Formato para Estructura Estándar.
Sintaxis de la declaración de un segmento

     Sintaxis de SEGMENT
           nombre-seg SEGMENT
                 ---
                 sentencias
                 ---
           nombre_seg ENDS

     El programa debe terminar con: END etiqueta
En este caso la etiqueta se llama inicio, también se
pone seguida de (:) en la primer línea de código del
programa.
Sintaxis del las instrucciones en Lenguaje Ensamblador.

[etiqueta] mnemónico [operandos] [; comentarios]

Donde:
assume: Habilita la verificación de error para valores de
registros. Establece la relación entre un registro de segmento y
un segmento.

       Sintaxis:
              assume SEG_REG:NOM_SEG,...
org    Directiva que pone el IP en el valor de expresión.
       Sintaxis:
              org expresión
jmp    Instrucción de salto incondicional.
       Sintaxis:
              jmp etiqueta
              ---
              etiqueta:
mov Instrucción de transferencia de información de un
operando      fuente a un operando destino.
       Sintaxis:
              mov oper_des, oper_fuente
int    Instrucción que llama a ejecución a una interrupción de
un byte
       Sintaxis:
              int # interrupción
El Llamado a una Interrupción.

       En un programa se llaman a algunas interrupciones,
para ello se requiere conocer la sintaxis de llamado a estas
subrutinas. Por ejemplo:

INT 21h Función 4Ch: Regresa al DOS con código de retorno

      Entrada:      AH = 4Ch
                    AL = Valor regresado.

      Use INT 21h función 4Ch para terminar un programa.
Puede regresar un valor al programa padre en el registro AL..
Normalmente se regresa un CERO (00h) cuando el programa
termina sin problemas.
Ejemplo de un programa .COM. usando Estructura Estándar.
OBSERVACIONES.
- El programa escribe la palabra Angelica,Lupita,Veronica.
- El programa consta de un solo segmento, el de código.
- El operador OFFSET nos permite escribir la dirección de la variable
Dato al registro DX.
Para envía la palabra Angelica,Lupita,Veronica., utilizamos una rutina
definida por el DOS en la interrupción 21h, es la
función 09h, la cual se define y llama de la siguiente manera:
INT 21h Función 09h: Imprime una cadena de caracteres sobre la
pantalla.
Entrada: AH = 09h
DS:DX = Dirección de inicio de la cadena.
La función 09h es muy fácil de usar, para utilizarla coloque la cadena en
memoria y termínela con un signo de
pesos ($), esto significa que no se puede incluir este signo como parte
de la cadena, la dirección del inicio de la cadena es
colocada en los registros DS:DX
Estructura Simplificada.

       Los ensambladores de Microsoft y Borland en su
versiones actuales ofrecen ciertas facilidades que nos
simplifican la creación de archivos fuente en lenguaje
ENSAMBLADOR, a este método le llamaremos Estructura
Simplificada, la cual además de facilitarnos la tarea, hace
que la estructura del programa sea compatible con los
lenguajes de alto nivel estándares.

      Tal vez al presentar el método parezca en principio
un poco mas elaborado, que el anterior, pero una vez
dominándolo es más simple, sobre todo cuando se trabaja
con programas .EXE.
En el esqueleto es necesario primero definir el
modelo de memoria a utilizar, de la misma forma que se
hace en los lenguajes de alto nivel; en este caso usamos
el modelo Small. Su definición se hace mediante la
directiva .MODEL (note que el punto es parte del nombre
del identificador).

      El segmento de código (en este caso es el único),
se define mediante la directiva .CODE, se establece el
punto de entrada al código mediante la etiqueta inicio:,
la cual va también después del END final. El retorno al
DOS se hace mediante la misma función del DOS: 4Ch
Veamos el siguiente ejemplo el programa
ENSA01A.ASM; en este programa usamos 2 nuevas
directivas:

TITLE Establece el nombre del programa al inicio de
cada hoja en el archivo .LST.

COMMENT Nos permite escribir comentarios en
varios renglones, utilizando solo dos delimitadores
cualquiera, uno al inicio del comentario y el mismo al
final.
Estructura .COM
Estructura .COM
Estructura .COM
Estructura .COM

Contenu connexe

Tendances

Alu design-project
Alu design-projectAlu design-project
Alu design-projectalphankg1
 
Multiplication algorithm
Multiplication algorithmMultiplication algorithm
Multiplication algorithmGaurav Subham
 
Digital signal processing computer based approach - sanjit k. mitra (2nd ed)
Digital signal processing   computer based approach - sanjit k. mitra (2nd ed)Digital signal processing   computer based approach - sanjit k. mitra (2nd ed)
Digital signal processing computer based approach - sanjit k. mitra (2nd ed)Surbhi Maheshwari
 
flag register of 8086
flag register of 8086flag register of 8086
flag register of 8086asrithak
 
Computer instructions
Computer instructionsComputer instructions
Computer instructionsAnuj Modi
 
SAP II ARTICTURE ,SAP 2
SAP II ARTICTURE ,SAP 2SAP II ARTICTURE ,SAP 2
SAP II ARTICTURE ,SAP 2Apar Pramod
 
Application of fourier series
Application of fourier seriesApplication of fourier series
Application of fourier seriesGirish Dhareshwar
 
Perceptron algorithm
Perceptron algorithmPerceptron algorithm
Perceptron algorithmZul Kawsar
 
Linear Convolution using Matlab Code
Linear Convolution  using Matlab CodeLinear Convolution  using Matlab Code
Linear Convolution using Matlab CodeBharti Airtel Ltd.
 
General register organization (computer organization)
General register organization  (computer organization)General register organization  (computer organization)
General register organization (computer organization)rishi ram khanal
 
KARNAUGH MAP(K-MAP)
KARNAUGH MAP(K-MAP)KARNAUGH MAP(K-MAP)
KARNAUGH MAP(K-MAP)mihir jain
 
Noise filtering
Noise filteringNoise filtering
Noise filteringAlaa Ahmed
 

Tendances (20)

8051 Timer
8051 Timer8051 Timer
8051 Timer
 
ALU
ALUALU
ALU
 
Alu design-project
Alu design-projectAlu design-project
Alu design-project
 
Walsh transform
Walsh transformWalsh transform
Walsh transform
 
Lecture 3 instruction set
Lecture 3  instruction setLecture 3  instruction set
Lecture 3 instruction set
 
Multiplication algorithm
Multiplication algorithmMultiplication algorithm
Multiplication algorithm
 
peripheral interfacing
peripheral interfacingperipheral interfacing
peripheral interfacing
 
Digital signal processing computer based approach - sanjit k. mitra (2nd ed)
Digital signal processing   computer based approach - sanjit k. mitra (2nd ed)Digital signal processing   computer based approach - sanjit k. mitra (2nd ed)
Digital signal processing computer based approach - sanjit k. mitra (2nd ed)
 
flag register of 8086
flag register of 8086flag register of 8086
flag register of 8086
 
Computer instructions
Computer instructionsComputer instructions
Computer instructions
 
Protection mode
Protection modeProtection mode
Protection mode
 
SAP II ARTICTURE ,SAP 2
SAP II ARTICTURE ,SAP 2SAP II ARTICTURE ,SAP 2
SAP II ARTICTURE ,SAP 2
 
Ch12 microprocessor interrupts
Ch12 microprocessor interruptsCh12 microprocessor interrupts
Ch12 microprocessor interrupts
 
Application of fourier series
Application of fourier seriesApplication of fourier series
Application of fourier series
 
Perceptron algorithm
Perceptron algorithmPerceptron algorithm
Perceptron algorithm
 
Linear Convolution using Matlab Code
Linear Convolution  using Matlab CodeLinear Convolution  using Matlab Code
Linear Convolution using Matlab Code
 
Conditional branches
Conditional branchesConditional branches
Conditional branches
 
General register organization (computer organization)
General register organization  (computer organization)General register organization  (computer organization)
General register organization (computer organization)
 
KARNAUGH MAP(K-MAP)
KARNAUGH MAP(K-MAP)KARNAUGH MAP(K-MAP)
KARNAUGH MAP(K-MAP)
 
Noise filtering
Noise filteringNoise filtering
Noise filtering
 

Similaire à Estructura .COM

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
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Carlos Pastorino
 
Exposición ted
Exposición tedExposición ted
Exposición tedCOVAEV
 
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_ireneromaweb
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje Cguestbc0748
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cmundofranco
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cvictdiazm
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje cmary219122
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assemblerangel
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorInfomania pro
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00Car_00_01
 

Similaire à Estructura .COM (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
 
Data segment
Data segmentData segment
Data segment
 
Lenguaje ensamblador
Lenguaje ensambladorLenguaje ensamblador
Lenguaje ensamblador
 
Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07Programacion Lenguaje Assembler 25 10 07
Programacion Lenguaje Assembler 25 10 07
 
Ensamblador
EnsambladorEnsamblador
Ensamblador
 
Mipag web
Mipag webMipag web
Mipag web
 
Comenzando a programar
Comenzando a programarComenzando a programar
Comenzando a programar
 
Exposición ted
Exposición tedExposición ted
Exposición ted
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Introduccion al assembler[1]
Introduccion al assembler[1]Introduccion al assembler[1]
Introduccion al assembler[1]
 
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
Curso de iniciaci_n_al_lenguaje_c_www.emugamesworld.com_
 
Curso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje CCurso De IniciacióN Al Lenguaje C
Curso De IniciacióN Al Lenguaje C
 
Emsamblador
EmsambladorEmsamblador
Emsamblador
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Curso de iniciación al lenguaje c
Curso de iniciación al lenguaje cCurso de iniciación al lenguaje c
Curso de iniciación al lenguaje c
 
Tutorial ensamblador
Tutorial ensambladorTutorial ensamblador
Tutorial ensamblador
 
Introduccion al assembler
Introduccion al assemblerIntroduccion al assembler
Introduccion al assembler
 
Clase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensambladorClase10 2-lenguaje ensamblador
Clase10 2-lenguaje ensamblador
 
Lenguaje Ensamblador00
Lenguaje Ensamblador00Lenguaje Ensamblador00
Lenguaje Ensamblador00
 

Dernier

presentacion norma240201056induccion.pdf
presentacion norma240201056induccion.pdfpresentacion norma240201056induccion.pdf
presentacion norma240201056induccion.pdfIsabelSena13
 
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBssusere52185
 
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdf
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdfUNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdf
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdfARACELIGINESZARATE1
 
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdf
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdfREGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdf
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdfJULIOELIDEOROSIERRA
 
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdf
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdfPROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdf
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdfrgsteveo32
 
Explora el boletín de 17 de abril de 2024
Explora el boletín de 17 de abril de 2024Explora el boletín de 17 de abril de 2024
Explora el boletín de 17 de abril de 2024Yes Europa
 

Dernier (6)

presentacion norma240201056induccion.pdf
presentacion norma240201056induccion.pdfpresentacion norma240201056induccion.pdf
presentacion norma240201056induccion.pdf
 
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
4.2. BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
 
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdf
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdfUNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdf
UNIDAD 2 REGISTRO Y CONTROL DE MERCANCIAS.pdf
 
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdf
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdfREGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdf
REGLAMENTO DEL APRENDIZ SERVICIO NACIONAL DE APRENDIZAJE SENA.pdf
 
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdf
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdfPROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdf
PROGRAMA DE EMPRENDIMIENTOS RENTABLES ARGENTINA.pdf
 
Explora el boletín de 17 de abril de 2024
Explora el boletín de 17 de abril de 2024Explora el boletín de 17 de abril de 2024
Explora el boletín de 17 de abril de 2024
 

Estructura .COM

  • 1. María Guadalupe Olvera Nolasco Verónica Patricia Pasillas Gutierrez Luz Angélica Sánchez Castruita
  • 2. Los archivos COM tienen como máximo 65536 bytes de extensión, que "curiosamente" coinciden con 0FFFFh, que es el máximo valor que puede tener un registro de 16 bits, y es almacenado en memoria inmediatamente después del PSP. Por lo tanto, cualquier dirección dentro del COM tendrá en común el registro de segmento, y con el de desplazamiento se podrá averiguar el lugar donde se encuentra cualquier cosa en el archivo.
  • 3. El registro SP contiene una dirección de 2 bytes abajo de la memoria máxima disponible para el programa, lo que significa que hay 64 KB de espacio disponible para el programa, SP = 0FFFEh. Esto se debe a que DOS siempre coloca un CERO en la pila antes de transferir el control al programa .COM.
  • 4. Lineamientos para programas .COM 1. Un programa .COM solamente puede ocupar un espacio máximo de memoria de 64 KB. (Un segmento.) 2. La definición del segmento es muy simple, ya que solo puede usarse un segmento. 3. Todos los registros de segmento son inicializados en el mismo segmento. 4. Deberá usarse la directiva ORG para iniciar en el byte 256 (100h), de tal manera de dejar espacio para el PSP, el cual es cargado en memoria de manera automática en el momento de cargar el programa. 5. Si el programa contiene DATOS, éstos no deberán ser ejecutados, se podrá usar la instrucción JMP de tal forma de brincarlos. También se pueden colocar dichos datos al final del programa después de la instrucción de retorno al DOS.
  • 5.
  • 7. Sintaxis de la declaración de un segmento Sintaxis de SEGMENT nombre-seg SEGMENT --- sentencias --- nombre_seg ENDS El programa debe terminar con: END etiqueta En este caso la etiqueta se llama inicio, también se pone seguida de (:) en la primer línea de código del programa.
  • 8. Sintaxis del las instrucciones en Lenguaje Ensamblador. [etiqueta] mnemónico [operandos] [; comentarios] Donde: assume: Habilita la verificación de error para valores de registros. Establece la relación entre un registro de segmento y un segmento. Sintaxis: assume SEG_REG:NOM_SEG,... org Directiva que pone el IP en el valor de expresión. Sintaxis: org expresión
  • 9. jmp Instrucción de salto incondicional. Sintaxis: jmp etiqueta --- etiqueta: mov Instrucción de transferencia de información de un operando fuente a un operando destino. Sintaxis: mov oper_des, oper_fuente int Instrucción que llama a ejecución a una interrupción de un byte Sintaxis: int # interrupción
  • 10. El Llamado a una Interrupción. En un programa se llaman a algunas interrupciones, para ello se requiere conocer la sintaxis de llamado a estas subrutinas. Por ejemplo: INT 21h Función 4Ch: Regresa al DOS con código de retorno Entrada: AH = 4Ch AL = Valor regresado. Use INT 21h función 4Ch para terminar un programa. Puede regresar un valor al programa padre en el registro AL.. Normalmente se regresa un CERO (00h) cuando el programa termina sin problemas.
  • 11. Ejemplo de un programa .COM. usando Estructura Estándar.
  • 12.
  • 13.
  • 14. OBSERVACIONES. - El programa escribe la palabra Angelica,Lupita,Veronica. - El programa consta de un solo segmento, el de código. - El operador OFFSET nos permite escribir la dirección de la variable Dato al registro DX. Para envía la palabra Angelica,Lupita,Veronica., utilizamos una rutina definida por el DOS en la interrupción 21h, es la función 09h, la cual se define y llama de la siguiente manera: INT 21h Función 09h: Imprime una cadena de caracteres sobre la pantalla. Entrada: AH = 09h DS:DX = Dirección de inicio de la cadena. La función 09h es muy fácil de usar, para utilizarla coloque la cadena en memoria y termínela con un signo de pesos ($), esto significa que no se puede incluir este signo como parte de la cadena, la dirección del inicio de la cadena es colocada en los registros DS:DX
  • 15. Estructura Simplificada. Los ensambladores de Microsoft y Borland en su versiones actuales ofrecen ciertas facilidades que nos simplifican la creación de archivos fuente en lenguaje ENSAMBLADOR, a este método le llamaremos Estructura Simplificada, la cual además de facilitarnos la tarea, hace que la estructura del programa sea compatible con los lenguajes de alto nivel estándares. Tal vez al presentar el método parezca en principio un poco mas elaborado, que el anterior, pero una vez dominándolo es más simple, sobre todo cuando se trabaja con programas .EXE.
  • 16.
  • 17. En el esqueleto es necesario primero definir el modelo de memoria a utilizar, de la misma forma que se hace en los lenguajes de alto nivel; en este caso usamos el modelo Small. Su definición se hace mediante la directiva .MODEL (note que el punto es parte del nombre del identificador). El segmento de código (en este caso es el único), se define mediante la directiva .CODE, se establece el punto de entrada al código mediante la etiqueta inicio:, la cual va también después del END final. El retorno al DOS se hace mediante la misma función del DOS: 4Ch
  • 18. Veamos el siguiente ejemplo el programa ENSA01A.ASM; en este programa usamos 2 nuevas directivas: TITLE Establece el nombre del programa al inicio de cada hoja en el archivo .LST. COMMENT Nos permite escribir comentarios en varios renglones, utilizando solo dos delimitadores cualquiera, uno al inicio del comentario y el mismo al final.