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?
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
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 .
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
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.
:D Muchas Gracas a todos los que respondieron :-*