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

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

?? rxdosfat.asm

?? dos source
?? ASM
?? 第 1 頁 / 共 4 頁
字號:

        getarg cx, _cluster                             ; get cluster value
        getarg dx, _value                               ; get value to update
        and dx, 0FFFh

        pop bx                                          ; word offset into FAT table
        cmp bx, word ptr [ _sectorsize ][ bp ]          ; at sector size -1 boundry ?
        jnz updateClusterValue_16                       ; no, ok to return as is -->

        call _updateCrossSectorEntry
      ; call updateAllChangedCCBBuffers                 ; optimized when commented out.

        clc                                             ; if no carry
        jmp short updateClusterValue_Return

      ; see if odd or even cluster

updateClusterValue_16:
        shr cx, 1                                       ; even or odd cluster
        jnc updateClusterValue_20                       ; even, take value -->

        shl dx, 1
        shl dx, 1
        shl dx, 1
        shl dx, 1                                       ; shift value

        mov cx, word ptr es:[ ccbData ][ bx + di ]      ; get current value
        and word ptr es:[ ccbData ][ bx + di ], 000Fh   ; clear area.
        
        shr cx, 1
        shr cx, 1
        shr cx, 1
        shr cx, 1                                       ; old value shifted correctly
        jmp short updateClusterValue_22

updateClusterValue_20:
        mov cx, word ptr es:[ ccbData ][ bx + di ]      ; get current value
        and word ptr es:[ ccbData ][ bx + di ], 0F000h  ; clear area.

updateClusterValue_22:
        or word ptr es:[ ccbData ][ bx + di ], dx       ; update FAT word

updateClusterValue_26:
        and cx, 0FFFh                                   ; mask off unwanted bits
        mov ax, cx
        and ax, 0FF8h                                   ; FAT value, 12 bit entries.
        cmp ax, 0FF8h                                   ; end of chain ?
        jnz updateClusterValue_UpdatedRet               ; no -->

        mov cx, -1                                      ; if end, set end value
        jmp short updateClusterValue_UpdatedRet

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  16 bit FAT entries
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

updateClusterValue_16Bits:
        mov cx, word ptr es:[ _dpbBytesPerSector ][ bx ]
        shr cx, 1
        div cx                                          ; FAT sector/ Offset

      ; ax will contain FAT sector
      ; dx will contain byte offset into FAT sector

        add dx, dx                                      ; make word offset
        push dx

        xor cx, cx
        mov dx, word ptr es:[ _dpbFirstFAT ][ bx ]      ; where is first FAT table ?
        add dx, ax                                      ; add offset required
        mov ax, word ptr [ _drive ][ bp ]               ; get drive
        call readBuffer                                 ; read FAT Table
        or byte ptr es:[ ccbStatus ][ di ], ( ccb_isFAT )

        pop bx                                          ; word offset into FAT table
        getarg cx, _value                               ; update value
        xchg cx, word ptr es:[ ccbData ][ bx + di ]     ; update value

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  update
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

updateClusterValue_UpdatedRet:
        call CCBChanged
        or cx, cx

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

updateClusterValue_Return:
        restoreRegisters ax, bx, dx, si, di, es
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Update Cross Sector Entry                                    ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   es:di  points to current ccb                                ;
        ;   bx     offset into buffer                                   ;
        ;   dx     value to update                                      ;
        ;   cx     cluster number                                       ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   cx     value at cluster (value before update)               ;
        ;...............................................................;

_updateCrossSectorEntry:

        Entry
        def  _sectorflag, cx
        def  _updatevalue, dx
        def  _returnvalue

        mov ax, word ptr es:[ ccbData ][ bx + di ]      ; get value at current sector
        storarg _returnvalue, ax

        shr cx, 1                                       ; even or odd cluster
        jnc _updateCrossSector_20                       ; even, take value -->

        shl dx, 1
        shl dx, 1
        shl dx, 1
        shl dx, 1
        and dx, 0FFF0h
        storarg _updatevalue, dx
        and byte ptr es:[ ccbData ][ bx + di ], 0Fh     ; init area
        or byte ptr es:[ ccbData ][ bx + di ], dl       ; set high value (just the single nibble)
        jmp short _updateCrossSector_22                 ; 

_updateCrossSector_20:
        mov byte ptr es:[ ccbData ][ bx + di ], dl      ; update low order FAT word

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  update next sector
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_updateCrossSector_22:
        call CCBChanged

        xor ah, ah
        mov al, byte ptr es:[ ccbDrive       ][ di ]
        mov cx, word ptr es:[ ccbLBN. _high  ][ di ]
        mov dx, word ptr es:[ ccbLBN. _low   ][ di ]
        inc dx
        adc cx, 0                                       ; 32 bit add
        call ReadBuffer                                 ; read next sector
        or byte ptr es:[ ccbStatus ][ di ], ( ccb_isFAT )

        getarg dx, _updatevalue
        mov ax, word ptr es:[ ccbData ][ di ]           ; get value at current sector
        test word ptr [ _sectorflag ][ bp ], 1          ; even or odd cluster
        jz _updateCrossSector_30                        ; even, take value -->
        mov byte ptr es:[ ccbData ][ di ], dh           ; set low order value

        xchg ah, al
        mov al, byte ptr [ _returnvalue ][ bp ]
        shr ax, 1
        shr ax, 1
        shr ax, 1
        shr ax, 1                                       ; return value in ax
        jmp short _updateCrossSector_32                 ; 

_updateCrossSector_30:
        and byte ptr es:[ ccbData ][ di ], 0F0h         ; clear high order
        or byte ptr es:[ ccbData ][ di ], dh            ; update high order FAT word

        xchg ah, al        
        mov al, byte ptr [ _returnvalue ][ bp ]

;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
;  rebuild original value
;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

_updateCrossSector_32:
        push ax
        call CCBChanged

        pop cx
        and cx, 0FFFh
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Get 12Bit FAT Table Value                                    ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;   dx     current cluster                                      ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   dx     value at cluster (next cluster)                      ;
        ;   zr     if end of cluster chain.                             ;
        ;...............................................................;

_get_12Bit_ClusterValue:
        Entry
        def  _drive, ax
        def  _cluster, dx
        def  _sectorsize
        ddef _sector
        ddef _dpb, es, bx

        mov ax, dx
        add ax, ax
        add ax, dx                                      ; nibble address

        xor dx, dx
        mov cx, word ptr es:[ _dpbBytesPerSector ][ bx ]
        mov word ptr [ _sectorsize ][ bp ], cx
        dec word ptr [ _sectorsize ][ bp ]
        shl cx, 1                                       ; nibbles / sector
        div cx                                          ; sector to read

      ; ax will contain sector
      ; dx will contain nibble offset

        shr dx, 1                                       ; word offset
        push dx                                         ;

        xor cx, cx                                      ; 32 bit address
        mov dx, ax
        add dx, word ptr es:[ _dpbFirstFAT ][ bx ]      ; where is first FAT table ?
        stordarg _sector, cx, dx                        ; 32 bit sector address

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

        pop bx                                          ; word offset into FAT table
        mov dx, word ptr es:[ ccbData ][ bx + di ]      ; get FAT word

        cmp bx, word ptr [ _sectorsize ][ bp ]          ; at sector size -1 boundry ?
        jnz _get_12Bit_ClusterValue_12                  ; no, ok to return as is -->

        push dx                                         ; else save what we have
        getdarg cx, dx, _sector                         ; read next cluster sector
        add dx, 0001                                    ; incr by one
        adc cx, 0000

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

        pop dx
        mov dh, byte ptr es:[ ccbData ][ di ]           ; get FAT word

_get_12Bit_ClusterValue_12:
        test word ptr [ _cluster ][ bp ], 1             ; is cluster Odd ?
        jz _get_12Bit_ClusterValue_14                   ; no, just take value -->

        mov cl, 4
        shr dx, cl

_get_12Bit_ClusterValue_14:
        and dx, 0FFFh                                   ; 12 bit mask
        mov ax, dx
        and ax, 00FF8h                                  ; FAT value, 12 bit entries.
        cmp ax, 00FF8h                                  ; end of chain ?
        jnz _get_12Bit_ClusterValue_16                  ; no -->
        mov dx, -1                                      ; if end, set end value

_get_12Bit_ClusterValue_16:
        Return

        ;''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''';
        ;  Delete Cluster Chain                                         ;
        ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -;
        ;                                                               ;
        ;  Removes cluster addressed in dx from *both* FAT tables and   ;
        ;  returns pointer to next cluster ( or FFFF).                  ;
        ;                                                               ;
        ;  Input:                                                       ;
        ;   ax     drive                                                ;
        ;   dx     cluster                                              ;
        ;                                                               ;
        ;  Output:                                                      ;
        ;   dx     next cluster                                         ;
        ;   zr     if end of cluster chain.                             ;
        ;...............................................................;

ReleaseClusterChain:

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

        or dx, dx                                       ; cluster valid ?
        jz releaseClusterChain_16                       ; no, exit -->
        cmp dx, word ptr es:[ _dpbMaxClusterNumber ][ bx ]
        jnc releaseClusterChain_16                      ; no, exit -->

releaseClusterChain_08:
        cmp word ptr es:[ _dpbFreeCount ][ bx ], -1     ; value initialized ?
        jz releaseClusterChain_12                       ; no -->
        inc word ptr es:[ _dpbFreeCount ][ bx ]         ; increment allocated unit

releaseClusterChain_12:
        xor cx, cx
        call updateClusterValue                         ; release cluster at ax:dx
        jz releaseClusterChain_16                       ; no more -->

        mov dx, cx                                      ; next cluster
        cmp dx, -1                                      ; end of chain ?

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品剧情在线亚洲| 日韩美女精品在线| 中文字幕在线不卡一区二区三区| 亚洲久草在线视频| 黄网站免费久久| 在线观看一区不卡| 欧美国产禁国产网站cc| 日韩高清一级片| 91极品美女在线| 中文字幕免费一区| 精品伊人久久久久7777人| 色噜噜久久综合| 国产精品少妇自拍| 精品一区二区三区免费观看 | 国产精品久久久久久福利一牛影视| 亚洲成人av在线电影| www.在线成人| 国产午夜一区二区三区| 麻豆国产欧美一区二区三区| 欧美视频日韩视频在线观看| 亚洲女与黑人做爰| 91视频xxxx| 亚洲欧洲精品一区二区三区 | 国产欧美日韩另类一区| 久草热8精品视频在线观看| 欧美日韩国产首页| 亚洲主播在线播放| 在线看不卡av| 亚洲国产精品久久艾草纯爱| 色综合久久久久综合| 国产精品欧美久久久久无广告| 狠狠色狠狠色综合系列| 欧美成人一区二区三区| 秋霞电影网一区二区| 日韩一区二区在线免费观看| 午夜精品久久久久久久久久久 | 一二三区精品福利视频| 91农村精品一区二区在线| 亚洲欧美综合色| 不卡欧美aaaaa| 国产精品久久久久久久久久久免费看| 国产精品综合二区| 国产区在线观看成人精品| 国产**成人网毛片九色| 国产女同性恋一区二区| 成人晚上爱看视频| 最好看的中文字幕久久| 欧美综合色免费| 天涯成人国产亚洲精品一区av| 91精品婷婷国产综合久久性色| 日韩高清不卡在线| 久久久99精品免费观看不卡| 国产成人自拍网| 亚洲男人的天堂在线aⅴ视频| 在线亚洲免费视频| 免费在线观看成人| 国产日韩欧美精品在线| 91麻豆蜜桃一区二区三区| 亚洲一二三区在线观看| 日韩欧美高清在线| 成人黄动漫网站免费app| 亚洲另类在线制服丝袜| 555www色欧美视频| 国产一区二区三区综合| 亚洲天堂成人网| 欧美日本在线一区| 国产伦精品一区二区三区视频青涩 | 成av人片一区二区| 亚洲精品视频在线观看免费| 在线成人小视频| 国产高清在线精品| 一区二区在线观看视频| 日韩美女在线视频| 国产乱人伦偷精品视频免下载| 中文在线免费一区三区高中清不卡| 在线观看91视频| 国产综合色产在线精品| 一区二区在线观看免费视频播放| 欧美tickling网站挠脚心| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 国产日韩亚洲欧美综合| 在线视频一区二区三区| 国产寡妇亲子伦一区二区| 亚洲mv在线观看| 国产日韩欧美精品一区| 欧美一级在线视频| 91蝌蚪porny| 国产一区二区成人久久免费影院| 国产欧美综合在线| 欧美三级中文字| 97久久精品人人做人人爽50路| 美女mm1313爽爽久久久蜜臀| 亚洲狠狠丁香婷婷综合久久久| 26uuu亚洲综合色| 69堂精品视频| 在线观看日韩一区| 成人app下载| 国产精品一区二区在线观看不卡 | 中文字幕在线不卡| 亚洲精品一区二区三区福利 | 99精品欧美一区二区三区综合在线| 麻豆精品精品国产自在97香蕉| 亚洲综合精品自拍| 亚洲你懂的在线视频| 中文字幕不卡的av| 久久精品一区二区三区不卡牛牛| 欧美电影在哪看比较好| 色婷婷狠狠综合| 91在线一区二区| 成+人+亚洲+综合天堂| 成人美女视频在线观看18| 国产精品1024| 国产一区二区三区黄视频 | 久久精品一区二区三区av| 欧美电影免费观看完整版| 欧美日韩国产一级二级| 欧美日韩你懂的| 欧美天堂一区二区三区| 日本福利一区二区| 欧美专区日韩专区| 欧美三级午夜理伦三级中视频| 日本韩国一区二区三区视频| 在线免费不卡电影| 欧美日韩一区二区三区高清| 欧美这里有精品| 欧美视频你懂的| 欧美丰满少妇xxxxx高潮对白| 欧美一区二区在线视频| 91精品国产一区二区三区| 日韩一区二区在线看| 欧美精品一区二区不卡| 久久久久久久精| 国产精品无圣光一区二区| 中文字幕一区二区三区四区不卡 | 99久久伊人网影院| 97久久久精品综合88久久| 欧美在线观看一二区| 91麻豆精品国产自产在线观看一区| 欧美日韩成人综合天天影院| 精品少妇一区二区三区日产乱码| 久久夜色精品国产噜噜av| 国产日韩欧美精品综合| 亚洲欧洲中文日韩久久av乱码| 亚洲国产裸拍裸体视频在线观看乱了| 亚洲国产精品视频| 韩国精品在线观看| 91影院在线观看| 91精品国产91久久久久久一区二区 | 国产目拍亚洲精品99久久精品| 国产亚洲一区字幕| 亚洲男人天堂av网| 日韩精品亚洲一区二区三区免费| 美女一区二区在线观看| 懂色av中文字幕一区二区三区| 在线中文字幕不卡| 欧美大白屁股肥臀xxxxxx| 国产精品嫩草久久久久| 日韩精品福利网| 成人午夜大片免费观看| 欧洲一区二区三区在线| 久久综合久久综合久久| 亚洲精品综合在线| 精品一区二区免费视频| 色天使色偷偷av一区二区| 欧美一级片在线| 成人免费在线播放视频| 日本在线不卡视频一二三区| 成人综合在线观看| 91精品国产综合久久精品性色 | 欧美电影一区二区| 国产精品免费网站在线观看| 日本美女一区二区三区视频| 成人高清伦理免费影院在线观看| 欧美疯狂性受xxxxx喷水图片| 国产精品久久久久一区二区三区| 视频一区视频二区中文| 一道本成人在线| 久久精品免视看| 免费看欧美女人艹b| 91污片在线观看| 久久久久久99久久久精品网站| 亚洲综合成人在线| 99视频一区二区三区| 久久久影视传媒| 美腿丝袜亚洲一区| 欧美日韩一级黄| 亚洲精品视频一区二区| 成人手机在线视频| 精品久久一区二区三区| 日本女人一区二区三区| 欧美日韩免费电影| 亚洲一区二区三区中文字幕| 成人18视频在线播放| 精品播放一区二区| 老司机一区二区| 欧美va亚洲va香蕉在线| 蜜桃精品在线观看| 欧美一级欧美一级在线播放| 日韩vs国产vs欧美| 91精品国产综合久久福利|