Протоколы Internet



Сетевые драйверы - часть 8


/p>

POP DI

POP ES

RET


HAVE_SIGNATURE:

MOV CX, 32

; Установка начального значения счетчика

LEA SI, _PARAM.LINTN

; Устанавливаем указатель списка

MOV AL, 60H

; Задаем начальный номер прерывания

CHOICE:

CMP BYTE PTR [SI], 0

JNE SETDRV

INC AL

LOOP CHOICE

SETDRV:

MOV AH, 35H

INT 21H

MOV _PARAM.HANDLER.OFFS,BX

; Определяем адрес драйвера

MOV _PARAM.HANDLER.SEGM, ES

PUSH DS

POP ES

MOV CX, EADDR_LEN

MOV SI, OFFSET ETHER_ADDR

MOV DI, OFFSET ETHER_BDCST

REPE CMPSB

JE GET_MODE

; Адрес не определен

MOV AH, 25

; Записываем ethernet-адрес

MOV DI, offset ETHER_ADDR

MOV CX, EADDR_LEN

call int_pkt

MOV _PARAM.ER_CODE, DX

; Устанавливаем код ошибки

JMP OKAY

GET_MODE:

MOV SAFE, DS

; Спасаем DS

PUSH DS

MOV AH, 2

; Открываем доступ пакетам

MOV AL, 1

; Класс интерфейса

MOV BX, -1

; Тип интерфейса

MOV DL, 0

; Номер интерфейса

MOV CX, 2

; Используем длину type = 2

MOV SI, OFFSET BOGUS_TYPE

PUSH CS

; ES:DI -> Receiver.

POP ES

MOV DI, OFFSET RECEIVER

call INT_PKT

JNC $_$

MOV _PARAM.ER_CODE, DX

; Устанавливаем код ошибки

$_$:

MOV _PARAM.HANDLES, AX

; Записываем указатель-Handle

MOV AH, 6

; Определяем ethernet-адрес интерфейса

PUSH DS

POP ES

MOV DI, offset _PARAM.ETHER_ADR

MOV CX, EADDR_LEN

MOV BX, _PARAM.HANDLES

call int_pkt

JNC NOBAD

MOV _PARAM.ER_CODE, 273

; Ошибка при определении Ethernet-адреса

POP DS

JMP OKAY

<


Содержание  Назад  Вперед