System("pause"); de C en ASM[DUDA]

Iniciado por SLUGER, 11 Junio 2009, 06:01 AM

0 Miembros y 1 Visitante están viendo este tema.

SLUGER

Main:
        ;Mostrar mensaje 'Presione una tecla para continuar . . . '
        ORG 100H
        MOV AH, 09H
        MOV EDX, MesG
        INT 21H
        ;Leer caracter
        MOV AH, 08H
        INT 21H
        INT 20H
Datos:
        MesG DB "Presione una tecla para continuar . . . ", 24H


Tengo las siguientes dudas en el code:
1.-¿Que es lo que significa ORG?
2.-¿Porque donde declaro el identificador MesG tengo que poner 24H? (si no me tira unos simbolos raros)
3.-¿Porque el FASM me compila a .COM y no a .EXE?
4.-¿Haci es como se hace?

Binaria

#1
 1- ORG 100h lo vi el lunes en la clase de ensambla jeje, tiene que ver con el enlazado .COM. Busqué x ahi y dice
" ORG 100h es obligatoria en programas COM, porque se cargaran en memoria en la posicion CS:100 ( logicamente el segemento de código, CS )." (http://www.lawebdelprogramador.com/news/mostrar_new.php?id=29&texto=Ensamblador&n1=349091&n2=1&n3=0&n4=0&n5=0&n6=0&n7=0&n8=0&n9=0&n0=0). Mañana le pregunto mi profe para que me explique bien XD

2- el 24H es el ascii del caracter "$" que es el indicador de fin de hilera para la 09H de la interrupcion del DOS (21H) (tampoco es el indicador de fin de hilera en general). Si no lo pone pasa derecho e imprime todo lo que se encuentre en memoria despues del mensaje hasta topar con algun "$" que se encuentre por ahi de casualidad.

3- Yo no uso fasm pero eso es cuestion de leer la documentacion o el help y modificar los parametros de "ensamblaje" (yo creo que mas bien de linker). Para que haga un .exe y no un .com

4- el codigo en si esta bien, no se que tipo de definicion de segmentos va a usar
-> http://mixtli.utm.mx/~resdi/ENSAMBLADOR_DE_ARCHIVO.pdf
"Yo pienso, facilito y mejoro el mundo" - De por ahi

YST

Respondo la duda de por que en .com y no  .exe , cuando pones el org 100h el FASM te fabrica un .com , si le pusieras format pe te produciria  un .exe si le pone un format pe dll te produce un .dll .


Yo le enseñe a Kayser a usar objetos en ASM

Eternal Idol

Lo que dice YST no es del todo correcto en tu caso debido a que PE es el formato de ejecutable de Windows y tu programa es para MS-DOS donde el formato de ejecutable es MZ (los ejecutables .COM no tienen formato alguno son 100% codigo).

http://flatassembler.net/docs.php?article=manual#2.4
La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón

Binaria

ya le pregunte mi profesor XD
el org es para el ensamblador ( no es una instruccion de ensamblador) 100h es para que el codigo comience a partir de la direccion 100h, cuando se necesita reservar espacio antes en el segmento, que por lo general usa el sistema operativo (hay una sigla para lo que el sistema le agrega ahi pero no la recuerdo) (seguro es el caso de un .com )y si no lo hace le cae encima al codigo. Pero el org no es exclusivo para un .com

Tal vez no se entiende mucho de mi explicacion :silbar: , pero el punto es que indica a partir de que direccion comienza el codigo en el segmento.
"Yo pienso, facilito y mejoro el mundo" - De por ahi

SLUGER

 :D Muchas Gracas a todos los que respondieron  :-*