Хорошо, вот как я написал бы эту функцию:
char returnFirstChar( const char arrayOfLetters[] )
{
char max;
__asm
{
mov eax, arrayOfLetters ; Move the pointer value of arrayOfLetters into eax.
mov dl, byte ptr [eax] ; De-reference the pointer and move the byte into eax.
mov max, dl ; Move the value in dl into max.
}
return max;
}
Кажется, это работает отлично.
Примечания:
1) Как я уже сказал в моем комментарии, вам не нужно помещать регистры в стек, пусть MSVC справится с этим.
2) Не беспокойтесь об очисткеedx путем X'оринга против него самостоятельно или не устанавливайте dl в 0. Оба достигнут одного и того же.В общем, вам даже не нужно этого делать, поскольку вы можете просто перезаписать значение, сохраненное в dl, своим значением.