• <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久久无码一区人妻| 2020久久精品亚洲热综合一本| 久久伊人精品一区二区三区 | 精品久久久久久国产91| www.久久热.com| 伊人热热久久原色播放www| 久久久一本精品99久久精品66| 久久精品国产久精国产| 久久伊人五月天论坛| 99国产欧美精品久久久蜜芽| 久久国产成人午夜aⅴ影院| 无码人妻久久一区二区三区免费丨| 久久精品国产99国产精偷| 亚洲伊人久久综合中文成人网| 国产情侣久久久久aⅴ免费| 一本综合久久国产二区| 91精品国产91热久久久久福利| 国产A三级久久精品| 久久久青草青青国产亚洲免观| 亚洲精品乱码久久久久66| 久久久久国产视频电影| 久久91精品国产91久久户| 国产亚洲精品久久久久秋霞| 香蕉久久影院| 欧洲性大片xxxxx久久久| 色偷偷888欧美精品久久久| 日本强好片久久久久久AAA | 中文字幕无码免费久久| 久久久久这里只有精品 | 色婷婷久久综合中文久久一本| 久久久九九有精品国产| 久久综合亚洲鲁鲁五月天| 18岁日韩内射颜射午夜久久成人| 亚洲国产另类久久久精品| 久久精品aⅴ无码中文字字幕不卡| 伊人 久久 精品| 伊人久久大香线蕉成人| 久久99九九国产免费看小说| 亚洲伊人久久综合影院| 午夜精品久久久久久久无码|