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

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

?? ftps.asm

?? 基于Menuet OS的用戶應用程序及其系統應用程序(用戶:BMP/jpg圖片查看器 系統:CPU 狀態監控程序等)
?? ASM
?? 第 1 頁 / 共 3 頁
字號:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;
;    FTPS
;    FTP Server
;
;    Compile with FASM for Menuet
;

; note: telnet == 23, ftp cmd == 21, data on 20

use32

    org     0x0

    db      'MENUET00'              ; 8 byte id
    dd      38                      ; required os
    dd      START                   ; program start
    dd      I_END                   ; program image size
    dd      0x170000                ; required amount of memory
                                    ; esp = 0x7FFF0
    dd      0x00000000              ; reserved=no extended header


; Various states of client connection
USER_NONE       equ 0   ; Awaiting a connection
USER_CONNECTED  equ 1   ; User just connected, prompt given
USER_USERNAME   equ 2   ; User given username
USER_LOGGED_IN  equ 3   ; User given password





START:                          ; start of execution
    ; Clear the screen memory
    mov     eax, '    '
    mov     edi,text
    mov     ecx,80*30 /4
    cld
    rep     stosd

    call    draw_window

    ; init the receive buffer pointer
    mov     eax, buff
    mov     [buffptr], eax

    ; Init FTP server state machine
    mov     al, USER_NONE
    mov     [state], al

    ; Open the listening socket
    call    connect

still:
    ; check connection status
    mov     eax,53
    mov     ebx,6               ; Get socket status
    mov     ecx,[CmdSocket]
    int     0x40

    mov     ebx, [CmdSocketStatus]
    mov     [CmdSocketStatus], eax

    cmp     eax, ebx
    je      waitev

    ; If the socket closed by remote host, open it again.
    cmp     eax, 7
    je      con
    
    ; If socket closed by Reset, open it again
    cmp     eax, 11
    je      con

    ; If a user has just connected, start by outputting welcome msg
    cmp     eax, 4
    jne     noc

    mov     esi, loginStr0
    mov     edx, loginStr0_end - loginStr0
    call    outputStr

    mov     al, USER_CONNECTED
    mov     [state], al
    jmp     noc


con:
    ; Need to call disconnect, since a remote close does not fully
    ; close the socket
    call    disconnect
    call    connect
    jmp     noc

noc:
    ; Display the changed connected status
    call    draw_window

waitev:
    mov     eax,23                 ; wait here for event
    mov     ebx,1                 ; Delay for up to 1s
    int     0x40

    cmp     eax,1                  ; redraw request ?
    je      red
    cmp     eax,2                  ; key in buffer ?
    je      key
    cmp     eax,3                  ; button in buffer ?
    je      button

    ; any data from the socket?

    mov     eax, 53
    mov     ebx, 2                  ; Get # of bytes in input queue
    mov     ecx, [CmdSocket]
    int     0x40
    cmp     eax, 0
    jne     read_input

    jmp     still

read_input:
    mov     eax, 53
    mov     ebx, 3                  ; Get a byte from socket in bl
    mov     ecx, [CmdSocket]
    int     0x40

    call    ftpRxCmdData            ; process incoming ftp command

    ; Keep processing data until there is no more to process
    mov     eax, 53
    mov     ebx, 2                  ; Get # of bytes in input queue
    mov     ecx, [CmdSocket]
    int     0x40
    cmp     eax, 0
    jne     read_input

    ; Now redraw the text text field.
    ; Probably not required, since ftp requires no
    ; console i/o.
    ; Leave in for now, for debugging.
    call    draw_text
    jmp     still

red:                          ; REDRAW WINDOW
    call    draw_window
    jmp     still

key:                          ; KEY
    mov     eax,2                  ; get but ignore
    int     0x40
    jmp     still

button:
    mov     eax,17
    int     0x40
    cmp     ah,1
    jne     still

    ; Exit button pressed, so close socket and quit
    mov     eax,53
    mov     ebx,8
    mov     ecx,[CmdSocket]
    int     0x40

    ; ... terminate program
    mov     eax,-1
    int     0x40
    jmp     still



;   *********************************************
;   *******  WINDOW DEFINITIONS AND DRAW ********
;   *********************************************
draw_window:
    pusha

    mov  eax,12
    mov  ebx,1
    int  0x40

    mov  eax,0                     ; DRAW WINDOW
    mov  ebx,100*65536+491 + 8 +15
    mov  ecx,100*65536+270 + 20     ; 20 for status bar
    mov  edx,[wcolor]
    add  edx,0x02000000
    mov  esi,0x80557799
    mov  edi,0x00557799
    int  0x40

    mov  eax,4                     ; WINDOW LABEL
    mov  ebx,8*65536+8
    mov  ecx,0x00ffffff
    mov  edx,labelt
    mov  esi,labellen-labelt
    int  0x40


    mov  eax,8                     ; CLOSE BUTTON
     mov  ebx,(491 + 20 -19)*65536+12

    mov  ecx,5*65536+12
    mov  edx,1
    mov  esi,0x557799
    int  0x40

    ; draw status bar
    mov     eax, 13
    mov     ebx, 4*65536+484 + 8 +15
    mov     ecx, 270*65536 + 3
    mov     edx, 0x00557799
    int     0x40


    mov  esi,contlen-contt          ; display connected status
    mov     edx, contt
    mov     eax, [CmdSocketStatus]
    cmp     eax, 4                  ; 4 is connected
    je      pcon
    mov     esi,discontlen-discontt
    mov     edx, discontt
pcon:

    mov  eax,4                      ; status text
    mov  ebx,380*65536+276
    mov  ecx,0x00ffffff
    int  0x40

    ; Draw the text on the screen, clearing it first
    ; This can go when we loose debuggin info.
    xor  eax,eax
    mov  edi,text+80*30
    mov  ecx,80*30 /4
    cld
    rep  stosd

    call draw_text

    mov  eax,12
    mov  ebx,2
    int  0x40

    popa

    ret


;***************************************************************************
;   Function
;      draw_text
;
;   Description
;       Updates the text on the screen. This is part of the debugging code
;
;   Inputs
;       Character to add in bl
;
;***************************************************************************
draw_text:

    pusha

    mov  esi,text
    mov  eax,0
    mov  ebx,0
  newletter:
    mov  cl,[esi]
    cmp  cl,[esi+30*80]
    jne  yesletter
    jmp  noletter
  yesletter:
    mov  [esi+30*80],cl

    ; erase character

    pusha
    mov     edx, 0                  ; bg colour
    mov     ecx, ebx
    add     ecx, 26
    shl     ecx, 16
    mov     cx, 9
    mov     ebx, eax
    add     ebx, 6
    shl     ebx, 16
    mov     bx, 6
    mov     eax, 13
    int     0x40
    popa

    ; draw character

    pusha
    mov     ecx, 0x00ffffff
    push bx
    mov  ebx,eax
    add  ebx,6
    shl  ebx,16
    pop  bx
    add  bx,26
    mov  eax,4
    mov  edx,esi
    mov  esi,1
    int  0x40
    popa

  noletter:

    add  esi,1
    add  eax,6
    cmp  eax,80*6
    jb   newletter
    mov  eax,0
    add  ebx,10
    cmp  ebx,24*10
    jb   newletter

    popa
    ret



;***************************************************************************
;   Function
;      ftpRxCmdData
;
;   Description
;       Prcoesses incoming command data, calling a handler for each command.
;       Commands are built up in buff before being processed.
;
;   Inputs
;       Character to add in bl
;
;***************************************************************************
ftpRxCmdData:
    ; Quit if we are not connected
    ;( This case shouldn't be necessary, but be safe )
    mov     al, [state]
    cmp     al, USER_NONE
    je      frcd_exit

    ; Store the incoming character
    mov     esi, [buffptr]
    mov     [esi], bl
    inc     esi
    mov     [buffptr], esi

    ; For debugging, show the data coming in
    pusha
    call    printChar
    popa

    ; Do we have an end of line? (LF)
    ; if not, just exit
    cmp     bl, 0x0a
    jne     frcd_exit

    ; OK we have a complete command.
    ; Process, and send response

    ; There are a number of states involved in ftp,
    ; to do with logging in.

    mov     al, [state]
    cmp     al, USER_CONNECTED
    jne     fs001

    ; This should be the username

    ; TODO validate username

    ; OK, username accepted - ask for password
    mov     esi, loginStr1
    mov     edx, loginStr1_end - loginStr1
    call    outputStr

    mov     al, USER_USERNAME
    mov     [state], al

    ; init the receive buffer pointer
    mov     eax, buff
    mov     [buffptr], eax

    jmp     frcd_exit

fs001:
    cmp     al, USER_USERNAME
    jne     fs002

    ; This should be the password

    ; TODO validate password

    ; OK, password accepted - show they are logged in
    mov     esi, loginStr2
    mov     edx, loginStr2_end - loginStr2
    call    outputStr

    mov     al, USER_LOGGED_IN
    mov     [state], al

    ; init the receive buffer pointer
    mov     eax, buff
    mov     [buffptr], eax

    jmp     frcd_exit

fs002:
    cmp     al, USER_LOGGED_IN
    jne     fs003

    ; This should be a cmd
    call    findCmd
    mov     eax, [cmdPtr]
    cmp     eax, 0

    je      fs002b

    call    [cmdPtr]

fs002a:
    ; init the receive buffer pointer
    mov     eax, buff
    mov     [buffptr], eax

    jmp     frcd_exit

fs002b:
    ; an unsupported command was entered.
    ; Tell user that the command is not supported

    mov     esi, unsupStr
    mov     edx, unsupStr_end - unsupStr
    call    outputStr

    jmp     fs002a

fs003:
frcd_exit:
    ret



;***************************************************************************
;   Function
;      outputStr
;
;   Description
;       Sends a string over the 'Command' socket
;
;   Inputs
;       String in esi
;       Length in edx
;
;***************************************************************************
outputStr:
    push    esi
    push    edx
    mov     eax,53
    mov     ebx,7
    mov     ecx,[CmdSocket]
    int     0x40
    pop     edx
    pop     esi
    
    cmp     eax, 0
    je      os_exit
    
    ; The TCP/IP transmit queue is full; Wait a bit, then retry 
    pusha
    mov     eax,5
    mov     ebx,1                 ; Delay for up 100ms
    int     0x40
    popa
    jmp     outputStr        
os_exit:
    ret



;***************************************************************************
;   Function
;      outputDataStr
;
;   Description
;       Sends a string over the 'Data' socket
;
;   Inputs
;       String in esi
;       Length in edx
;
;***************************************************************************
outputDataStr:
    push    esi
    push    edx
    mov     eax,53
    mov     ebx,7
    mov     ecx,[DataSocket]
    int     0x40
    pop     edx
    pop     esi

    cmp     eax, 0
    je      ods_exit

    ; The TCP/IP transmit queue is full; Wait a bit, then retry 
    pusha
    mov     eax,5
    mov     ebx,2            ; Delay for upto 20ms
    int     0x40
    popa
    jmp     outputDataStr        
ods_exit:
    ret



;***************************************************************************
;   Function
;      printChar
;
;   Description
;       Writes a character to the screen; Used to display the data coming
;       in from the user. Really only useful for debugging.
;
;   Inputs
;       Character in bl
;
;***************************************************************************
printChar:
    cmp     bl,13                          ; BEGINNING OF LINE
    jne     nobol
    mov     ecx,[pos]
    add     ecx,1
boll1:
    sub     ecx,1
    mov     eax,ecx
    xor     edx,edx
    mov     ebx,80
    div     ebx
    cmp     edx,0
    jne     boll1
    mov     [pos],ecx
    jmp     newdata
nobol:

    cmp     bl,10                            ; LINE DOWN
    jne     nolf
addx1:
    add     [pos],dword 1
    mov     eax,[pos]
    xor     edx,edx
    mov     ecx,80
    div     ecx
    cmp     edx,0
    jnz     addx1
    mov     eax,[pos]
    jmp     cm1
nolf:

    cmp     bl,8                            ; BACKSPACE
    jne     nobasp
    mov     eax,[pos]
    dec     eax
    mov     [pos],eax
    mov     [eax+text],byte 32
    mov     [eax+text+60*80],byte 0
    jmp     newdata
nobasp:

    cmp     bl,15                           ; CHARACTER
    jbe     newdata
putcha:
    mov     eax,[pos]
    mov     [eax+text],bl
    mov     eax,[pos]
    add     eax,1

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二三区| 亚洲日本中文字幕区| 久久 天天综合| 日韩欧美高清在线| 久久99国产精品久久99果冻传媒| 51精品视频一区二区三区| 爽好多水快深点欧美视频| 日韩一区二区在线观看视频播放| 免费在线观看一区| 久久五月婷婷丁香社区| 国产99久久久国产精品免费看| 亚洲手机成人高清视频| 一本色道久久综合亚洲aⅴ蜜桃 | 欧美喷潮久久久xxxxx| 亚洲bt欧美bt精品777| 日韩欧美国产午夜精品| 懂色av中文字幕一区二区三区| 亚洲日本在线a| 欧美日韩国产一级| 精品一区二区久久久| 中文字幕精品综合| 在线中文字幕一区| 伦理电影国产精品| 国产精品成人网| 欧美伦理影视网| 国产一区在线观看视频| 1024成人网色www| 欧美日韩精品是欧美日韩精品| 精品一区二区精品| 亚洲欧美视频在线观看视频| 日韩视频免费观看高清完整版 | 亚洲制服欧美中文字幕中文字幕| 日韩色在线观看| 99久久精品免费观看| 免费一级片91| 综合欧美亚洲日本| 久久综合九色综合久久久精品综合| 97精品电影院| 国产一区日韩二区欧美三区| 亚洲精品国产第一综合99久久| 日韩免费电影一区| 99精品热视频| 国产一区二区久久| 午夜精品一区二区三区电影天堂 | www日韩大片| 欧美性大战久久久| 丰满少妇久久久久久久| 日本女优在线视频一区二区| 综合分类小说区另类春色亚洲小说欧美 | 丁香激情综合国产| 裸体在线国模精品偷拍| 一区二区三区在线视频观看| 国产视频一区二区在线观看| 欧美一区二区三区喷汁尤物| 91精品福利在线| 成人毛片老司机大片| 久久精品国产一区二区三区免费看| 亚洲精品福利视频网站| 国产精品美女久久久久高潮| 欧美精品一区二区在线播放| 6080日韩午夜伦伦午夜伦| 91久久香蕉国产日韩欧美9色| va亚洲va日韩不卡在线观看| 国产资源精品在线观看| 免费精品99久久国产综合精品| 亚洲成人久久影院| 亚洲第一在线综合网站| 亚洲乱码国产乱码精品精小说 | 欧美日韩精品欧美日韩精品| av成人免费在线观看| 国产精品伊人色| 久久99热国产| 狠狠色丁香久久婷婷综| 久久精品国产色蜜蜜麻豆| 日韩av电影免费观看高清完整版 | 国产精品污www在线观看| 欧美精品一区二区蜜臀亚洲| 欧美成人午夜电影| 日韩午夜激情免费电影| 日韩视频免费直播| 欧美mv日韩mv国产网站app| 日韩精品一区二区三区在线观看 | 蜜桃91丨九色丨蝌蚪91桃色| 蜜臀久久99精品久久久画质超高清 | 欧美一区二区三区四区久久 | 国产在线不卡视频| 国产精品一区不卡| 国产91露脸合集magnet| 丰满少妇在线播放bd日韩电影| 成人一区在线观看| av影院午夜一区| 色综合色综合色综合色综合色综合| av午夜一区麻豆| 欧洲色大大久久| 欧美精品tushy高清| 日韩一区二区三区四区| 精品国产一区二区三区不卡 | 色综合久久久久综合| 欧美视频中文字幕| 69堂国产成人免费视频| 精品久久五月天| 国产午夜精品一区二区| 国产精品福利av | 日韩不卡一区二区三区| 激情成人午夜视频| 国产aⅴ综合色| 91丨九色丨蝌蚪富婆spa| 欧美日韩视频不卡| 精品福利av导航| 国产精品国产三级国产三级人妇| 亚洲男同1069视频| 毛片一区二区三区| 成人97人人超碰人人99| 欧美日本在线观看| 精品国产人成亚洲区| 亚洲色欲色欲www| 性欧美疯狂xxxxbbbb| 国产曰批免费观看久久久| 91猫先生在线| 精品久久一区二区| 尤物视频一区二区| 久久国产婷婷国产香蕉| av一本久道久久综合久久鬼色| 555夜色666亚洲国产免| 中文字幕第一区综合| 日韩高清一级片| 成人av午夜电影| 欧美日韩在线免费视频| 国产亚洲人成网站| 舔着乳尖日韩一区| 91年精品国产| 欧美成人性福生活免费看| 亚洲精品免费在线| 国产麻豆成人传媒免费观看| 欧美三级电影网站| 国产精品成人在线观看| 久久se这里有精品| 欧美日韩高清不卡| 亚洲欧美激情一区二区| 国产乱码一区二区三区| 欧美久久久久久蜜桃| 亚洲视频免费在线观看| 韩国三级电影一区二区| 欧美日韩激情一区二区三区| 成人欧美一区二区三区1314| 国产麻豆视频一区| 日韩欧美一区二区免费| 亚洲国产精品久久久男人的天堂| 成人性视频网站| 精品国产伦一区二区三区观看体验| 亚洲不卡在线观看| 色综合天天做天天爱| 日本一区二区三区免费乱视频| 九九精品一区二区| 欧美精品久久一区二区三区| 亚洲综合成人在线视频| 白白色亚洲国产精品| 国产精品婷婷午夜在线观看| 国产一区 二区| 久久亚洲二区三区| 九色|91porny| 欧美mv日韩mv亚洲| 国产在线一区观看| 国产视频一区在线播放| 国产成人在线视频网址| 久久久精品欧美丰满| 韩日av一区二区| 久久免费的精品国产v∧| 国产自产视频一区二区三区| 欧美成人伊人久久综合网| 激情图片小说一区| 久久久高清一区二区三区| 国产麻豆精品视频| 久久精品欧美一区二区三区不卡 | 日本美女一区二区三区| 91精品综合久久久久久| 美日韩一区二区三区| 亚洲精品在线观| 成人性生交大片免费看视频在线 | 欧美日韩精品一区二区| 日韩av高清在线观看| 日韩丝袜美女视频| 国产在线麻豆精品观看| 国产精品视频你懂的| aaa欧美日韩| 亚洲成人av在线电影| 欧美一级黄色片| 国产自产2019最新不卡| 国产精品久久久久国产精品日日| 成人国产一区二区三区精品| 亚洲美女免费视频| 欧美一区二区三区性视频| 国产一区二区三区综合| 中文字幕五月欧美| 欧美日韩一级片在线观看| 男男gaygay亚洲| 中文字幕av一区二区三区高| 色88888久久久久久影院按摩| 午夜欧美在线一二页| 久久久噜噜噜久噜久久综合|