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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? rxdosfat.asm

?? dos source
?? ASM
?? 第 1 頁(yè) / 共 4 頁(yè)
字號(hào):
        jnz releaseClusterChain_08                      ; no -->

releaseClusterChain_16:
        restoreAllRegisters
        ret

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Find All Free Space                                          ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   ax     drive                                                ;
        ;   cx     # free clusters                                      ;
        ;   es:bx  pointer to DPB                                       ;
        ;...............................................................;

AmountFreeSpace:

        Entry
        def  _drive, ax
        def  _freespace
        def  _currcluster
        def  _maxclusters
        def  _entriesPerSector

        ddef _dpb
        ddef _sector
        ddef _buffer
    
        call getDPB                                     ; (es:bx) Device Parameter Block
        stordarg _dpb, es, bx                           ; save address of dpb 
        jc amountFree_Return_Exit                       ; exit if invalid -->

        mov cx, word ptr es:[ _dpbFreeCount ][ bx ]     ; get free cluster count
        cmp cx, -1                                      ; is free space valid ?
        jz amountFree_checkDevice                       ; no, check device physically -->

amountFree_Return:
        getarg ax, _drive
        getdarg es, bx, _dpb
        mov word ptr es:[ _dpbFreeCount ][ bx ], cx     ; save valid number

amountFree_Return_Exit:
        Return

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  check device physically
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

amountFree_checkDevice:

        xor dx, dx                                      ; starting cluster
        mov word ptr [ _freespace   ][ bp ], dx
        mov word ptr [ _currcluster ][ bp ], dx

        mov ax, word ptr es:[ _dpbMaxClusterNumber ][ bx ]
        add ax, 2                                       ; adj for first two used entries
        mov word ptr [ _maxclusters ][ bp ], ax

        test word ptr es:[ _dpbMaxClusterNumber ][ bx ], 0F000h
        jnz amountFree16BitFAT                          ; if 16-bit FAT -->

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  12 Bit FAT 
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

amountFree12BitFAT:
        push dx
        getarg ax, _drive                               ; restore drive
        getdarg es, bx, _dpb                            ; restore dpb
        call _get_12Bit_ClusterValue                    ; optimized get value

        or dx, dx                                       ; cluster free ?
        jnz amountFree12BitFAT_18                       ; no -->
        inc word ptr [ _freespace ][ bp ]

amountFree12BitFAT_18:
        pop dx
        inc dx
        cmp dx, word ptr [ _maxclusters ][ bp ]
        jc amountFree12BitFAT

        getarg cx, _freespace
        jmp amountFree_Return

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  16 Bit FAT 
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

amountFree16BitFAT:
        mov cx, word ptr es:[ _dpbBytesPerSector ][ bx ]
        shr cx, 1                                       ; entries per sector
        storarg _entriesPerSector, cx

        xor cx, cx
        mov dx, word ptr es:[ _dpbFirstFAT ][ bx ]      ; where is first FAT table ?
        stordarg _sector, cx, dx

        mov ax, word ptr [ _drive ][ bp ]               ; get drive
        call readBuffer                                 ; read FAT Table
        stordarg _buffer, es, di                        ; save buffer address
        or byte ptr es:[ ccbStatus ][ di ], ( ccb_isFAT )

amountFree16BitFAT_08:
        xor ax, ax
        getarg cx, _entriesPerSector
        mov di, word ptr [ _buffer. _pointer ][ bp ]
        lea di, offset ccbData [ di ]                   ; start of buffer

amountFree16BitFAT_12:
        repnz scasw                                     ; search for null word
        jnz amountFree16BitFAT_16                       ; count is zero -->
        inc word ptr [ _freespace ][ bp ]               ; increment free space
        or cx, cx                                       ; more clusters this sector ?
        jnz amountFree16BitFAT_12                       ; yes -->

amountFree16BitFAT_16:
        mov ax, word ptr [ _entriesPerSector ][ bp ]
        add ax, word ptr [ _currcluster      ][ bp ]
        mov word ptr [ _currcluster  ][ bp ], ax

        mov cx, word ptr [ _maxclusters ][ bp ]
        sub cx, ax                                      ; clusters remaining
        jc amountFree16BitFAT_24                        ; if at end -->
        je amountFree16BitFAT_24                        ; if at end -->

        cmp cx, word ptr [ _entriesPerSector ][ bp ]
        jnc amountFree16BitFAT_20
        mov word ptr [ _entriesPerSector ][ bp ], cx    ; max to read last sector

amountFree16BitFAT_20:
        getarg ax, _drive                               ; get drive
        getdarg es, di, _buffer                         ; no longer scan through ccb
        inc word ptr [ _sector ][ bp ]
        getdarg cx, dx, _sector                         ; get next sector
        call readSelBuffer                              ; else read buffer
        jmp amountFree16BitFAT_08
        
amountFree16BitFAT_24:
        getarg cx, _freespace
        jmp amountFree_Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Allocate Next Free Cluster                                   ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;   dx     recommended start search address                     ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   ax     drive                                                ;
        ;   dx     allocated cluster number                             ;
        ;   cy     if end of cluster chain.                             ;
        ;...............................................................;

AllocateCluster:

        Entry
        def _drive, ax
        def _cluster, dx
        def _maxclusters
        ddef _dpb

        call getAddrDPB                                 ; (es:bx) Device Parameter Block
        jc allocateCluster_NoneFree                     ; if device invalid -->

        stordarg _dpb, es, bx                           ; save _dpb address

        mov dx, word ptr es:[ _dpbMaxClusterNumber ][ bx ]
        mov word ptr [ _maxclusters ][ bp ], dx

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  loop through entire FAT table search for free cluster
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

        getarg dx, _cluster                             ; starting cluster

allocateCluster_12:
        push dx
        mov ax, word ptr [ _drive ][ bp ]               ; get drive
        call getNextCluster                             ; get value at cluster

        mov cx, dx                                      ; cluster value
        pop dx                                          ; cluster number
        or cx, cx                                       ; is cluster free ?
        jz allocateCluster_18                           ; yes -->

        inc dx
        cmp dx, word ptr [ _cluster ][ bp ]             ; back at recommended cluster ?
        jz allocateCluster_NoneFree                     ; end of search -->

        cmp dx, word ptr [ _maxclusters ][ bp ]
        jc allocateCluster_12

        xor dx, dx                                      ; loop back around to start of disk
        jmp allocateCluster_12

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  if no space available on disk
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

allocateCluster_NoneFree:
        stc
        jmp short allocateCluster_Return

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  update allocated buffer
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

allocateCluster_18:
        mov cx, 0FFFFh                                  ; updated value
        call updateClusterValue                         ; update value

        getdarg es, bx, _dpb                            ; get _dpb address
        cmp word ptr es:[ _dpbFreeCount ][ bx ], -1     ; value initialized ?
        jz allocateCluster_Return                       ; no -->
        dec word ptr es:[ _dpbFreeCount ][ bx ]         ; subtract allocated unit
        or dx, dx                                       ; no carry

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  return
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

allocateCluster_Return:
        getarg ax, _drive
        getdarg es, bx, _dpb
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Allocate/Init A Cluster.                                     ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Note:                                                        ;
        ;   This function will allocate a cluster and completely fill   ;
        ;   it with zeroes.  Ideal for directories which must have      ;
        ;   initialized entries.                                        ;
        ;                                                               ;
        ;                                                               ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   ax     drive                                                ;
        ;   dx     cluster                                              ;
        ;   es:di  pointer to a ccb buffer                              ;
        ;...............................................................;

AllocateInitCluster:

        Entry
        def _drive, ax
        def _secPerCluster
        def _cluster
        ddef _sector

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  allocate a free cluster / sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        saveRegisters si, bx

        call getAddrDPB                                 ; point to dpb

        xor dx, dx
        mov cx, 0001
        add cl, byte ptr es:[ _dpbClusterSizeMask ][ bx ]
        mov word ptr [ _secPerCluster ][ bp ], cx

        call AllocateCluster                            ; allocate a cluster
        mov word ptr [ _cluster ][ bp ], dx
        jc AllocateInitCluster_12

        call computeLogSectorNumber                     ; cluster -> sector number
        stordarg _sector, cx, dx                        ; save sector #

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  allocate a buffer/ init
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        call selBuffer                                  ; allocate a buffer
        push di                                         ; pointer to header
        lea di, offset ccbData [ di ]                   ; point to data buffer
        clearMemory sizeCCBData                         ; clear to zeroes
        pop di                                          ; pointer to header

AllocateInitCluster_08:
        call updateChangedCCB                           ; MUST force write updated buffer

        add word ptr es:[ ccbLBN. _low  ][ di ], 0001
        adc word ptr es:[ ccbLBN. _high ][ di ], 0000
        dec word ptr [ _secPerCluster  ][ bp ]          ; continuous write of directory 
        jnz AllocateInitCluster_08

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  return
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
        getdarg cx, dx, _sector
        mov word ptr es:[ ccbLBN. _low  ][ di ], dx
        mov word ptr es:[ ccbLBN. _high ][ di ], cx
        or cx, cx                                       ; no carry.

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲激情成人在线| 色欧美日韩亚洲| 久久99国产精品免费网站| 日韩国产一二三区| 日本免费在线视频不卡一不卡二| 亚洲第一成人在线| 午夜影院久久久| 日韩av网站免费在线| 毛片av一区二区三区| 免费观看在线综合色| 久久狠狠亚洲综合| 精品一区二区免费视频| 狠狠色丁香久久婷婷综| 国产乱码精品一区二区三区av | 一片黄亚洲嫩模| 亚洲最新在线观看| 五月天激情综合| 免费成人你懂的| 激情欧美一区二区三区在线观看| 精品一区二区久久| jizz一区二区| 日本高清不卡在线观看| 欧美区在线观看| 日韩欧美高清在线| 国产精品入口麻豆九色| 亚洲日本va午夜在线影院| 亚洲午夜在线观看视频在线| 人人爽香蕉精品| 国产精一区二区三区| av不卡在线观看| 欧美日产在线观看| 久久综合九色综合欧美98| 日本一区二区三区在线不卡| 亚洲人成伊人成综合网小说| 亚洲成人第一页| 韩国三级电影一区二区| 99在线热播精品免费| 欧美久久高跟鞋激| 精品国一区二区三区| 国产精品国产精品国产专区不蜜| 一区二区三区**美女毛片| 老司机精品视频导航| 丁香啪啪综合成人亚洲小说 | 国产精品久久久久桃色tv| 亚洲美女一区二区三区| 欧美美女一区二区| 精品免费国产二区三区 | 国产伦精一区二区三区| 91蝌蚪国产九色| 日韩一区二区免费在线观看| 中文子幕无线码一区tr| 午夜视频一区二区三区| 国产传媒久久文化传媒| 欧美日免费三级在线| 久久网站最新地址| 亚洲宅男天堂在线观看无病毒| 国产在线精品免费| 欧美视频一区二区在线观看| 久久综合色婷婷| 亚洲国产视频直播| 国产91对白在线观看九色| 欧美日韩你懂得| 国产精品免费aⅴ片在线观看| 日韩主播视频在线| www.亚洲免费av| 精品理论电影在线观看| 亚洲一区二区综合| bt7086福利一区国产| 精品久久人人做人人爰| 亚洲一区在线观看免费| 成人免费视频视频| 欧美va亚洲va在线观看蝴蝶网| 一区二区视频免费在线观看| 成人综合婷婷国产精品久久免费| 欧美一区二区三区视频在线 | 一区二区三区在线观看欧美| 国产尤物一区二区在线| 777精品伊人久久久久大香线蕉| 亚洲欧美中日韩| 国产成人在线观看| 日韩精品中文字幕一区| 五月激情六月综合| 欧美综合亚洲图片综合区| 亚洲欧美激情小说另类| 成人三级在线视频| 国产午夜精品久久久久久免费视 | 国内成人自拍视频| 欧美xfplay| 久久国产精品一区二区| 日韩欧美一区中文| 亚洲成人资源网| 在线亚洲+欧美+日本专区| 精品免费日韩av| 九九视频精品免费| 欧美裸体bbwbbwbbw| 中文字幕一区二区三区四区不卡 | 国产传媒久久文化传媒| 日韩欧美亚洲另类制服综合在线| 亚洲影视在线观看| av成人老司机| 国产精品欧美久久久久无广告| 精品一区二区在线视频| 91精品免费在线| 亚洲图片自拍偷拍| 色偷偷一区二区三区| 亚洲欧美日韩在线不卡| 成人精品小蝌蚪| 久久男人中文字幕资源站| 麻豆精品在线观看| 在线亚洲一区二区| 中文无字幕一区二区三区| 国产原创一区二区三区| 久久久久久久久久久久久女国产乱| 蜜桃av一区二区| 日韩一区二区免费在线观看| 日韩二区三区四区| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 精品久久人人做人人爱| 美女mm1313爽爽久久久蜜臀| 欧美美女一区二区在线观看| 午夜精品久久久久久久99樱桃| 色呦呦国产精品| 亚洲综合一区在线| 在线观看欧美精品| 麻豆精品视频在线观看免费| 日韩欧美色综合网站| 韩国中文字幕2020精品| 精品成人一区二区| 国产在线精品免费| 日韩欧美专区在线| 成人蜜臀av电影| 亚洲欧美偷拍三级| 欧美在线观看你懂的| 亚洲一区二区三区四区在线| 在线影院国内精品| www.欧美.com| 狠狠色丁香婷综合久久| 在线观看91av| 午夜欧美视频在线观看| 欧美精品色一区二区三区| 亚洲v中文字幕| 日韩亚洲国产中文字幕欧美| 精品在线一区二区| 欧美国产日韩一二三区| 99视频热这里只有精品免费| 亚洲精品日日夜夜| 欧美日韩亚洲综合在线 | 亚洲综合视频在线观看| 欧美日韩三级一区| 另类中文字幕网| 久久久影视传媒| av成人免费在线| 午夜一区二区三区视频| 久久蜜桃香蕉精品一区二区三区| 国产成人精品在线看| 亚洲丝袜精品丝袜在线| 在线免费观看不卡av| 男男视频亚洲欧美| 国产精品热久久久久夜色精品三区| 成人伦理片在线| 久久精品国产澳门| 国产精品久久久久久久久图文区 | 婷婷中文字幕一区三区| 日本一区二区电影| 欧美性一区二区| 国产精品亚洲午夜一区二区三区 | 亚洲欧美在线视频观看| 在线播放亚洲一区| 成人午夜私人影院| 日本不卡1234视频| 国产精品福利av| 日韩精品中文字幕在线一区| 91亚洲精品乱码久久久久久蜜桃| 日韩毛片高清在线播放| 久久久影视传媒| 欧美日韩免费一区二区三区 | 欧美日韩精品一区二区| 国产精品18久久久久久久网站| 亚洲综合在线视频| 国产亚洲欧美日韩俺去了| 日本韩国精品在线| av不卡免费电影| 激情综合网最新| 亚洲国产毛片aaaaa无费看| 久久精品夜色噜噜亚洲aⅴ| 色综合久久精品| av资源站一区| 国精产品一区一区三区mba桃花 | 成人亚洲精品久久久久软件| 日产欧产美韩系列久久99| 亚洲精品水蜜桃| 国产日产欧产精品推荐色| 91精品国产综合久久香蕉麻豆| 播五月开心婷婷综合| 免费观看在线色综合| 亚洲国产精品欧美一二99| 亚洲美女在线国产| 亚洲国产精品成人综合| 精品卡一卡二卡三卡四在线| 日韩欧美综合在线|