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

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

?? strncat.asm

?? C標準庫源代碼,能提高對C的理解,不錯的哦
?? ASM
字號:
        page    ,132
        title   strncat - append n chars of string1 to string2
;***
;strncat.asm - append n chars of string to new string
;
;       Copyright (c) 1985-1997, Microsoft Corporation. All rights reserved.
;
;Purpose:
;       defines strncat() - appends n characters of string onto
;       end of other string
;
;*******************************************************************************

        .xlist
        include cruntime.inc
        .list

page
;***
;char *strncat(front, back, count) - append count chars of back onto front
;
;Purpose:
;       Appends at most count characters of the string back onto the
;       end of front, and ALWAYS terminates with a null character.
;       If count is greater than the length of back, the length of back
;       is used instead.  (Unlike strncpy, this routine does not pad out
;       to count characters).
;
;       Algorithm:
;       char *
;       strncat (front, back, count)
;           char *front, *back;
;           unsigned count;
;       {
;           char *start = front;
;
;           while (*front++)
;               ;
;           front--;
;           while (count--)
;               if (!(*front++ = *back++))
;                   return(start);
;           *front = '\0';
;           return(start);
;       }
;
;Entry:
;       char *   front - string to append onto
;       char *   back  - string to append
;       unsigned count - count of max characters to append
;
;Exit:
;       returns a pointer to string appended onto (front).
;
;Uses:  ECX, EDX
;
;Exceptions:
;
;*******************************************************************************

    CODESEG

    public  strncat
strncat proc
;   front:ptr byte,
;   back:ptr byte,
;   count:IWORD

        .FPO    ( 0, 3, 0, 0, 0, 0 )

        mov     ecx,[esp + 0ch]     ; ecx = count
        push    edi                 ; preserve edi
        test    ecx,ecx
        jz      finish              ; leave if count is zero

        mov     edi,[esp + 8]       ; edi -> front string
        push    esi                 ; preserve esi
        test    edi,3               ; is string aligned on dword (4 bytes)
        push    ebx                 ; preserve ebx
        je      short find_end_of_front_string_loop

        ; simple byte loop until string is aligned

front_misaligned:
        mov     al,byte ptr [edi]
        inc     edi
        test    al,al
        je      short start_byte_3
        test    edi,3
        jne     short front_misaligned

find_end_of_front_string_loop:
        mov     eax,dword ptr [edi] ; read dword (4 bytes)
        mov     edx,7efefeffh
        add     edx,eax
        xor     eax,-1
        xor     eax,edx
        add     edi,4
        test    eax,81010100h
        je      short find_end_of_front_string_loop

; found zero byte in the loop
        mov     eax,[edi - 4]
        test    al,al               ; is it byte 0
        je      short start_byte_0
        test    ah,ah               ; is it byte 1
        je      short start_byte_1
        test    eax,00ff0000h       ; is it byte 2
        je      short start_byte_2
        test    eax,0ff000000h      ; is it byte 3
        jne     short find_end_of_front_string_loop
                                    ; taken if bits 24-30 are clear and bit
                                    ; 31 is set
start_byte_3:
        dec     edi
        jmp     short copy_start
start_byte_2:
        sub     edi,2
        jmp     short copy_start
start_byte_1:
        sub     edi,3
        jmp     short copy_start
start_byte_0:
        sub     edi,4

; edi now points to the end of front string.

copy_start:
        mov     esi,[esp + 14h]     ; esi -> back string
        test    esi,3               ; is back string is dword aligned?
        jnz     back_misaligned

        mov     ebx,ecx             ; store count for tail loop

        shr     ecx,2
        jnz     short main_loop_entrance
        jmp     short tail_loop_start   ; 0 < counter < 4

; simple byte loop until back string is aligned

back_misaligned:
        mov     dl,byte ptr [esi]
        inc     esi
        test    dl,dl
        je      short byte_0
        mov     [edi],dl
        inc     edi
        dec     ecx
        jz      empty_counter
        test    esi,3
        jne     short back_misaligned
        mov     ebx,ecx             ; store count for tail loop
        shr     ecx,2               ; convert ecx to dword count
        jnz     short main_loop_entrance

tail_loop_start:
        mov     ecx,ebx
        and     ecx,3               ; ecx = count of leftover bytes after the
                                    ; dwords have been concatenated
        jz      empty_counter

tail_loop:
        mov     dl,byte ptr [esi]
        inc     esi
        mov     [edi],dl
        inc     edi
        test    dl,dl
        je      short finish1       ; '\0' was already copied
        dec     ecx
        jnz     tail_loop

empty_counter:
        mov     [edi],cl            ; cl=0;
finish1:
        pop     ebx
        pop     esi
finish:
        mov     eax,[esp + 8]       ; return in eax pointer to front string
        pop     edi
        ret                         ; _cdecl return


byte_0:
        mov     [edi],dl
        mov     eax,[esp + 10h]     ; return in eax pointer to front string
        pop     ebx
        pop     esi
        pop     edi
        ret                         ; _cdecl return


main_loop:                          ; edx contains first dword of back string
        mov     [edi],edx           ; store one more dword
        add     edi,4               ; kick pointer to front string

        dec     ecx
        jz      tail_loop_start
main_loop_entrance:
        mov     edx,7efefeffh
        mov     eax,dword ptr [esi] ; read 4 bytes

        add     edx,eax
        xor     eax,-1

        xor     eax,edx
        mov     edx,[esi]           ; it's in cache now

        add     esi,4               ; kick pointer to back string
        test    eax,81010100h

        je      short main_loop

; may be found zero byte in the loop
        test    dl,dl               ; is it byte 0
        je      short byte_0
        test    dh,dh               ; is it byte 1
        je      short byte_1
        test    edx,00ff0000h       ; is it byte 2
        je      short byte_2
        test    edx,0ff000000h      ; is it byte 3
        jne short main_loop         ; taken if bits 24-30 are clear and bit
                                    ; 31 is set
byte_3:
        mov     [edi],edx
        mov     eax,[esp + 10h]     ; return in eax pointer to front string
        pop     ebx
        pop     esi
        pop     edi
        ret                         ; _cdecl return

byte_2:
        mov     [edi],dx
        xor     edx,edx
        mov     eax,[esp + 10h]     ; return in eax pointer to front string
        mov     [edi + 2],dl
        pop     ebx
        pop     esi
        pop     edi
        ret                         ; _cdecl return

byte_1:
        mov     [edi],dx
        mov     eax,[esp + 10h]     ; return in eax pointer to front string
        pop     ebx
        pop     esi
        pop     edi
        ret                         ; _cdecl return

strncat endp

        end

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
久久www免费人成看片高清| 欧美一区二区三区在线视频| 欧美一级国产精品| 日av在线不卡| 国产日本亚洲高清| 99久久综合狠狠综合久久| 最新中文字幕一区二区三区| 在线免费观看成人短视频| 亚洲国产欧美在线| 日韩一区二区电影网| 91精品午夜视频| 国产精品资源网站| 亚洲精品中文在线影院| 3d动漫精品啪啪1区2区免费 | 精东粉嫩av免费一区二区三区 | 国产99精品视频| 中文字幕一区免费在线观看| 国产精品的网站| 日韩一区二区高清| 久久久精品国产免大香伊| 成人免费的视频| 久久99精品视频| 风间由美一区二区av101| 成人黄色国产精品网站大全在线免费观看| 午夜精品国产更新| 国产精品福利av| 午夜视频一区二区三区| 美女网站色91| 久热成人在线视频| 国产成人自拍高清视频在线免费播放| 天天做天天摸天天爽国产一区| 日韩av一区二区三区四区| 一区二区三区资源| 中文字幕一区二区三区四区不卡| 依依成人精品视频| 欧美aaa在线| 成人黄色在线网站| 91精品国产免费| 国产精品免费免费| 国产精品久久免费看| 丝袜美腿亚洲综合| 一区二区三区四区不卡在线 | 久久综合精品国产一区二区三区| 在线观看91精品国产入口| 91精品国产色综合久久ai换脸| 久久免费美女视频| 亚洲丶国产丶欧美一区二区三区| 亚洲欧美aⅴ...| **欧美大码日韩| 激情综合五月天| 欧美曰成人黄网| 成人h动漫精品| 91精品久久久久久久99蜜桃| 欧美极品少妇xxxxⅹ高跟鞋| 国产日产精品一区| 久久精品国产久精国产爱| 色视频一区二区| 欧美影视一区二区三区| 中文字幕一区日韩精品欧美| 麻豆精品在线播放| 欧美三级韩国三级日本一级| 538在线一区二区精品国产| 国产精品每日更新| 国产麻豆视频一区二区| 成人福利在线看| 久久综合丝袜日本网| 日韩高清电影一区| 欧美日韩国产免费一区二区| 91精品免费在线| 亚洲夂夂婷婷色拍ww47| 免费观看久久久4p| 欧美体内she精高潮| 亚洲欧洲无码一区二区三区| 国产乱色国产精品免费视频| 精品国产自在久精品国产| 国产日产欧美精品一区二区三区| 麻豆国产精品官网| 4438成人网| 国产在线视频精品一区| 91精彩视频在线观看| 日韩午夜小视频| 奇米精品一区二区三区在线观看一| 在线观看日韩av先锋影音电影院| 亚洲裸体xxx| 欧美在线视频全部完| 午夜av电影一区| 欧美一区二区在线播放| 美国毛片一区二区三区| 久久一区二区三区四区| 国产一区中文字幕| 国产精品视频在线看| 丁香天五香天堂综合| 亚洲人成小说网站色在线 | wwwwxxxxx欧美| 国产一区二区精品久久91| 国产精品久久久久一区| 色综合久久九月婷婷色综合| 亚洲国产精品久久久久婷婷884| 欧美亚洲日本国产| 美国欧美日韩国产在线播放| 国产亚洲1区2区3区| 亚洲成a人片在线不卡一二三区| 91精品国产一区二区三区| 久久97超碰国产精品超碰| 国产免费成人在线视频| 91极品视觉盛宴| 蜜臀av亚洲一区中文字幕| 国产人伦精品一区二区| 91丨九色丨国产丨porny| 久久久久国产精品免费免费搜索 | 亚洲视频一二三| 国产成人8x视频一区二区| 综合自拍亚洲综合图不卡区| 欧美色图激情小说| 国产一区二区91| 亚洲综合一区二区| 久久久久国产精品免费免费搜索| 色一情一伦一子一伦一区| 久久精品国产亚洲5555| 亚洲精品大片www| 欧美不卡一区二区三区四区| 免费高清在线一区| 一区二区三区在线观看国产| 日韩欧美激情一区| 精品系列免费在线观看| 亚洲另类在线制服丝袜| 亚洲精品一区二区三区蜜桃下载| 99国产精品久久久久| 亚洲色图制服诱惑| 精品国产亚洲一区二区三区在线观看| 成人午夜碰碰视频| 精品一区精品二区高清| 性做久久久久久久久| 国产精品国产成人国产三级 | 成人精品高清在线| 精品一区二区三区免费播放| 亚洲一二三四在线观看| 日本一区二区三区免费乱视频| 日韩三级高清在线| 欧美日韩一区久久| 一本久道久久综合中文字幕| 国产激情一区二区三区四区| 麻豆精品蜜桃视频网站| 视频在线观看91| 亚洲一区二区三区三| 最新中文字幕一区二区三区| 中文字幕不卡在线| 国产欧美精品区一区二区三区| 日韩一区二区中文字幕| 欧美精品123区| 国产精品一区二区无线| 久久精品国产亚洲a| 蜜桃精品视频在线| 日韩中文字幕麻豆| 天堂av在线一区| 日本午夜精品视频在线观看| 亚洲成人av一区二区三区| 午夜a成v人精品| 天堂一区二区在线| 麻豆国产91在线播放| 国产最新精品免费| 国产白丝精品91爽爽久久| 福利视频网站一区二区三区| 国产一区二区三区精品视频| 国产美女视频91| 粉嫩av一区二区三区| 99久久精品免费看| 99久久婷婷国产综合精品| 91污片在线观看| 欧美综合在线视频| 67194成人在线观看| 日韩欧美中文字幕一区| 久久综合色鬼综合色| 国产网红主播福利一区二区| 国产色婷婷亚洲99精品小说| 国产精品午夜免费| 亚洲精品午夜久久久| 亚洲第一会所有码转帖| 久久国产精品无码网站| 国产成人在线观看免费网站| 92精品国产成人观看免费| 欧美视频中文一区二区三区在线观看| 欧美狂野另类xxxxoooo| 久久日韩精品一区二区五区| 亚洲欧洲成人精品av97| 午夜影院久久久| 国产精品亚洲第一区在线暖暖韩国 | 亚洲综合在线电影| 美女脱光内衣内裤视频久久影院| 国产精品99久| 一本一道久久a久久精品综合蜜臀| 欧美视频一区在线| 久久色在线视频| 一区二区三区免费| 国产精品一区三区| 欧美手机在线视频| 国产精品视频一二| 日韩黄色免费电影| 一本大道久久精品懂色aⅴ| 欧美α欧美αv大片|