видимо имеется ввиду являются ли элементы строки байтами или словами(ansi или unicod н-р) интересно как стоит задача: дан указатель на строку хз где в памяти и надо определись что за размер символа? если тип известен на этапе ассемблирования то мб можно использовать директивы size и type если указатель получается на строку в памяти в процессе работы то думаю надо использовать особенности реализации разных типов строк(могу н-р предположить(не знаю я этого просто к примеру) что юникод строки могут разделяться 2мя нулевыми байтами, или там может существовать слово означ. конец строки)
eax может принять 2 вида ливо szSTR db "....",0 mov eax,offset szSTR либо mov eax,2 и при этом содержимое szSTR всегда разное, и вместо двойки тож всегда разные цифры. Как определить, в eax'e байты или нет ? вот
Что-то ты не то говоришь. mov eax,2 - здесь в еах будет число 2. mov eax,offset szSTR - здесь в еах будет адрес szSTR. Какое отношение имеет 2 к строке твоей?
вообщето не совсем поня тебя.. скажу что mov eax,offset szSTR mov ax,word ptr [eax] это косвенная адресация и берешь байт (у тебя в еах будет код символа !) а если mov eax,2 то это непосредственаня адресация , где ты а eax помещаешь непосредственно 2 то в eax у тебя будет 2 и не выжно что ты поместишь в eax .. у тебя там всегда будут биты , байты .. Другого там не будет . По крайней мере я не видел процессоров работающих на других единицах информации (сосиски, сардельки...)
В eax могут быть только дворды (регистр ведь 32 бита, а не 8). Этот дворд либо просто какое-то число (например результат вычислений), либо это указатель (в eax лежит адрес строки). Если тебе нужно определить, правильно ли указывает eax на твою строку, то просто сравни его с адресом твоей строки: Код (Text): cmp eax, offset szSTR je label_yes label_no: ;сюда программа придёт, если в eax число, отличное от адреса строки. label_yes: ;сюда программа придёт, если в eax адрес твоей строки. Можно также определить, допустимый ли для чтения адрес в eax при помощи api-функции IsBadReadPtr, передав ей в качестве параметра содержимое eax. А вообще, ты бы сосредоточился и сформулировал бы свой вопрос правильно, чтобы народ не гадал, чего тебе нужно
cresta Как мне сравнить, если там всегда разные значения\данные. А лано, удалите топик, один фик не смогу лучше обяснять, и нефик вас больще мучать
Flasher Содержимое szSTR всегда разное, но при mov eax,offset szSTR ты грузишь в eax не содержимое строки, а адрес szSTR, а эта величина является константой и ее можно проверять cmp eax,offset szStr как предлагает cresta