Код (Text): FirstTable struct DATETIME db 17 ? SEIZE dd ? TRAFFIC dd ? CONGEST dd ? INSTALL dd ? AVAIL dd ? ENDCHN dd ? FirstTable ends .code Events_proc proc wParam:WPARAM,lParam:LPARAM LOCAL FT [24]: FirstTable Как обратиться к 4-ой копии FT.DATETIME? Есть в масме прямой вызов?
KeSqueer Не работает;( В квадратных скобках будет смещение относительно указателя на массив структур FT. Т.е. FT[4-1].StructMember - указатель на StructMember, плюс смещение 3 байта. Думаю надо определять размер структуры и обращаться напрямую(.
OFFSIDE Как обратиться к 4-ой копии FT.TRAFFIC? Код (Text): FirstTable struc DATETIME db 17 dup (?) SEIZE dd ? TRAFFIC dd ? CONGEST dd ? INSTALL dd ? AVAIL dd ? ENDCHN dd ? FirstTable ends .data FT FirstTable 10 dup(<>) .code mov edi,offset FT assume edi:ptr FirstTable mov eax,[edi].TRAFFIC + sizeof(FirstTable)*(4 - 1)
Я лично сделал вот так mov ebx,type FT mov esi,offset FT.DATETIME а потом уже добавляешь к esi стока раз ebx сколько надо чтоб попасть на нужную структуру
неудобно Обращение к элементу структуры очень расплывчато... Код (Text): lea eax,FT[(3-1)*size FT].DATETIME; Можно ли написать какой нить макрос?
OFFSIDE Если неудобно, возьми си. А вообще, структуры часто располагаются не по фиксированному адресу и тогда вычислять адрес элемента ещё "неудобнее".