• 实验十五_安装新的int 9中断例程


    安装一个新的int 9中断例程,功能:在DOS下,按下“A”键后,除非不在松开,    如果松开,就显示满屏幕的“A”;其他的键照常处理。
    提示:按下一个键时产生的扫描码称为通码,松开一个键产生的扫描码称为断码。 
    断码 = 通码 + 80h。
    assume cs:code 
    code segment 
    start:  mov ax,cs 
            mov ds,ax 
            mov si,offset int9;ds:si指向源地址 
            mov ax,0 
            mov es,ax 
            mov di,204h;es:di指向目的地址 
            mov cx,offset int9end - offset int9 
            cld 
            rep movsb 
             
            mov ax,es:[9*4] 
            mov es:[200h],ax 
            mov ax,es:[9*4+2] 
            mov es:[202h],ax 
             
            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 es 
            in al,60h 
             
            pushf 
            call dword ptr cs:[200h] 
             
            cmp al,9EH;9EH是'A'的断码 
            jne int9ret 
             
            mov ax,0b800h 
            mov es,ax 
            mov cx,2000 
            mov di,0 
    int9_s: mov byte ptr es:[di],'A' 
            mov byte ptr es:[di+1],0CH;高亮红 
            add di,2 
            loop int9_s         
             
    int9ret:pop es 
            pop ax 
            iret 
    
    int9end:nop 
    code ends 
    end start 
    -------------------------------------------------------------------- 
    总结:首先搭建框架: 
    
    int9中断例程安装 
    
    保存原来的int 9中断例程 
    
    设置中断向量表 
    
    int9 
    
    int9end:nop 
    心得:为了便于程序的调试,写程序时可以先把功能简化,就上述程序来说
    可以用在屏幕中间显示一个字符来替代满屏‘A’这样的功能,如果实现了
    一个字符的显示,说明程序(除了满屏‘A’部分)其他地方基本上正确
    (不一定完全正确,原因很多),这样在把满屏显示‘A’这样的功能添加上
    去,完善起程序。
  • 相关阅读:
    210
    209
    208
    207
    定时任务crontab
    Python的zip与*zip函数的应用
    Python的reduce函数与map函数
    解析:cpu与io密集在何场景适合使用多进程,多线程,协程
    Python上下文(转载)
    C10K与C10M的问题
  • 原文地址:https://www.cnblogs.com/xpjiang/p/4524429.html
Copyright © 2020-2023  润新知