Ситуевина такая. Есть программка которая читает данные с одной из стоек (газовый мониторинг). Сделана она в германии ооочень давно еще под дос. Это все лирика теперь вопросы. Я хочу преписать эту прогу. Т.е. мне нужно понять как она читает данные. Суть вот в чем есть плата к которой идет шлейф с разных каналов стойки и далее эта плата конвертит данные в цифру и шлет на шину ПК. Плата PCI. Теперь до чего я дошел. Взял я эту прогу и начал ее декомпилять имеющейся IDA-ой. Дальше я попытался найти место где она начинает читать данные. Но... не нашел :-( Нехватает умения. При запуске программа спрашивает адрес. Ввожу 256. Но поймать вывод и чтение в отрыве от пр-ва не выходит. Гипотеза: Думаю что она обращается к портам просто напрямую. Это же DOS/Win95... Помогите. Москвичам готов проставиться... EXE в архиве прикрепляю. Спасибо. 909967646__READ_PCI.zip
Ага я до нее вчера и дошел сам. Фишка в том что читаться должны слова а не байты а в этой процедуре чтение идет в регистр al а не ax. Это смущает. На экран выводятся значения с шины от 1 до 64 ввиде вот таких числовых (не HEX) значений. 1 2401 2 3602 3 2401 4 2405 ... 12 2403 Вот код где происходит чтение сразу из введенного с клавиатуры порта seg001:04D8 les bx, [bp+Port_Address] seg001:04DB mov dx, es:[bx] seg001:04DE add dx, 10h seg001:04E1 in al, dx seg001:04E2 test al, 80h seg001:04E4 jnz short loc_34D8 Че то это не то... Да и зачем в числовом значении проверять бит... В общем в идеале хотел бы получить код который бы потом запихал в Dll и читал через нее. Помогите
Там же ничего особенного-то и нет, программка за 10 минут вся целиком разбирается. Если всё же не получится -- могу я взяться переписать (за небольшое вознаграждение). Мой емэил в профиле.
Вот уже хорошо. Жаль что не МСК. Уточню задачу за которую я готов в силу своих возможностей заплатить или как либо еще компенсировать... Объяснить нужно вот что: 1) Какой порт читать для разных каналов. 2) Что туда писать перед чтением или просто читать. В общем нужна последовательность действий на ASM которая позволяет читать задавая номер слота (1..64) с него данные.