bueno queria ver el hola mundo en asm pero me dio error :/
.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, @dataend programame 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)
Ese codigo es de 16 bits, no sirve para el MASM32.
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
; 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:
.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
Usas algún IDE?
Si puedes crear consola en 32bits, y sí usa apis, no interrupciones.
Puedes crear también un app de 16bits.
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
Raul100: el 1ro que pusiste en tu ultimo mensaje es de 16 bits, el segundo de 32 bits, por eso te ensambla bien.