• <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| 久久国产精品99精品国产987| 国产午夜久久影院| 久久免费99精品国产自在现线 | 久久青青草视频| 精品久久久一二三区| 久久亚洲国产成人影院| 久久永久免费人妻精品下载| 久久精品国产亚洲一区二区| 久久综合色区| 久久久无码精品亚洲日韩蜜臀浪潮| 久久综合欧美成人| 久久99热这里只频精品6| 97精品伊人久久大香线蕉app| 色综合合久久天天给综看| 72种姿势欧美久久久久大黄蕉| 久久黄视频| 日韩亚洲欧美久久久www综合网 | 久久精品三级视频| 亚洲AV无码久久精品蜜桃| 久久九色综合九色99伊人| 久久超碰97人人做人人爱| 伊人精品久久久久7777| 国产成人久久精品麻豆一区| 久久精品亚洲精品国产色婷| 国产69精品久久久久观看软件| 精品人妻伦一二三区久久| 91精品国产综合久久久久久| 97香蕉久久夜色精品国产| 久久性精品| 久久无码AV中文出轨人妻| 国产巨作麻豆欧美亚洲综合久久 | 东京热TOKYO综合久久精品| 久久婷婷国产剧情内射白浆| 伊人久久一区二区三区无码| 日韩欧美亚洲综合久久影院Ds| 精品人妻伦一二三区久久|