[072][汇编语言]实验15 按下'A'键,松开后全屏显示'AAAAAAAAA....'

实验15

  • 编程:安装一个新的 int 9 中断例程,在DOS下,按下'A'键后,除非不再松开,如果松开,就会显示满屏幕的'A',其他键的功能照常。

运行结果

AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA.png

完整源码

assume cs:code

stack segment
    db 128 dup (0)
stack ends

code segment
    start:  mov ax,stack
            mov ss,ax
            mov sp,128
            
            push cs
            pop ds
            
            mov ax,0
            mov es,ax
            
            ; 安装int9
            mov si,offset int9
            mov di,204H         ;将新的int9中断例程安装在0000:0204H处开始
            mov cx,offset int9end - offset int9
            cld
            rep movsb
            
            ; 将BIOS 的 in9 入口地址放在 0000:[200H] 以及 0000:[202H]中
            push es:[9*4]
            pop es:[200H]
            push es:[9*4+2]
            pop es:[202H]
            
            ; 在中断向量表中设置新的int 9的入口地址
            cli
            mov word ptr es:[9*4],204H
            mov word ptr es:[9*4+2],0
            sti
            
            mov ax,4c00h
            int 21H

    int9:   push ax
            push bx
            push cx
            push es
            
            in al,60H
            
            pushf
            call dword ptr cs:[200H]
            
            cmp al,1EH+80H      
            jne int9ret
            
            mov ax,0B800H
            mov es,ax
            mov bx,0
            mov al,'A'
            mov cx,2000
        s:  mov byte ptr es:[bx],al
            add bx,2
            loop s
                
    int9ret:    pop es
                pop cx
                pop bx
                pop ax
                iret
    
    int9end:    nop
    code ends
    end start

代码参考

代码说明:完全照着 代码参考 提供的代码,只做 4处修改

【修改后的代码】
(一)第一处修改
cmp al,1EH+80H ; A键的通码是1EH,断码=通码+80H

题目要求是【松开】才全屏显示,
因此只需要检测到 【断码】 就可以了      

(二)第二处修改
mov al,'A'
新增的语句,按照题意,要显示的字符是 'A'

(三)第三处修改
mov bx,0
要修改的是显存的偶地址,因此要从0开始

(四)第四次修改
在 标号s 之后 写上
mov byte ptr es:[bx],al
随着对显存偶地址的访问,写上'A'
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容