codigo ensamblador para exe y com

09/09/2004 - 10:01 por Jordi Maycas | Informe spam
Hola, tengo este codigo (lo compilo con masm 4 y con masm 6.15 y ok)

cr equ 13
lf equ 10

datos segment
texto db 'hola',cr,lf
db '$'
mensa1 db 'que tal estamos?$'
datos ends

pila segment stack
db 128 dup('pila')
pila ends

codigo segment
ejemplo proc far
assume cs:codigo,ds:datos,ss:pila
push ds
sub ax,ax
push ax
mov ax,datos
mov ds,ax
lea dx,texto
call escribir
lea dx,mensa1
call escribir
ret
ejemplo endp

escribir proc
push ax
mov ah,9
int 21h
pop ax
ret
escribir endp
codigo ends
end ejemplo

Que cambios tendria que hacer para crear un .com?

Yo supongo algo asi:

cr equ 13
lf equ 10

datos segment
texto db 'hola',cr,lf
db '$'
mensa1 db 'que tal estamos?$'
datos ends

codigo segment
ejemplo proc far
assume cs:codigo,ds:datos
org 100h
lea dx,texto
call escribir
lea dx,mensa1
call escribir
ret
ejemplo endp

escribir proc
push ax
mov ah,9
int 21h
pop ax
ret
escribir endp
codigo ends
end ejemplo

La cosa es que una vez creado el com, me hace cosas raras... beep's y
codigos asci...

Gracias
 

Leer las respuestas

#1 Jordi Maycas
09/09/2004 - 11:06 | Informe spam
solucionado... este es el correcto para .com

cr EQU 13 ; constante de retorno de carro
lf EQU 10 ; constante de salto de línea

programa SEGMENT ; segmento común a CS, DS, ES, SS.

ASSUME CS:programa, DS:programa

ORG 100h ; programa de tipo COM

inicio: LEA DX,texto ; dirección de texto a imprimir
MOV AH,9 ; función de impresión
INT 21h ; llamar al DOS
INT 20h ; volver al sistema operativo

texto DB cr,lf,"Grupo Universitario de Informática.",cr,lf,"$"

programa ENDS ; fin del segmento

END inicio ; fin del programa y punto de inicio
"Jordi Maycas" escribió en el mensaje
news:%
Hola, tengo este codigo (lo compilo con masm 4 y con masm 6.15 y ok)

cr equ 13
lf equ 10

datos segment
texto db 'hola',cr,lf
db '$'
mensa1 db 'que tal estamos?$'
datos ends

pila segment stack
db 128 dup('pila')
pila ends

codigo segment
ejemplo proc far
assume cs:codigo,ds:datos,ss:pila
push ds
sub ax,ax
push ax
mov ax,datos
mov ds,ax
lea dx,texto
call escribir
lea dx,mensa1
call escribir
ret
ejemplo endp

escribir proc
push ax
mov ah,9
int 21h
pop ax
ret
escribir endp
codigo ends
end ejemplo

Que cambios tendria que hacer para crear un .com?

Yo supongo algo asi:

cr equ 13
lf equ 10

datos segment
texto db 'hola',cr,lf
db '$'
mensa1 db 'que tal estamos?$'
datos ends

codigo segment
ejemplo proc far
assume cs:codigo,ds:datos
org 100h
lea dx,texto
call escribir
lea dx,mensa1
call escribir
ret
ejemplo endp

escribir proc
push ax
mov ah,9
int 21h
pop ax
ret
escribir endp
codigo ends
end ejemplo

La cosa es que una vez creado el com, me hace cosas raras... beep's y
codigos asci...

Gracias


Preguntas similares