Скачал исходник Возникла проблемма, там есть одна строчка не как не пойму что она означает, скорее всего этот исходник не для масм. Код (Text): mov al, byte ptr ebp.[c_Table+eax] заменил на Код (Text): mov al, byte ptr [c_Table+eax] работает но вместо длины инструкции всегда 2 возвращает. В общем подскажите как его "оживить" или дайте линки на чтонибудь рабочее.
Фуух! заработало, всё дело было в кривом описании, из файлика readme.txt Похоже что описалово писал совсем не автор, и вместо регистра edi нужно юзать esi, так как команда lodsb загружает значение из esi. В это я уже въехал начания просматривать исходник пытаясь разобратся почему он не работает. Ну а та непонятная строка досих пор осталась для меня загадкой. ps Не плохо было бы "исправить" описалово в архиве на сервере.
ты тупо выкинул регистр ebp, который частенько, к примеру, используется для адресации локальных переменных, размещенных в стеке. Во втором случае ссылка наверняка идет на сегмент данных. А вобще, трудно делать какие то выводы, на зная типа c_Table, модели памяти, и т.д. а, уже отпало.... и ссылку на исходник не заметил.... проехали....
смотрел в SoftICE регистр ebp всегда получается равным нулю там идёт call c_Delta c_Delta: pop ebp sub ebp, offset c_Delta тоесть в ebp получается смещение c_Delta, а потом оно же от него и отнимается в результате всёравно получается 0. а насщёт того чтобы записать mov al, byte ptr ebp.[c_Table+eax] так mov al, byte ptr [ebp+c_Table+eax] тоже работает, но я не вижу смысла в этом. И вообще что это за синтаксис, tasm?
2FED Код рассчитывался быть базонезависимым. Если он будет загружен по базе, на которую рассчитывал компилятор, то в ebp, разумеется, будет нуль.