Conversão x86 para montagem em minúsculas

Este programa é converter umchar ponteiro em letras minúsculas. Estou usando o Visual Studio 2010.

Isto é de outra questão, mas muito mais simples de ler e mais direto ao ponto.

int b_search (char* token)
{
__asm
{
mov eax, 0          ; zero out the result
mov edi, [token]      ; move the token to search for into EDI 
MOV ecx, 0

LOWERCASE_TOKEN:            ;lowercase the token
OR [edi], 20h
INC ecx
CMP [edi+ecx],0
JNZ LOWERCASE_TOKEN
MOV ecx, 0

Na minha instrução OR, onde estou tentando alterar o registro que contém o endereço para token em todas as letras minúsculas, continuo recebendo exceção não tratada ... violação de acesso e sem os colchetes nada, eu não recebo erros, mas nada fica em minúsculas. Algum conselho? Isso faz parte de um código maior de outra pergunta, mas eu o interrompi porque precisava apenas dessa solução.

questionAnswers(3)

yourAnswerToTheQuestion