elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: AIO elhacker.NET 2021 Compilación herramientas análisis y desinfección malware


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  ASM (Moderador: Eternal Idol)
| | | |-+  System("pause"); de C en ASM[DUDA]
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: System("pause"); de C en ASM[DUDA]  (Leído 8,692 veces)
SLUGER

Desconectado Desconectado

Mensajes: 46


...


Ver Perfil WWW
System("pause"); de C en ASM[DUDA]
« en: 11 Junio 2009, 06:01 am »

Código:
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?


En línea

Binaria

Desconectado Desconectado

Mensajes: 15


aqui va un texto personal (?)


Ver Perfil
Re: System("pause"); de C en ASM[DUDA]
« Respuesta #1 en: 11 Junio 2009, 06:32 am »

 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


« Última modificación: 11 Junio 2009, 06:35 am por Binaria » En línea

"Yo pienso, facilito y mejoro el mundo" - De por ahi
YST


Desconectado Desconectado

Mensajes: 965


I'm you


Ver Perfil WWW
Re: System("pause"); de C en ASM[DUDA]
« Respuesta #2 en: 11 Junio 2009, 07:07 am »

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 .
En línea



Yo le enseñe a Kayser a usar objetos en ASM
Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.937


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: System("pause"); de C en ASM[DUDA]
« Respuesta #3 en: 11 Junio 2009, 08:06 am »

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
En línea

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

Desconectado Desconectado

Mensajes: 15


aqui va un texto personal (?)


Ver Perfil
Re: System("pause"); de C en ASM[DUDA]
« Respuesta #4 en: 11 Junio 2009, 18:32 pm »

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.
En línea

"Yo pienso, facilito y mejoro el mundo" - De por ahi
SLUGER

Desconectado Desconectado

Mensajes: 46


...


Ver Perfil WWW
Re: System("pause"); de C en ASM[DUDA]
« Respuesta #5 en: 12 Junio 2009, 03:38 am »

 :D Muchas Gracas a todos los que respondieron  :-*
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Duda funcion "SYSTEM", ¿porque funciona con unos comandos y con otros no?
Programación C/C++
BlerofonT 8 17,171 Último mensaje 10 Julio 2012, 12:09 pm
por HdM
system ("pause");
Programación C/C++
ductum fusti percusit 8 6,508 Último mensaje 30 Marzo 2015, 21:20 pm
por ductum fusti percusit
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines