Compilador/Linkeador para ASM

Iniciado por agzt, 6 Diciembre 2012, 23:08 PM

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

agzt

Hola, alguien me podría decir que compilador y linkeador puedo usar para generar un ejecutable .EXE para windows NT (de ser posible compatible con W7 32 bits) del siguiente código asm?:

Código (asm) [Seleccionar]
.MODEL SMALL
.CODE
Programa:
MOV AX, @DATA
MOV DS, AX
MOV DX, Offset Texto
MOV AH, 9
INT 21H
.DATA
Texto DB 'Mensaje en pantalla.$'
.STACK
END Programa


He intentado con MASM32 pero me tira unos errores (creo que debido a que es para 32 bits (y el código es para 16) y no maneja interrupciones?)
CitarAssembling: C:\masm32\asd\asd.asm
C:\masm32\asd\asd.asm(4) : error A2006: undefined symbol : DGROUP
C:\masm32\asd\asd.asm(12) : warning A4023: with /coff switch, leading underscore required for start address : Programa


He probado otras alternativas pero sin ningún resultado alguno, se que sirve el MASM 5.0, pero no lo he encontrado por ningún lado.

Si alguien me podría ayudar se lo agradecería,
Andrés

Eternal Idol

Busca alguna version antigua de MASM o sino usa FASM.

http://flatassembler.net/
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

x64core

#2
Cita de: agzt en  6 Diciembre 2012, 23:08 PM
Hola, alguien me podría decir que compilador y linkeador puedo usar para generar un ejecutable .EXE para windows NT (de ser posible compatible con W7 32 bits) del siguiente código asm?:

Código (asm) [Seleccionar]
.MODEL SMALL
.CODE
Programa:
MOV AX, @DATA
MOV DS, AX
MOV DX, Offset Texto
MOV AH, 9
INT 21H
.DATA
Texto DB 'Mensaje en pantalla.$'
.STACK
END Programa


He intentado con MASM32 pero me tira unos errores (creo que debido a que es para 32 bits (y el código es para 16) y no maneja interrupciones?)

He probado otras alternativas pero sin ningún resultado alguno, se que sirve el MASM 5.0, pero no lo he encontrado por ningún lado.

Si alguien me podría ayudar se lo agradecería,
Andrés


MASM32 puede ensamblar ese código, asegúrate que estas pasando los parámetros correctos, ese program es de tipo EXE de 16-bits.
Publica tus parámetros que estas pasando al ensamblador y al linker. todo lo que puede hacer MASM 5.0 puede hacerlo MASM32.

ed:
Bueno de todas maneras intentar con esto, son los suficientes para ensamblar ese codigo:
C:\Masm32\bin\ml.exe /DMASM /DDOS /Zm /c /nologo "Yourfile.asm"
C:\Masm32\Bin\link16.exe /nologo "Yourfile.obj"

cambiar path si es necesario.

agzt

Cita de: Eternal Idol 7D en  7 Diciembre 2012, 01:36 AM
Busca alguna version antigua de MASM o sino usa FASM.

http://flatassembler.net/

gracias, voy a probarlo

Cita de: RHL en  7 Diciembre 2012, 10:22 AM
MASM32 puede ensamblar ese código, asegúrate que estas pasando los parámetros correctos, ese program es de tipo EXE de 16-bits.
Publica tus parámetros que estas pasando al ensamblador y al linker. todo lo que puede hacer MASM 5.0 puede hacerlo MASM32.

ed:
Bueno de todas maneras intentar con esto, son los suficientes para ensamblar ese codigo:
C:\Masm32\bin\ml.exe /DMASM /DDOS /Zm /c /nologo "Yourfile.asm"
C:\Masm32\Bin\link16.exe /nologo "Yourfile.obj"

cambiar path si es necesario.

gracias! lo hice y al parecer compilo y linkeo bien (se creo el exe), pero cuando ejecuto asd.exe desde la consola no aparece el mensaje "Mensaje en pantalla"... no pasa nada...

Citarc:\masm32\bin>asd.exe

c:\masm32\bin>asd.exe

c:\masm32\bin>

x64core

Cita de: agzt en  8 Diciembre 2012, 02:31 AM
gracias, voy a probarlo

gracias! lo hice y al parecer compilo y linkeo bien (se creo el exe), pero cuando ejecuto asd.exe desde la consola no aparece el mensaje "Mensaje en pantalla"... no pasa nada...


Decis que lo ejecurtas desde la consola no? eso es, hacer esto: >C:\"tuprogram.exe"
si lo haces desde la consola tu mensaje saldra en la consola, si ejecutas el programa directamente el programa no parara durante
su ejecucion, para poner un stop podrias usar la funcion 01 del DOS:

     mov   ah,01h
     int   21h     
     
Tambíen es bueno retornar un codigo de error:
     mov   ah,4ch
     int   21h     

agzt

Cita de: RHL en  8 Diciembre 2012, 03:15 AM
Decis que lo ejecurtas desde la consola no? eso es, hacer esto: >C:\"tuprogram.exe"
si lo haces desde la consola tu mensaje saldra en la consola, si ejecutas el programa directamente el programa no parara durante
su ejecucion
, para poner un stop podrias usar la funcion 01 del DOS:

     mov   ah,01h
     int   21h     
     
Tambíen es bueno retornar un codigo de error:
     mov   ah,4ch
     int   21h     

Lo que subraye en negrita lo se, por eso lo ejecute desde la consola, pero no ha salido "Mensaje en pantalla.", que se supone que tiene que salir :(

esta es la salida:
Citarc:\masm32\bin>asd.exe

c:\masm32\bin>asd.exe

c:\masm32\bin>

Como puedes ver lo ejecute 2 veces y no ha pasado nada...

y gracias por el stop, no sabia eso :D

x64core

Cita de: agzt en  8 Diciembre 2012, 16:48 PM
Lo que subraye en negrita lo se, por eso lo ejecute desde la consola, pero no ha salido "Mensaje en pantalla.", que se supone que tiene que salir :(

esta es la salida:
Como puedes ver lo ejecute 2 veces y no ha pasado nada...

y gracias por el stop, no sabia eso :D

Acabo de ensamblarlo y probarlo y funciona, ejecútalo sin consola:

Código (asm) [Seleccionar]
.MODEL SMALL
.CODE
Programa:
     MOV AX, @DATA
     MOV DS, AX
     MOV DX, Offset Texto
     MOV AH, 9
     INT 21H
     mov ah,01h
     int 21h
     MOV ah,4Ch
     int 21h
.DATA
Texto DB 'Mensaje en pantalla.$'
.STACK
END Programa

agzt

Cita de: RHL en  8 Diciembre 2012, 18:10 PM
Acabo de ensamblarlo y probarlo y funciona, ejecútalo sin consola:

Código (asm) [Seleccionar]
.MODEL SMALL
.CODE
Programa:
     MOV AX, @DATA
     MOV DS, AX
     MOV DX, Offset Texto
     MOV AH, 9
     INT 21H
     mov ah,01h
     int 21h
     MOV ah,4Ch
     int 21h
.DATA
Texto DB 'Mensaje en pantalla.$'
.STACK
END Programa


Muchas gracias! me funciono así :D

una pregunta mas :P, alguna manera de configurar el masm32 con los parámetros que me diste para que cuando voy a "Project -> assemble & link file" no tenga que compilar desde la consola? de lo contrario hago un .bat, gracias :P

x64core

Cita de: agzt en  9 Diciembre 2012, 06:40 AM
Muchas gracias! me funciono así :D

una pregunta mas :P, alguna manera de configurar el masm32 con los parámetros que me diste para que cuando voy a "Project -> assemble & link file" no tenga que compilar desde la consola? de lo contrario hago un .bat, gracias :P

Bueno, yo personalmente hice un programita para mi uso, solo muevo mis codigos fuentes a el programa y el automaticamente detecta si es uno de tipo DOS, com,EXE, la arquitectura, si lo quiero en modo depuracion o liberacion, etc. tambien es posible hacerlo con un bat  ::)

agzt

Cita de: RHL en 10 Diciembre 2012, 00:45 AM
Bueno, yo personalmente hice un programita para mi uso, solo muevo mis codigos fuentes a el programa y el automaticamente detecta si es uno de tipo DOS, com,EXE, la arquitectura, si lo quiero en modo depuracion o liberacion, etc. tambien es posible hacerlo con un bat  ::)

Bueno gracias por todo, usare un .bat ^.^

Cita de: Eternal Idol 7D en  7 Diciembre 2012, 01:36 AM
Busca alguna version antigua de MASM o sino usa FASM.

http://flatassembler.net/

Lo probe y me da error en la instruccion .CODE SMALL, pero bueno ahora usare masm32, gracias por la buena onda!