--------------------------------------------------------------------------------

i did as u told me and i have two errors
**Error** zz.ASM(1) Unknown character
**Fatal** zz.ASM(76) Unexpected end of file encountered.
this is d new code:
CLEAR MACRO COLOR ;Î÷èñòê* ýêð*** öâåòîì
MOV AX, 0600H ;Ïðîêðóòê* âñåãî ýêð***
MOV BH, COLOR
XOR CX, CX
MOV DX, 184FH
INT 10H
ENDM

TEXTOUT MACRO TEXT ;Âûâîä òåêñò* ÷åðåç ôó*êöèþ 9 ïðåðûâ**èÿ

21H
MOV AH, 09
LEA DX, TEXT
INT 21H
ENDM

TEXTIN MACRO BUF ;Ââîä òåêñò* ÷åðåç
MOV AH, 0AH
LEA DX, BUF
INT 21H
ENDM

StackS SEGMENT PARA STACK 'STACK'
DW 32 DUP(?)
StackS ENDS


MAX_TEXT EQU 80
DATA SEGMENT PARA PUBLIC 'DATA'
MESS1 DB 0AH,0DH,"Ââåäèòå ñòðîêó: $"
MESS2 DB 0AH,0DH,"Â ì*ëå*üêèõ áóêâ: $"


BUF1 DB MAX_TEXT
QNT1 DB 0
TEXT1 DB MAX_TEXT DUP(?)


DATA ENDS

CODE SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CODE, DSATA, SS:StackS

START: MOV AX, DATA ; ç*ãðóçèòü â DS
MOV DS, AX ;ñåëåêòîð ñåãìå*ò* ä***ûõ
MOV ES, AX
CLEAR 30
TEXTOUT MESS1
TEXTIN BUF1
TEXTOUT MESS2 ; output the message "output: "

XOR CH, CH ;Îáíóëåíèå ñòàðøåãî áàéòà ñ÷åò÷èêà
MOV CL, QNT1 ;Çàãðóçêà êîëè÷åñòâà ñèìâîëîâ â ñòðîêå
LEA SI, TEXT1 ;Àäðåñ îñíîâíîé ñòðîêè â èñòî÷íèê
CLD

print_upper: lodsb ; Get next char in str. *
cmp al, "a" ; if < 'a', just print it
jb print_it
cmp al, "z" ; if > 'z' just print it
ja print_it
sub al, 20h ; if lower case a - z, make it upper
print_it:
call putc ; display the letter
loop print_upper

mov ax, 4c00h
int 21h ; return to ms-dos

putc: ; display character in dl
mov dl,al
mov ah, 2h
int 21h
ret

CODE ENDS
END START

and cn u explain to me how to count d lines so i cn trace d errors