Foro de elhacker.net

Programación => ASM => Mensaje iniciado por: x64core en 30 Octubre 2011, 08:27 am



Título: Error el codigo Hola mundo :/
Publicado por: x64core en 30 Octubre 2011, 08:27 am
bueno queria ver el hola mundo en asm pero me dio error :/

Código:
 .model small
 .stack
 .data
 Cadena1 DB 'Hola Mundo.$'
 .code
 programa:
    mov ax, @data
    mov ds, ax
    mov dx, offset Cadena1
    mov ah, 9
    int 21h
end programa


alguien me podria decir porque :P
estoy usando el IDE winAsm :P eso afecta :P y estoy ensamblando con MAsm32
me da error es estas lineas :P

   mov ax, @data
end programa

me dice:

Citar
\Masm32\Bin\ML /c /coff /Cp /nologo /I"\Masm32\Include" "C:\Users\Raul\Desktop\1.asm"

 Assembling: C:\Users\Raul\Desktop\1.asm
C:\Users\Raul\Desktop\1.asm(7) : error A2006: undefined symbol : DGROUP
C:\Users\Raul\Desktop\1.asm(12) : warning A4023: with /coff switch, leading underscore required for start address : programa

Compilado listo. 2 error(es)


Título: Re: Error el codigo Hola mundo :/
Publicado por: Eternal Idol en 30 Octubre 2011, 09:51 am
Ese codigo es de 16 bits, no sirve para el MASM32.


Título: Re: Error el codigo Hola mundo :/
Publicado por: x64core en 30 Octubre 2011, 18:07 pm
Gracias Eternal Idol :)
pero tengo una duda ahora si entendi que por eso no ensamblaba :P
pero entonces este es de 32 bits y me da error en las mismas lineas osea cuando quiero pasar la direccion de seg de datos al registro y al final de la etiqueta :P

Código:
; HOLA.ASM
; Programa clasico de ejemplo. Despliega una leyenda en pantalla.
STACK     SEGMENT STACK                ; Segmento de pila
                    DW     64 DUP (?)             ; Define espacio en la pila
STACK     ENDS
 
DATA      SEGMENT                             ; Segmento de datos
SALUDO      DB    "Hola mundo!!",13,10,"$" ; Cadena
DATA      ENDS
 
CODE      SEGMENT                            ; Segmento de Codigo
          ASSUME CS:CODE, DS:DATA, SS:STACK
 
INICIO:                                                  ; Punto de entrada al programa
          MOV  AX,DATA                         ; Pone direccion en AX
          MOV  DS,AX                              ; Pone la direccion en los registros
          MOV  DX,OFFSET SALUDO      ; Obtiene direccion del mensaje
          MOV  AH,09H                            ; Funcion: Visualizar cadena
          INT     21H                                  ; Servicio: Funciones alto nivel DOS
          MOV  AH,4CH                            ; Funcion: Terminar
          INT     21H
CODE      ENDS
          END  INICIO                               ; Marca fin y define INICIO
         
       



y este si me funciono:

Código:
.386
.model flat, stdcall
option casemap :none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib
.data
HelloWorld db "Hello World!", 0
.code
start:
invoke MessageBoxA, NULL, addr HelloWorld, addr HelloWorld, MB_OK
invoke ExitProcess, 0
end start

pero entonces MASM32 solo puede trabajar con APIs? :P
pues al incio de crear un nuevo proyecto escoji uno de consola :P
y yo queria ver el hola mundo en el DOS :P
eso puede afectar a otros proyectos si uno escoje un proyecto de consola, DOS, EXE, COM?
gracias ;D


Título: Re: Error el codigo Hola mundo :/
Publicado por: Иōҳ en 30 Octubre 2011, 18:20 pm
Usas algún IDE?

Si puedes crear consola en 32bits, y sí usa apis, no interrupciones.

Puedes crear también un app de 16bits.


Título: Re: Error el codigo Hola mundo :/
Publicado por: x64core en 30 Octubre 2011, 18:34 pm
si :)
estoy usando el WinAsm
pero tambien tengo el RadAsm :P
pero con esos codigos los puse en el WinAsm :P

pero el primer codigo era de 16 bits :P y con MASM32 no pude ( ya Eternal Ido me dijo porque ) me imagino que con TASM si :P
y pues me confunde tantos tipos de proyectos que puede crear uno :P
(http://img802.imageshack.us/img802/5333/19698794.png)
(http://img253.imageshack.us/img253/9228/28809552.png)
(http://img718.imageshack.us/img718/6713/77080225.png)
(http://img148.imageshack.us/img148/2834/76216177.png)
(http://img714.imageshack.us/img714/3483/36477625.png)


porque hay muchos. por ejemplo que pasa si escojo un DOS y uso APIS?
bueno pues no es que sea inutil y no pruebe yo mismo pero es que eso hice :P
escoji un DOS y use APIS :P crei que me daria error pues solo se podrian usar interrupciones :P


Título: Re: Error el codigo Hola mundo :/
Publicado por: Eternal Idol en 30 Octubre 2011, 22:19 pm
Raul100: el 1ro que pusiste en tu ultimo mensaje es de 16 bits, el segundo de 32 bits, por eso te ensambla bien.