Готовим BP для адресации параметра
; =================================================== ; Листинг 2. Инициализация и вызов драйвера IPX/SPX ; Файл ipxdrv.asm ; ; (C) A. Frolov, 1993 ; ===================================================
.286 .MODEL SMALL ; --------------------------------------- ; Структура для вызова драйвера IPX/SPX ; ---------------------------------------
IPXSPX_REGS struc rax dw ? rbx dw ? rcx dw ? rdx dw ? rsi dw ? rdi dw ? res dw ? IPXSPX_REGS ends
.DATA
; Точка входа в драйвер IPX/SPX
_ipxspx_drv_entry dd ?
.CODE
PUBLIC _ipxspx_entry, _ipx_init PUBLIC _ipxspx_drv_entry
; --------------------------------------- ; Процедура, вызывающая драйвер IPX/SPX ; ---------------------------------------
_ipxspx_entry PROC FAR
; Готовим BP для адресации параметра функции
push bp mov bp,sp
; Сохраняем регистры, так как драйвер IPX/SPX ; изменяет содержимое практически всех регистров
push es push di push si push dx push cx push bx push ax
; Загружаем регистры из структуры, ; адрес которой передается как параметр
push ds mov bx, [bp+6] ; смещение mov ds, [bp+8] ; сегмент mov es, ds:[bx].res mov di, ds:[bx].rdi mov si, ds:[bx].rsi mov dx, ds:[bx].rdx mov cx, ds:[bx].rcx mov ax, ds:[bx].rax mov bx, ds:[bx].rbx pop ds
; Вызываем драйвер IPX/SPX
call [dword ptr _ipxspx_drv_entry]
; Сохраняем регистры
push ds push dx mov dx, bx
; Записываем в структуру содержимое регистров после вызова драйвера
mov bx, [bp+6] ; смещение mov ds, [bp+8] ; сегмент mov ds:[bx].rax, ax mov ds:[bx].rcx, cx mov ds:[bx].rbx, dx pop dx mov ds:[bx].rdx, dx pop ds
; Восстанавливаем регистры
pop ax pop bx pop cx pop dx pop si pop di pop es
pop bp retf _ipxspx_entry ENDP
; --------------------------------------------- ; Процедура инициализации драйвера IPX/SPX ; ---------------------------------------------
_ipx_init PROC NEAR push bp mov bp,sp
; Определяем наличие драйвера в системе и его точку входа
mov ax, 7a00h int 2fh
; Если драйвера нет, завершаем процедуру
cmp al, 0ffh jne _ipx_init_exit
; Сохраняем адрес точки входа
Содержание Назад Вперед
Forekc.ru
Рефераты, дипломы, курсовые, выпускные и квалификационные работы, диссертации, учебники, учебные пособия, лекции, методические пособия и рекомендации, программы и курсы обучения, публикации из профильных изданий