• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            newplan

            阿基米德在洗澡時發現浮力原理,高興得來不及穿上褲子,跑到街上大喊:Eureka(我找到了)。
            posts - 39, comments - 26, trackbacks - 0, articles - 4
              C++博客 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理
            stack   segment para    stack   'stack'
                    db      256     dup(0)
            stack   ends
            ;
            data    segment    para    
            public    'data'
            buffer    db    16h dup(0)
            bufpt1    dw    
            0
            bufpt2    dw    
            0
            kbflag    db    
            0

            prompt    db    
            '---kbd_io program begin ---',13,10,'$'
            scantab    db    0,0,'1234567890-=',0,0
                db    'qwertyuiop[]',0dh,0
                db    'asdfghjkl;',0,0,0,0
                db    'zxcvbnm,./',0,0,0
                db    ' ',0,0,0,0,0,0,0,0,0,0,0,0,0
                db    '789-456+1230.'
            even
            shiftab    db    
            0,0,'!@#$%^&*()_+',0,0
                db    'QWERTYUIOP{}',0dh,0
                db    'ASDFGHJKL:"',0,0,0
                db    'ZXCVBNM<>?',0,0,0
                db    ' ',26 dup(0)
            even
            oldcs9    dw    ?
            oldip9    dw    ?
            data    ends
            ;
            code    segment    para    
            public    'code'
            start    proc    far
                assume    cs:code,ds:data
                push    ds
                mov    ax,
            0
                push    ax
                mov    ax,data
                mov    ds,ax

                cli
                mov    al,
            09
                mov    ah,35h
                 
            int    21h
                mov    oldcs9,es
                mov    oldip9,bx         ;保存中斷
                
                push    ds
                mov    dx,offset kbint
                mov    ax,seg    kbint
                mov    ds,ax
                mov    al,
            09
                mov    ah,25h
                
            int    21h
                pop    ds                ;設置中斷

                in    al,21h
                
            and     al,0fdh
                out    21h,al

                    mov     dx,offset prompt
                mov    ah,
            09
                
            int     21h
                sti
            forever:
                
            call    kbget
                test    kbflag,80h
                jnz    endint
                push    ax
                
            call    dispchar
                pop    ax
                cmp    al,0dh
                jnz    forever
                mov    al,0ah
                
            call    dispchar
                jmp    forever
            endint:
                mov    dx,oldip9
                mov    ax,oldcs9
                mov    ds,ax
                mov    al,09h
                mov    ah,25h
                
            int    21h

                ret
            start    endp
            kbget    proc    near
                push    bx
                cli
                mov    bx,bufpt1
                cmp    bx,bufpt2
                jnz     kbget2
                cmp    kbflag,80h
                jz    kbget3
                sti
                pop    bx
                jmp    kbget
            kbget2:
                mov    al,[buffer
            +bx]
                inc    bx
                cmp    bx,
            16
                jc    kbget3
                mov    bx,
            0
            kbget3:
                mov    bufpt1,bx
                pop    bx
                ret
            kbget    endp
            ;
            ------------------------------------------------------------
            kbint    proc     far
                push    bx
                push    ax
            ;
                in    al,60h
                push    ax
                in    al,61h
                
            or    al,80h
                out     61h,al
                
            and    al,7fh
                out    61h,al
            ;
                pop    ax
                test    al,80h
                jnz    kbint5
                    cmp     al,
            42
                     jz     left_shif
                    cmp     al,
            54
                     jz     right_shif
                    test    kbflag,03h    ;判斷shif鍵是否按住            
                    jnz     press_shif
                    mov     bx,offset scantab
                xlat    scantab
                cmp    al,
            0
                jnz    kbint4
                mov    kbflag,80h
                jmp    kbint2

            left_shif:  
                    
            or    kbflag,01h
                    jmp   kbint2
            right_shif:
                    
            or    kbflag,02h
                    jmp   kbint2

            press_shif:
                        mov     bx,offset shiftab
                    xlat    shiftab
                    cmp        al,
            0
                    jnz        kbint4
                    mov        kbflag,80h
                    jmp        kbint2
                    
            kbint4:
                mov    bx,bufpt2
                mov    [buffer
            +bx],al
                inc     bx
                cmp    bx,
            16
                jc    kbint3
                mov    bx,
            0
            kbint3:
                cmp    bx,bufpt1
                jz    kbint2
                mov    bufpt2,bx
            kbint5: 
                    cmp     al,0aah
                jz    kbint1
                cmp    al,0b6h
                jz    kbint1
                jmp    kbint2
            kbint1: mov     kbflag,
            0
            kbint2:
                cli
                mov    al,20h
                out    20h,al
                pop    ax
                pop    bx
                sti    
                iret
            kbint    endp
            ;
            dispchar    proc    near
                push    bx
                mov    bx,
            0
                mov    ah,0eh
                
            int    10h
                pop    bx
                ret
            dispchar    endp
            ;
            code    ends
                
            end    start

            国产精品美女久久久久AV福利| 狠狠人妻久久久久久综合| 久久精品国产久精国产思思| 久久久国产乱子伦精品作者| 99久久亚洲综合精品成人| 亚洲乱码日产精品a级毛片久久| 蜜臀av性久久久久蜜臀aⅴ | 日本久久久久亚洲中字幕| 久久青青草原综合伊人| 日韩人妻无码一区二区三区久久99| 亚洲国产精品无码久久| 久久青青草原亚洲av无码| 久久精品人人做人人爽电影蜜月| 久久久久久久久久久免费精品| 久久亚洲精品无码AV红樱桃| 国产一区二区久久久| 伊人久久大香线焦综合四虎| 欧洲成人午夜精品无码区久久| 久久国产精品国语对白| 精品一区二区久久久久久久网站| 精品无码久久久久国产动漫3d | 热re99久久精品国99热| 伊人久久亚洲综合影院| 情人伊人久久综合亚洲| 日韩精品久久无码中文字幕| 色妞色综合久久夜夜| 亚洲国产成人精品无码久久久久久综合 | 狠狠色综合久久久久尤物| 人妻精品久久久久中文字幕69| 国产免费久久精品99re丫y| 久久久久亚洲精品中文字幕| 91久久精品视频| 亚洲欧美精品伊人久久| 好久久免费视频高清| 久久国产成人精品麻豆| 国产精品久久99| 亚洲精品国产成人99久久| 99久久精品免费看国产| 91精品无码久久久久久五月天| 久久91精品国产91久久麻豆| 久久91精品国产91久久户|