Хакер писал(а):Всюду.
Если не брать в расчет имена и графический интерфейс, в остальном я вроде все поправил, отступы между строк и все такое. Или сам алгоритм кривой?
Хакер писал(а):Пожалуйста, смени имя в паспорте с «Германа» на «Имя1». Потом продолжим обсуждать.
Ясно, забыл детищу имечко дать, виноват, хотя я обычно на это особо никогда не заморачивался. А вот имя свое мне очень нравиться, менять мне его ох уж как неохота. Останусь пожалуй Германом.
Хакер писал(а):Не это определяет правильность. Любой знает, что 386+ процессор быстро работает с регистрами, разрядность которых соответствует текущему режиму работы. 16-битные регистры в 32-битном режиме это плохо, а 8-битные — ещё хуже. В плане скорости, разумеется.
Понятно, приму к сведению.
Хакер писал(а):Макрокод. И вообще меня поражает такой тон.
А что не так? Мне показалось, что предложение не окончено, точнее не предложение а мысль. И я задал вопрос. Пусть будет макрокод, буду называть его так.
Хакер писал(а):Масм на то, и макроасм, чтобы можно было вообще писать что-то вроде [eax].SomeMemberOfStruct.
Вот я и пытался использовать то что облегчает процесс.
Хакер писал(а):Теперь я понял, что это, и забавно, почему MASM проглатывает такую извращённую форму записи.
В справочнике по этому поводу написано буквально следующее:
Индексный оператор
Индексный оператор [ ]. Не удивляйтесь, но скобки тоже являются оператором, и транслятор их наличие воспринимает как указание сложить значение выражение_1 за этими скобками с выражение_2, заключенным в скобки. Например,
mov ax, mas[si] ; пересылка слова по адресу mas+(si) в регистр ax
И далее описываются все возможные варианты написания такой команды, в том числе
AND eax, [ebx][edi*4]+4 и
AND eax, [ebx+edi*4+4], мне больше понравился тот вариант, который я использовал.
Тут вот в чем вопрос, при каждом выполнении команды каждый раз происходят умножение + сложение регистров и константы и на это расходуются лишние такты, может как-то по эффективней можно сделать?