Программа для старого железа на одном из заводов

Тема в разделе "WASM.BEGINNERS", создана пользователем jellfish, 15 янв 2006.

  1. jellfish

    jellfish New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2003
    Сообщения:
    10
    Ситуевина такая. Есть программка которая читает данные с одной из стоек (газовый мониторинг). Сделана она в германии ооочень давно еще под дос.



    Это все лирика теперь вопросы.



    Я хочу преписать эту прогу. Т.е. мне нужно понять как она читает данные. Суть вот в чем есть плата к которой идет шлейф с разных каналов стойки и далее эта плата конвертит данные в цифру и шлет на шину ПК. Плата PCI.



    Теперь до чего я дошел. Взял я эту прогу и начал ее декомпилять имеющейся IDA-ой. Дальше я попытался найти место где она начинает читать данные. Но... не нашел :-( Нехватает умения.



    При запуске программа спрашивает адрес. Ввожу 256. Но поймать вывод и чтение в отрыве от пр-ва :) не выходит.



    Гипотеза: Думаю что она обращается к портам просто напрямую. Это же DOS/Win95...



    Помогите. Москвичам готов проставиться... :)



    EXE в архиве прикрепляю.



    Спасибо.

    [​IMG] 909967646__READ_PCI.zip
     
  2. Topor

    Topor New Member

    Публикаций:
    0
    Регистрация:
    21 ноя 2005
    Сообщения:
    31
    В Иде это процедурa:

    sub_347C

    похоже.
     
  3. jellfish

    jellfish New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2003
    Сообщения:
    10
    Ага я до нее вчера и дошел сам.



    Фишка в том что читаться должны слова а не байты а в этой процедуре чтение идет в регистр 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 и читал через нее.



    Помогите :)
     
  4. _BC_

    _BC_ БЦ

    Публикаций:
    0
    Регистрация:
    20 янв 2005
    Сообщения:
    759
    Там же ничего особенного-то и нет, программка за 10 минут вся целиком разбирается.

    Если всё же не получится -- могу я взяться переписать (за небольшое вознаграждение). Мой емэил в профиле.
     
  5. jellfish

    jellfish New Member

    Публикаций:
    0
    Регистрация:
    24 сен 2003
    Сообщения:
    10
    Вот уже хорошо. :) Жаль что не МСК.



    Уточню задачу за которую я готов в силу своих возможностей заплатить или как либо еще компенсировать...



    Объяснить нужно вот что:



    1) Какой порт читать для разных каналов.

    2) Что туда писать перед чтением или просто читать.



    В общем нужна последовательность действий на ASM которая позволяет читать задавая номер слота (1..64) с него данные.