Troca o ecx naquele MOV pelo CL.
O ecx inteiro sao 4 bytes enquanto um char é um byte só, e como te expliquei hoje lá na BCC, o CL tem o menor byte do ECX, que será o byte lido.
E como voce tambem só está incrementando até chegar a 5, não precisa de um número de 16bits pra isso, portanto voce pode usar o AL em vez do AX que também deverá funcionar. Mas não acho que esse seja o problema principal aqui.