亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? ethernet.inc

?? MenuetOS是一個用匯編開發的32/64位PC操作系統
?? INC
?? 第 1 頁 / 共 4 頁
字號:
    add     edx, 4
    add     ecx, 4
    mov     ax, [edx]
    mov     [ecx],ax

    ; and also the remote IP address
    add     edx, 2
    mov     eax,[edx]
    mov     [remote_ip_add], eax

    ; Now, add an entry in the table for this IP address if it doesn't exist

    push    eax
    movzx   eax, byte [NumARP]
    mov     ecx, ARP_ENTRY_SIZE
    mul     ecx
    pop     edx
    movzx   ecx, byte [NumARP]
    cmp     ecx, 0
    je      arph_002

arph_001:
    sub     eax, ARP_ENTRY_SIZE
    cmp     [eax + ARPTable], edx
    loopnz  arph_001                      ; Return back if non match

    jnz     arph_002                   ; None found, add to end

    mov     ecx, [remote_hw_add]
    mov     [eax + ARPTable + 4], ecx
    mov     cx, [remote_hw_add+4]
    mov     [eax + ARPTable + 8], cx

    ; specify the type - a valid entry
    mov     cl, 0x00
    mov     [eax + ARPTable + 10], cl
    mov     cl, 0x01
    mov     [eax + ARPTable + 11], cl

    ; Initialise the time to live field - 1 hour
    mov     cx, 0x0E10
    mov     [eax + ARPTable + 12], cx
    jmp     arph_exit

arph_002:

    cmp     byte [NumARP], ARP_TABLE_SIZE
    je      arph_exit

    inc     byte [NumARP]

    movzx   eax, byte [NumARP]
    mov     ecx, ARP_ENTRY_SIZE
    mul     ecx
    sub     eax, ARP_ENTRY_SIZE

    mov     ecx, [remote_ip_add]
    mov     [eax + ARPTable], ecx
    mov     ecx, [remote_hw_add]
    mov     [eax + ARPTable + 4], ecx
    mov     cx, [remote_hw_add+4]
    mov     [eax + ARPTable + 8], cx

    mov     cl, 0x00
    mov     [eax + ARPTable + 10], cl
    mov     cl, 0x01
    mov     [eax + ARPTable + 11], cl

    ; Initialise the time to live field - 1 hour
    mov     cx, 0x0E10
    mov     [eax + ARPTable + 12], cx

arph_exit:
    ret

; pointer to MAC in esi
refreshARP:
    mov     ebx, [esi]
    mov     dx, [esi+4]
    push    edx
    movzx   eax, byte [NumARP]
    mov     ecx, ARP_ENTRY_SIZE
    mul     ecx
    pop     edx
    movzx   ecx, byte [NumARP]
    cmp     ecx, 0
    je      rf_exit

rf_001:
    sub     eax, ARP_ENTRY_SIZE
    cmp     [eax + ARPTable+4], ebx

    je      rf_002
    loop    rf_001
    jmp     rf_exit

rf_002:
    cmp     [eax + ARPTable+8], dx
    je      rf_gotone
    loop    rf_001
    jmp     rf_exit

rf_gotone:
    ; Initialise the time to live field - 1 hour
    mov     cx, 0x0E10
    mov     [eax + ARPTable + 12], cx

rf_exit:
    ret

;***************************************************************************
;   Function
;      getMACfromIP
;
;   Description
;       Takes an IP address in edx and scans the ARP table for
;        a matching entry
;       If a match is found, it's MAC address is stored in MACAddress.
;      Otherwise the value 0 is writen to MACAddress
;      eax holds ARP table entry status code ( ARP_ )
;      ebx unchanged
;
;***************************************************************************
getMACfromIP:
    ; first, check destination IP to see if it is on 'this' network.
    ; The test is:
    ; if ( destIP & subnet_mask == stack_ip & subnet_mask )
    ;   desitnation is local
    ; else
    ;  destination is remote, so pass to gateway

    mov     eax, edx
    and     eax, [subnet_mask]
    mov     ecx, [stack_ip]
    and     ecx, [subnet_mask]
    cmp     eax, ecx
    je      gm0

    mov     edx, [gateway_ip]
gm0:
    push    edx
    xor     eax, eax
    mov     [MACAddress], eax
    mov     [MACAddress + 4], ax

    movzx   eax, byte [NumARP]
    mov     ecx, ARP_ENTRY_SIZE
    mul     ecx

    pop     edx

    movzx   ecx, byte [NumARP]
    cmp     ecx, 0
    je      gm_none
gm1:
    sub     eax, ARP_ENTRY_SIZE
    cmp     [eax + ARPTable], edx
    loopnz  gm1                      ; Return back if non match
    jnz     gm_none                   ; Quit if none found

    ; eax holds index
    mov     ecx, [eax + ARPTable + 4]
    mov     [MACAddress], ecx
    mov     cx, [eax + ARPTable + 8]
    mov     [MACAddress+4], cx

    ; Return the entry status in eax
    mov     ch, [eax + ARPTable + 10]
    mov     cl, [eax + ARPTable + 11]
    movzx   eax, cx
    jmp     gm_exit

gm_none:
    mov     eax, ARP_NO_ENTRY

gm_exit:
    ret

;***************************************************************************
;
;  PCI CODE FOLLOWS
;
;  the following functions provide access to the PCI interface.
;  These functions are used by scan_bus, and also some ethernet drivers
;
;***************************************************************************

;***************************************************************************
;   Function
;      config_cmd
;
;   Description
;       creates a command dword  for use with the PCI bus
;       bus # in ebx
;      devfn in ecx
;       where in edx
;
;      command dword returned in eax
;       Only eax destroyed
;***************************************************************************
config_cmd:
    push    ecx
    mov     eax, ebx
    shl     eax, 16
    or      eax, 0x80000000
    shl     ecx, 8
    or      eax, ecx
    pop     ecx
    or      eax, edx
    and     eax, 0xFFFFFFFC
    ret

;***************************************************************************
;   Function
;      pcibios_read_config_byte
;
;   Description
;       reads a byte from the PCI config space
;       bus # in ebx
;      devfn in ecx
;       where in edx ( ls 16 bits significant )
;
;      byte returned in al ( rest of eax zero )
;       Only eax/edx destroyed
;***************************************************************************
pcibios_read_config_byte:
    call    config_cmd
    push    dx
    mov     dx, 0xCF8
    out     dx, eax
    pop     dx

    xor     eax, eax
    and     dx, 0x03
    add     dx, 0xCFC
;   and     dx, 0xFFC
    in      al, dx
    ret

;***************************************************************************
;   Function
;      pcibios_read_config_word
;
;   Description
;       reads a word from the PCI config space
;       bus # in ebx
;      devfn in ecx
;       where in edx ( ls 16 bits significant )
;
;      word returned in ax ( rest of eax zero )
;       Only eax/edx destroyed
;***************************************************************************
pcibios_read_config_word:
    call    config_cmd
    push    dx
    mov     dx, 0xCF8
    out     dx, eax
    pop     dx

    xor     eax, eax
    and     dx, 0x02
    add     dx, 0xCFC
;   and     dx, 0xFFC
    in      ax, dx
    ret

;***************************************************************************
;   Function
;      pcibios_read_config_dword
;
;   Description
;       reads a dword from the PCI config space
;       bus # in ebx
;      devfn in ecx
;       where in edx ( ls 16 bits significant )
;
;      dword returned in eax
;       Only eax/edx destroyed
;***************************************************************************
pcibios_read_config_dword:
    push    edx
    call    config_cmd
    push    dx
    mov     dx, 0xCF8
    out     dx, eax
    pop     dx
    xor     eax, eax
    mov     dx, 0xCFC
    in      eax, dx
    pop     edx
    ret

;***************************************************************************
;   Function
;      pcibios_write_config_byte
;
;   Description
;       write a byte in al to the PCI config space
;       bus # in ebx
;      devfn in ecx
;       where in edx ( ls 16 bits significant )
;
;       Only eax/edx destroyed
;***************************************************************************
pcibios_write_config_byte:
    push    ax
    call    config_cmd
    push    dx
    mov     dx, 0xCF8
    out     dx, eax
    pop     dx
    pop     ax

    and     dx, 0x03
    add     dx, 0xCFC
    out     dx, al
    ret

;***************************************************************************
;   Function
;      pcibios_write_config_word
;
;   Description
;       write a word in ax to the PCI config space
;       bus # in ebx
;      devfn in ecx
;       where in edx ( ls 16 bits significant )
;
;       Only eax/edx destroyed
;***************************************************************************
pcibios_write_config_word:
    push    ax
    call    config_cmd
    push    dx
    mov     dx, 0xCF8
    out     dx, eax
    pop     dx
    pop     ax

    and     dx, 0x02
    add     dx, 0xCFC
    out     dx, ax
    ret

;***************************************************************************
;   Function
;      delay_us
;
;   Description
;       delays for 30 to 60 us
;
;        I would prefer this routine to be able to delay for
;       a selectable number of microseconds, but this works for now.
;
;       If you know a better way to do 2us delay, pleae tell me!
;***************************************************************************
delay_us:
    push    eax
    push    ecx

    mov     ecx,2

    in      al,0x61
    and     al,0x10
    mov     ah,al
    cld

dcnt1:
    in      al,0x61
    and     al,0x10
    cmp     al,ah
    jz      dcnt1

    mov     ah,al
    loop    dcnt1

    pop     ecx
    pop     eax

    ret

;***************************************************************************
;   Function
;      scan_bus
;
;   Description
;       Scans the PCI bus for a supported device
;        If a supported device is found, the drvr_ variables are initialised
;       to that drivers functions ( as defined in the PCICards table)
;
;        io_addr   holds card I/O space. 32 bit, but only LS 16 bits valid
;        pci_data  holds the PCI vendor + device code
;       pci_dev   holds PCI bus dev #
;       pci_bus   holds PCI bus #
;
;        io_addr will be zero if no card found
;
;***************************************************************************
scan_bus:
    xor     eax, eax
    mov     [hdrtype], al
    mov     [pci_data], eax

    xor     ebx, ebx         ; ebx = bus# 0 .. 255

sb_bus_loop:
    xor     ecx, ecx         ; ecx = devfn# 0 .. 254  ( not 255? )

sb_devf_loop:
    mov     eax, ecx
    and     eax, 0x07

    cmp     eax, 0
    jne     sb_001

    mov     edx, PCI_HEADER_TYPE
    call    pcibios_read_config_byte

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久午夜片| 在线视频中文字幕一区二区| 日韩高清一区在线| 亚洲一区在线观看视频| 亚洲视频在线观看一区| 亚洲男同性恋视频| 亚洲欧美日韩一区二区| 亚洲欧洲综合另类| 婷婷夜色潮精品综合在线| 婷婷综合五月天| 日韩免费电影一区| 亚洲电影在线免费观看| 亚洲精品伦理在线| 亚洲成a人片综合在线| 日日夜夜免费精品视频| 欧美a级一区二区| 九九在线精品视频| 国产成人午夜视频| 91一区二区在线| 欧美日韩色综合| 欧美mv和日韩mv的网站| 久久久久88色偷偷免费| 亚洲天天做日日做天天谢日日欢 | 欧美一区二区三区四区高清 | 国产日韩精品一区二区三区| 国产欧美日韩精品在线| 亚洲伦理在线精品| 日韩精品1区2区3区| 国产成人精品一区二区三区网站观看| 成人国产精品免费网站| 国产毛片精品一区| 在线观看日韩电影| 国产日产欧产精品推荐色 | 国产精品免费观看视频| 一区二区三区日韩欧美精品| 麻豆成人av在线| 99国产欧美久久久精品| 日韩一卡二卡三卡国产欧美| 国产精品三级av在线播放| 午夜精品久久一牛影视| 成人黄色小视频| 日韩美女天天操| 亚洲综合在线电影| 国产精品亚洲一区二区三区妖精| 色综合久久综合网欧美综合网| 欧美一区二区播放| 亚洲婷婷在线视频| 国产成人精品影院| 日韩精品最新网址| 一区二区三区美女视频| 懂色av一区二区夜夜嗨| 欧美一区二区三区四区高清| 一区二区三区中文字幕电影| 国产69精品久久99不卡| 日韩精品一区二| 日韩二区三区在线观看| 欧美亚洲国产一区二区三区| 国产精品麻豆一区二区| 韩国v欧美v亚洲v日本v| 欧美一级日韩免费不卡| 亚洲一区二区四区蜜桃| 色综合天天天天做夜夜夜夜做| 555www色欧美视频| 依依成人精品视频| 成人激情小说网站| 国产精品私人影院| 麻豆视频一区二区| 91麻豆精品国产自产在线| 一区二区视频免费在线观看| 97se亚洲国产综合自在线观| 久久久久久久久久久黄色| 国内精品久久久久影院一蜜桃| 欧美精品自拍偷拍动漫精品| 亚洲1区2区3区4区| 欧美日韩日本视频| 视频一区中文字幕国产| 6080日韩午夜伦伦午夜伦| 亚洲va欧美va人人爽| 欧美日本韩国一区二区三区视频| 亚洲亚洲人成综合网络| 欧美日本韩国一区| 免费的国产精品| ww亚洲ww在线观看国产| 国产精品白丝jk黑袜喷水| 国产精品免费视频观看| 色视频成人在线观看免| 一区二区三区日韩| 91精品国产一区二区三区香蕉| 免费av成人在线| 久久亚洲综合色| 91日韩一区二区三区| 一区二区三区免费网站| 91麻豆精品91久久久久同性| 久久99九九99精品| 国产精品丝袜在线| 欧美日韩在线直播| 理论电影国产精品| 国产精品国产自产拍高清av | 99精品久久免费看蜜臀剧情介绍| 一区二区三区在线视频观看58 | 亚洲视频网在线直播| 欧美日韩免费在线视频| 久久精品久久久精品美女| 中文字幕乱码亚洲精品一区| 在线免费观看日韩欧美| 美女诱惑一区二区| 国产精品久久久久一区| 欧美日本一区二区三区| 风流少妇一区二区| 天堂午夜影视日韩欧美一区二区| 精品国产三级电影在线观看| 91视频在线观看| 久久99精品久久久久久| 亚洲免费伊人电影| 久久日韩粉嫩一区二区三区 | 久久国产精品色婷婷| 亚洲天天做日日做天天谢日日欢 | 成人激情黄色小说| 日本在线不卡一区| 亚洲免费观看高清完整版在线| 日韩午夜精品电影| 色激情天天射综合网| 国产精品中文字幕日韩精品 | 欧美性大战久久久久久久蜜臀| 国产一区亚洲一区| 青青草91视频| 亚洲国产精品一区二区久久| 国产调教视频一区| 精品少妇一区二区三区在线播放 | 亚洲国产精品t66y| 精品美女一区二区| 欧美三级乱人伦电影| 成人手机在线视频| 国产一区美女在线| 蜜臀av在线播放一区二区三区| 亚洲综合色区另类av| 1000部国产精品成人观看| 精品国产乱码久久久久久老虎 | 欧美丝袜丝nylons| 91蝌蚪porny九色| 成人听书哪个软件好| 国产在线观看一区二区| 麻豆精品一区二区av白丝在线| 亚洲综合色噜噜狠狠| 亚洲激情网站免费观看| 国产精品视频在线看| 国产欧美综合在线| 中文一区在线播放| 欧美激情中文字幕| 国产精品视频看| 国产精品污污网站在线观看| 国产日韩精品一区| 中文字幕一区二区三区四区不卡 | 国产精品美女久久福利网站| 国产人伦精品一区二区| 久久久亚洲国产美女国产盗摄 | 亚洲国产高清不卡| 国产亚洲综合av| 国产精品蜜臀在线观看| 国产精品成人免费在线| 18成人在线观看| 亚洲成人av一区二区| 午夜国产精品影院在线观看| 天天亚洲美女在线视频| 久久er精品视频| 国产98色在线|日韩| 精品视频资源站| 欧美欧美午夜aⅴ在线观看| 欧美精选在线播放| 亚洲精品一区二区三区福利| 久久综合色8888| 国产精品电影院| 亚洲不卡在线观看| 精品在线视频一区| 豆国产96在线|亚洲| 欧美三级欧美一级| 久久看人人爽人人| 亚洲另类一区二区| 日韩精品电影一区亚洲| 国产69精品久久777的优势| 欧美性色黄大片手机版| 欧美大尺度电影在线| 中文字幕亚洲不卡| 日本不卡在线视频| 成人免费视频视频在线观看免费 | 欧美一区2区视频在线观看| 久久久另类综合| 亚洲v中文字幕| 国产在线精品免费| 欧美日韩在线播| 欧美国产日韩一二三区| 偷拍亚洲欧洲综合| 欧美日韩精品欧美日韩精品一综合 | 亚洲免费观看在线视频| 日本大胆欧美人术艺术动态| 91麻豆免费看片| 久久久久国产免费免费| 日韩av不卡一区二区| 91免费视频大全| 久久久综合精品|