So, I have a task that I need to convert from string for example string "542215" to int 542215 or with any other ASCII symbols. I am kindof new to assembly programming so, I have almost no clue to what I am doing with it, but I wrote my experimental code.
int main(int argc, char** argv) 
{
int Letters;
    char* argv1 = argv[1];
    if (argc < 2) {
        printf("Nepateiktas parametras*/\n");
        return(0);
    }
    __asm {
        push eax
        push ebx
        push ecx
        xor ecx, ecx           
        mov eax, argv1  
    NextChar:
        movzx eax, byte ptr [esi + ecx]
        test eax, eax
        jz Done
        push ecx
        sub eax, 48
        push eax
        call PrintIt
        
        pop ecx
        inc ecx
        jmp NextChar
    
    Done:
        pop ecx
        pop ebx
        pop eax
    PrintIt:
        mov[Letters], eax
            pop ecx
            pop ebx
            pop eax
    };
    printf("Count of letters in string %s is %d\n", argv[1], Letters);
    return(0);
}
and I am getting error that "Run-time check failure #0 - The value of ESP was not properly saved across a function call. This is usually a result of calling a function declared with one calling convention with a function pointer declared with a different calling convention.
This error basicly gives me 0 ideas what is going on, or what even ESP is, so any help would be appreciated with my code.
 
    