V
Size: a a a
E
d
cmp maxblks, eax
cmovnc maxblks, eax
или этоcmp eax, maxblks
cmovc maxblks, eax
или без разницы?E
d
A
s
E
E
inc ecx4. Я видел, что ты используешь TEST, если нужно сравнивать с нулём. Это правильно, но почему-то в других участках ты используешь cmp, или or. Используй всегда test eax, eax / jz. С условием, что test - сливается, он работает быстрее, если нужно проверять с нулём, и вообще быстрее.
xor edx, edx
lea ecx, dword[ecx+1]
xor edx, edx
xchg edx, eax6. В этом участке лучше сделать джамп таблицу. Тебе прямо под руку, что проверка идёт по счёту - 0, 1, 2, 3:
xor edx, eax
xor eax, edx
xor edx, eax
cmp byte [wozflag],00h
je .wozratadd
cmp byte [wozflag],01h
je .wozratsub
cmp byte [wozflag],02h
je .wozratmul
test ebx, ebx ;проверка деления на ноль целочисл.
jz DialogProc.processed ;
cmp byte [wozflag],03h
je .wozratdiv
Ошибки повторяются по всему коду. Но это не смотря ещё на странное поведение в коде, вроде:mov [tmpX], edi
mov edi, [tmpX]
d
E
d
E
d