вот код Код (Text): .code szOne db "One",0 szTwo db "Two",0 szPass db "PASSWORD",0 Main proc local adr : dword lea eax,szPass mov adr,eax cmp dword ptr[eax],"SSAP" jne @f invoke MessageBox,0,addr szOne,0,MB_OK @@: cmp dword ptr[adr],"SSAP" jne @f invoke MessageBox,0,addr szTwo,0,MB_OK @@: invoke ExitProcess,0 Main endp end Main почему 1й MessageBox показывается а 2й нет ?
дело в том что adr это [EBP-n], и ты не можешь в одном операторе извлечь адрес два раза, тоесть получается [[EBP-n]] так работать не будет, надо сделать mov eax,adr cmp dword ptr[eax],"SSAP"
тоесть если в переменной есть указатель на строку, то нужно использовать регистр чтобы сравнить ее часть с чем-то-там ? 2FED я вобще так всегда и делаю. подумал может можно обойтись без регистра... видимо нельзя
если локальная то да, потому что все локальные переменные уже представлены ввиде указателя. Почитай про фреймы стека и т д.