Код (Text): ... mov eax,x mul dl ... То есть умножение 4 байтового регистра на 1 байтовый. Вопрос возник в связи с тем, что вариант типа mov eax,dl - невозможен - разные по величине регистры, а вот у меня прога использует такую конструкцию (умножение eax на dl) и компилятор не ругается, но прога перестала правильно функционировать. Вот я и подумал, может здесь "собака зарыта"?
MUL использует аккумулятор той же разрядности что и операнд. Т.е. MUL DL ---> AX=DL*AL movzx eax,dl Если надо умножить 32-битные числа, то: Код (Text): mov eax,[x] movzx edx,dl mul edx ; edx:eax=eax*edx или Код (Text): movzx eax,dl mul dword ptr [x] ; edx:eax=eax*x=dl*x