• <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

            国产成人无码精品久久久久免费| 国产精品99久久久久久宅男小说| 久久精品国产亚洲av影院| 乱亲女H秽乱长久久久| 久久久久久久尹人综合网亚洲 | 2021国产精品久久精品| 成人午夜精品无码区久久| 国产产无码乱码精品久久鸭| 久久久久国产| 韩国三级大全久久网站| 无码任你躁久久久久久| 91精品国产91久久久久福利| 一级做a爰片久久毛片毛片 | 久久久久99精品成人片牛牛影视 | 欧美无乱码久久久免费午夜一区二区三区中文字幕 | 久久精品国产福利国产琪琪| 日韩av无码久久精品免费| 久久久久国产精品麻豆AR影院| 亚洲国产另类久久久精品黑人| 国产精品日韩欧美久久综合| 精品国产乱码久久久久久人妻| 久久久久久国产精品无码下载| av国内精品久久久久影院| 99久久国产精品免费一区二区| 品成人欧美大片久久国产欧美...| 伊人色综合久久天天人手人婷| 久久人妻少妇嫩草AV蜜桃| 亚洲一区二区三区日本久久九| 无码国内精品久久人妻蜜桃| 热久久最新网站获取| 久久综合久久伊人| 亚洲国产一成久久精品国产成人综合 | 久久这里的只有是精品23| 久久久久99精品成人片三人毛片| 91久久精品电影| 日本久久久久久中文字幕| 久久精品人人做人人爽电影| 狠狠色丁香久久综合五月| 国产日产久久高清欧美一区| 久久精品免费观看| 久久亚洲国产成人影院网站|