Buenas, otra vez por aqui. Estaba viendo los codigos que estan en esta sección y quize compilar el de Hola mundo!
;Programa HOLA MUNDO
DATOS SEGMENT
MENSAJE DB "HOLA MUNDO$"
DATOS ENDS
PILA SEGMENT STACK "STACK"
DB 200 DUP(0)
PILA ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
PRINCIPAL PROC
MOV AX,DATOS
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MENSAJE
INT 21H
MOV AH,4CH
INT 21H
PRINCIPAL ENDP
CODIGO ENDS
END PRINCIPAL
al compilarlo me tira los sgtes errores:
e@e-desktop:~$ nasm -f elf holamundo.asm
holamundo.asm:2: error: parser: instruction expected
holamundo.asm:4: error: symbol `DATOS' redefined
holamundo.asm:4: error: parser: instruction expected
holamundo.asm:7: error: comma expected after operand 1
holamundo.asm:8: error: symbol `PILA' redefined
holamundo.asm:8: error: parser: instruction expected
holamundo.asm:10: error: parser: instruction expected
holamundo.asm:11: error: parser: instruction expected
holamundo.asm:12: error: parser: instruction expected
holamundo.asm:16: error: comma or end of line expected
holamundo.asm:20: error: symbol `PRINCIPAL' redefined
holamundo.asm:20: error: parser: instruction expected
holamundo.asm:21: error: symbol `CODIGO' redefined
holamundo.asm:21: error: parser: instruction expected
holamundo.asm:22: error: parser: instruction expected
Me faltan algunas librerias, o tendria que modificar unn poco el codigo?
Gracias
Eso es para MASM de 16 bits (MS-DOS).
Eternal tiene razon,y no se compila se ensambla,co cual ensamblas tu? FASM,MASM O kual?
si es con TASM el codigo no debe bariar mucho,bueno ami asin me funciona:
.MODEL TINY
.STACK 100h
.DATA
TXT DB 'Hola mundo$'
.CODE
START:
MOV AX,SEG TXT
MOV DS,AX
LEA DX,TXT
MOV AH,09
INT 21H
MOV AH,07
INT 21H
MOV AH,4CH
INT 21H
END START
Prueba eso,tiene que irte es ensamblador para los procesadores Intel,eos funciona con el Tasm,con los demas no lo se :S
Eternal puede asesorarte mejor que yo peor creo que para mostrar el texto hay que cargar la direccion efectiva con la funcion LEA en DX no?¿ corregidme si stoi equivocado.
salu2
viejo el code esta vien ??' lo probe en windows con el tasm y de lujo
EI: juntando mensajes.
descarga el tasm y lo esnamblas ya te da de lujo lo unico que le agregaria seria un pause de la sigiente manera
;Programa HOLA MUNDO
DATOS SEGMENT
MENSAJE DB "HOLA MUNDO$"
DATOS ENDS
PILA SEGMENT STACK "STACK"
DB 200 DUP(0)
PILA ENDS
CODIGO SEGMENT
ASSUME CS:CODIGO,DS:DATOS,SS:PILA
PRINCIPAL PROC
MOV AX,DATOS
MOV DS,AX
MOV AH,9
MOV DX,OFFSET MENSAJE
INT 21H
mov ah,10h
int 16h
MOV AH,4CH
INT 21H
PRINCIPAL ENDP
CODIGO ENDS
END PRINCIPAL
con eso te anda vien solo pruebalo con tasm ::)
EI: juntando mensajes.
no estoy seguro pero parece que para linux es de otra forma o no????
Claro amigos, ese codigo solo lo podra ensamblar con un ensamblador de 16 bits para MS-DOS (la interrupcion 21h es SOLO de MS-DOS), para Linux tendra que escribir otro codigo que use los servicios del mismo.