Доброго времени суток. Столкнулся с небольшой проблемкой с полученим MAC адреса... немного не пойму хранения его в памяти, после возвращения... Код (Text): ;... myip db "10.10.10.10",0 mac dw 6 dup(0) wip dd 0 typ db "%X:%X:%X:%X:%X:%X",0 outb db 256 dup (0) s dw 6 ;... invoke inet_addr,addr myip ;перевожу в int mov wip,eax invoke SendARP,wip,0,addr mac, addr s ;получаю MAC .if eax==NO_ERROR invoke wsprintf,addr outb,addr typ, DWORD PTR mac ;перевожу в строку invoke MessageBox,0,addr outb,addr outb,MB_OK .endif Выводится что то не то... по 4 знаковые числа... и вообще не то, думаю что это просто выводятся адреса в памяти и всё, и совсем рядом не стоящие с MAC значения... подскажите в чем затык?
Там я уже смотрел, особ ни чем не помог поиск, поэтому и запостил... просто трудностей у меня нет с пониманием, есть скорее трудности с пониманием оперирования данными в памяти... Так то по идее вроде функция работает и что то пишет в мак, но всё таки както не так...
Перевод в строку неправильный. Нужно все печатаемые элементы (6 word'ов) отдельно положить в стек. Правильный вариант мог бы выглядеть так: Код (Text): mov ecx, 6 @@: movzx eax, word ptr mac[ecx*2-2] push eax loop @b push offset typ push offset outb call [_imp__wsprintfA] add esp,8*4