Hi, i'm from spain, sorry for my english.
I have this code:
cr EQU 13
lf EQU 10
%macro print 1
push ax
push dx
lea dx,%1
mov ah,9
int 21h ;linea 10
pop dx
pop ax
%endmacro
%macro read 1
push ax
push dx
lea dx,%1
mov ah,10
int 21h
pop dx
pop ax
%endmacro
segment pila stack
resb 128
;linea 30
segment dades
missatge DB 'Entra el texte',cr,lf,'$'
maxcad DB 30
lencad DB 0
cadena resb 30
girat resb 30
linia_blanc DB cr,lf,'$'
missatge2 DB 'Vols sortir?',cr,lf,'$'
maxcad2 DB 2 ;longitud máxima.
lencad2 DB 0 ;longitud leida.
cadena2 resb 2 ;buffer que contendrá el texto introducido.
segment codi
..start:
mov ax,dades
mov ds,ax
mov es,ax
inicio:
print missatge ;pide que se introduzca un mensaje y lo guarda en maxcad
read maxcad
print linia_blanc ;imprime lina en blanco
mov bx,0 ;pone el registro bx a 0
pushpila:
mov al, [cadena+bx] ;movemos la cadena introducida a al
push ax
inc bl ;linea 60
cmp bl, lencad ;hacemos la comparacion para que el proceso se repita mientras bl no sea 0
jne pushpila
mov bx, 0
poppila:
pop ax
mov [girat+bx], al ;extraemos la cadena del registro ax
inc bl ;incrementamos el registro bl para comparar con lencad
cmp bl,lencad
jne poppila ;si el registro bl no es = que el valor de lencad repetimos el proceso
mov byte [girat+bx], '$'
print girat
print linia_blanc
print missatge2
read maxcad2
print linia_blanc
cmp byte [cadena2+0],'s'
je salir
cmp byte [cadena2+0],'S'
je salir
jmp inicio
salir:
mov ax,4c00h
int 21h
/////////////////////////////////
When i try to compile - or assemble, i don't know exactly what's the correct term - whit
"nasm -f obj prac3.asm" i get an error on each line i use the macro "print" and "read". The error message is this: "invalid combination of opcode and operands".
Could anyone tell me what's the problem? I've read nasm documentation and I think the macros are well defined so i dont' know what's the problem.
Thank you.