Есть код, приведенный ниже. Хочу подсчитать количество скобок "(" и ")". И вроде бы всё нормально, но в этой строке
mov cl, [eax + esi];//помещаем значение А[esi] в cl
ничего хорошего в cl не перемещается, каждый раз новая ерунда. А мне нужно в cl поместить значение в массиве A с индексом esi, чтобы потом сравнить его с кодом скобок(ведь 28h и 29h это коды скобок?)
В конец уже запутался, что делаю не так? помогите.
char *A = new char[100];
strcpy(A, "1+2*(3-4)+(5*(6+7)-9)");
char left = 0, right = 0;
_asm{
mov eax, A; //адрес А в eax
mov esi, 0; //счетчик в 0
mov al, 0; //тут будем считать "(", код 28h
mov ah, 0; //а тут считать ")", код 29h
newiter:
mov cl, [eax + esi];//помещаем значение А[esi] в cl ВОТ ТУТ ПРОБЛЕМА!!!
cmp cl, 28h//сравниваем
je m1;//если равны, то в m1
cmp cl, 29h//сравниваем
je m2;//если равны, то в m2
cmp cl, 29h//снова сравниваем
jne m3;//если не равны, то в m3
m1:
inc al;
inc esi;
cmp esi, 21;
jne newiter;
m2:
inc ah;
inc esi;
cmp esi, 21;
jne newiter;
m3:
inc esi;
cmp esi, 21;
jne newiter;
mov left, al;
mov right, ah;
}