首页 > 其他分享 ># 实验15

# 实验15

时间:2023-07-28 18:12:07浏览次数:35  
标签:15 例程 mov pop 中断 实验 int9 es

实验15

题目

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

代码:

assume cs:code
code segment
start:
push cs
pop ds

mov ax,0
mov es,ax

mov si,offset int9
mov di,204h
mov cx,offset int9end-offset int9
cld
rep movsb

push es:[9*4]
pop es:[200h]
push es:[9*4+2]
pop es:[202h]; 存储原本中断例程的地址

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
push si
push cx

in al,60h

pushf
call dword ptr cs:[200h]; 此时cs指向int9中断例程的段地址,先调用原本int9中断例程处理键盘输入产生的中断
;键盘输入处理过程:
;我们从键盘输入一个按键时,会到达相关芯片的60端口;60端口会向CPU发出int9中断:告诉CPU有输入到了60端口。
;int9中断处理过程,有以下三步:
;1.读取60h端口中的扫描码;
;2.如果是字符键的扫描码,将送入内存中的BIOS键盘缓冲区;如果是控制键和切换键的扫描码,则将其转换为状态字,写入;内存中存储状态字节的单元;
;3.对键盘系统进行相关控制,比如说,向相关芯片发出应答信息。


cmp al,1eh+80h; 根据扫描码确定是否为‘A‘键的断码
jne int9ret

show:
mov ax,0b800h
mov es,ax
mov si,0
mov cx,2000
shows:
mov byte ptr es:[si],'A'
add si,2
loop shows


int9ret:
pop cx
pop si
pop es
pop ax
iret

int9end:nop

code ends
end start

解析:

这里是安装中断例程,与前文的直接调用中断例程不同(按ESC改变颜色)。因为按ESC改变颜色的那个程序是在运行时调用的,程序一直在显示‘a'’z‘,故编写的中断可以直接存储在data区域内,不会被内存回收,因为并没有退出程序。本次实验一运行就结束,不存在处于运行的时刻,若中断例程采取存储在data中,一旦程序结束,内存就会被回收,中断例程也就被覆盖了。故要安装中断例程在安全的区域,也就是0:200h0:2ffh区域内。

根据题目要求,按下’A‘键后,若松开,则全屏’A‘。要想松开’A‘键,必须先按下‘A‘键,故只需检测松开‘A‘键即可,其余的正常调用中断例程即可。

标签:15,例程,mov,pop,中断,实验,int9,es
From: https://www.cnblogs.com/alphadoiy/p/17588593.html

相关文章

  • P2679 [NOIP2015 提高组] 子串 题解
    原题\(题目大意\)\(从字符串a中选出k个子串s_1,s_2,s_3...s_k使得s_1+s_2+s_3+...+s_k=b\)\(求总方案数对10^9+7取模的结果\)\(1\le|a|即n\le1000,1\le|b|即m\le200,1\lek\le|b|\)\(设f_{i,j,x}表示已经选到a的第i个字符,b的第j个字符,共选了x个子串的方案数\)\(则可得......
  • MIL-STD-1553B总线通信模块(1553B板卡)
    MIL-STD-1553B总线通信模块(1553B板卡)产品具有以下特点:1.产品覆盖多种接口CPCI/PXI/PCI/PC104/PC104+/USB等,满足用户不同平台的使用要求;2.自主知识产权IP核,通信速率支持1M/4M ......
  • 鹏业安装算量软件V8.2.0.150版本升级说明
    1.新增楼层表功能分区属性、模型属性中可以设置对应的楼层信息2.计算项明细增加安装高度计算明细增加安装高度,对应的计算图元默认取计算项安装高度3.电气专业新增设备表功能设备表可以对设备安装高度和立管根数快速修改4.电气系统表增加敷设高度对配电箱和回路预先设置安装高度5.电......
  • 2015 招募志愿者 通知 公告 Notice
    VolunteersWanted Therewillholdasummercampinouruniversityforhighschoolstudentsinthissummervacation.Wearelookingforsomevolunteersforthesummervacation.Firstofall,youshouldsharetheexperienceoflearningdifferentsubjects......
  • MIL-STD-1553B总线通信模块(1553B板卡)
    MIL-STD-1553B总线通信模块(1553B板卡)产品具有以下特点:1.产品覆盖多种接口CPCI/PXI/PCI/PC104/PC104+/USB等,满足用户不同平台的使用要求;2.自主知识产权IP核,通信速率支持1M/4M......
  • 投针实验计算Π值的可视化
    <!DOCTYPEhtml><html><head><metacharset="UTF-8"><title>needleProblem</title></head><body><canvasid="myCanvas"></canvas><br><inputid="times......
  • 【题解】[HNOI2015] 落忆枫音
    题目传送门感觉这题挺有意思的,遂写。题目大意给出一个有向无环图,再给定两个点\(s\)和\(t\),表示在点\(s\)和\(t\)间加上一条边。求这个图有多少种生成树。题目分析首先考虑不加边之前的情况,假设给定下面这个图:根据树的定义,除根节点外的节点有且只有一个父亲节点,也就......
  • 15款很棒的 JavaScript 开发工具
    [url][/url]在开发中,借助得力的工具可以事半功倍。今天,这篇文章向大家分享最新收集的15款非常有用的JavaScript开发工具。[color=red]TestSwarm:Continious&DistributedJSTesting[/color][url]http://www.webresourcesdepot.com/testswarm-contini......
  • day15
    一、[安洵杯2019]Attack1.导出http文件,得到了一个转储文件,不知道有什么用,再扔到kali中foremost一下,得到了flag.txt2.flag.txt有密码,根据提示,猜测是admin用户的密码3.使用mimikatz分析dmpprivilege::debugsekurlsa::minidumplsass.dmpsekurlsa::logonpasswordsfull4......
  • Telnet小实验
    Telnet小实验实验环境两台windowsXP虚拟机 操作命令netstarttelnet//开启telnet服务,也可以再service.msg里面手动打开,也可以在c盘里的system32文件夹里面打开telnet.exe|||||||但win10好像自带就有netstat  //看服务是否打开用这两行命令打开两台虚拟机的telnet服......