Ensamblador - Ayuda!!!,por que esto no funciona?

 
Vista:

Ayuda!!!,por que esto no funciona?

Publicado por Julian (1 intervención) el 10/07/2002 05:24:40
quisiera saber por que esto no funciona:

C_SEG segment 'CODE'
assume cs:C_SEG,ds:C_SEG,es:C_SEG
ORG 100h
julprog:
mov ah,09h
mov dx,offset mensage
int 21h
mensage db 'hola a todos$'
C_SEG ends
end julprog

supuestamente usa la interrupcion 21 para escribir en pantalla, pero cuando la ejecuta me aparece en la pantalla signos, hace ruido el y se me cuelga,
¿que pasa?
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Jaja, lógico, te explico...

Publicado por Jorge (126 intervenciones) el 11/07/2002 07:08:23
El problema es que la disposición del código no es correcta. Acordate que los ensambladores no tienen secciones de declaración de datos obligatorias como Pascal ó C, y no te van a decir nada si la ponés donde no va.
El problema es el siguiente, el código se ejecuta linealmente y sin pausa. Después de la Int 21h, trata de ejecutar el mensaje y se arma un despelote que se te cuelga la máquina, jaja. Por eso es normal que la primer instrucción sea un JMP y que pongas los DB, DW, etc., entre el JMP y el código. Tu código por ejemplo quedaría:

C_SEG segment 'CODE'
assume cs:C_SEG,ds:C_SEG,es:C_SEG
ORG 100h
;Acá pongo la primer instrucción, que es un JMP al código de inicio
jmp julprog
;
; Todo este espacio lo aprovecho para declarar variables
;
mensage db 'hola a todos$'
;
;

julprog:
mov ah,09h
mov dx,offset mensage
int 21h
;
; Ojo que acá tiene que venir el código de terminación, sino
; por más que pongas el DB arriba, igual se te va a colgar,
; porque va a seguir ejecutando lo que haya en memoria y
; tu programa ya terminó. Hay que avisarle al sistema
; operativo que lo saque...
mov ax, 4C00h
Int 21h
C_SEG ends
end julprog

Bueno, solucionado el problema, no?

Suerte y bienvenido a la programación ASM
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar