Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[Win32] Экстренный вопрос: 15.02.02 10:39 Число просмотров: 908
Автор: Chingachguk <Chingachguk> Статус: Member Отредактировано 15.02.02 10:51 Количество правок: 2
|
> нужно сотворить нечто подобное > прямо из 32разр. кода (не создавая и не загружая 16 dll) > les di, lpCallStruct ; Real mode call structure > int 31h ; Call DPMI > Вопрос: пойдет ли оттуда int и как сделать так, чтобы > lpCallStruct загрузился в база:смещение виде? > можно, конечно базу грузить прямо в ES, а смещение в di, но > как их получить из 32-разр. адреса?
У сервиса int 31h есть ф-ция - получить линейный адрес по селектору и наоборот(назад немного сложнее).
В досе CallStruc я в селектор кидал то, что DPMI засовывало в DS при переключении(lim=64K и т.д.), offset = обычный оффсет:
mov bl,16h ; Call int 16h
mov byte ptr CallDPMIS.RegEAX+1,0 ; reg ah=0h
lahf
and ah,0feh
mov bh,ah
mov cx,0
mov di,offset CallDPMIS
and edi,0ffffh
push ds
pop es
mov ax,0300h
int 31h
jnc @CallV86
Я думаю, из 32 надо кидать в DI обычный оффсет, селектор и так в порядке, DPMI(а точнее, винда) сама разберется. Ж)
ЗЫ А исчо есть апи такая - вызвать прерывание реального режима, так на дискетку "царапины" для защиты записывают. Я про int 25h/26h на 99.666% уверен, что можно.
|
|
|