x86 convert to lower case assembly
===

This program is to convert a char pointer into lower case. I'm using Visual Studio 2010.

This is from another question, but much simpler to read and more direct to the point.

    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
At my OR instruction, where I'm trying to change the register that contains the address to token into all lower case, I keep getting unhandled exception...access violation, and without the brackets nothing, I don't get errors but nothing gets lowercased. Any advice?
This is part of some bigger code from another question, but I broke it down because I needed this solution only.