Проблемка с получением MAC

Discussion in 'WASM.BEGINNERS' started by BITk0der, Sep 18, 2008.

  1. BITk0der

    BITk0der New Member

    Blog Posts:
    0
    Доброго времени суток. Столкнулся с небольшой проблемкой с полученим MAC адреса... немного не пойму хранения его в памяти, после возвращения...

    Code (Text):
    1. ;...
    2.    myip db "10.10.10.10",0
    3.    mac dw 6 dup(0)
    4.    wip dd 0
    5.    typ db "%X:%X:%X:%X:%X:%X",0
    6.    outb db 256 dup (0)
    7.    s dw 6
    8. ;...
    9.  
    10.     invoke inet_addr,addr myip ;перевожу в int
    11.     mov wip,eax
    12.     invoke SendARP,wip,0,addr mac, addr s ;получаю MAC
    13.     .if eax==NO_ERROR
    14.         invoke wsprintf,addr outb,addr typ, DWORD PTR mac ;перевожу в строку
    15.         invoke MessageBox,0,addr outb,addr outb,MB_OK
    16.     .endif
    Выводится что то не то... по 4 знаковые числа... и вообще не то, думаю что это просто выводятся адреса в памяти и всё, и совсем рядом не стоящие с MAC значения... подскажите в чем затык?
     
  2. censored

    censored New Member

    Blog Posts:
    0
    http://wasm.ru/forum/viewtopic.php?pid=195221#p195221
     
  3. BITk0der

    BITk0der New Member

    Blog Posts:
    0
    Там я уже смотрел, особ ни чем не помог поиск, поэтому и запостил... просто трудностей у меня нет с пониманием, есть скорее трудности с пониманием оперирования данными в памяти... Так то по идее вроде функция работает и что то пишет в мак, но всё таки както не так...
     
  4. diamond

    diamond New Member

    Blog Posts:
    0
    Перевод в строку неправильный. Нужно все печатаемые элементы (6 word'ов) отдельно положить в стек. Правильный вариант мог бы выглядеть так:
    Code (Text):
    1.     mov     ecx, 6
    2. @@:
    3.     movzx   eax, word ptr mac[ecx*2-2]
    4.     push    eax
    5.     loop    @b
    6.     push    offset typ
    7.     push    offset outb
    8.     call    [_imp__wsprintfA]
    9.     add     esp,8*4
     
  5. q_q

    q_q New Member

    Blog Posts:
    0
    diamond
    imho надо от offset mac+5*2 до offset mac
     
  6. diamond

    diamond New Member

    Blog Posts:
    0
    q_q
    Точно, ошибся, спасибо. Свой предыдущий пост поправил.