汇编语言学习笔记15.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
汇编语言学习笔记15

外中断 Cpu在计算机系统中,除了能够进行执行指令,进行运算外,还能对外部设备进行控制。当然cpu要进行及时的处理外设的输入,要必然的去解决两个问题: 外设输入随时都可能发生,cpu如何得知?Cpu从何处得到输入响应? 接口芯片和端口 我们知道了在接口卡和主板上装有各种接口芯片。在这些芯片的内部也会有相当多的寄存器,cpu就是将这些寄存器当做端口来进行访问的 外中断信息 Cpu通过提供中断机制来进行处理中断信息,以前我们了解了内部中断信息如何进行处理,其实也有一种中断信息来自cpu外部,也能引发cpu的中断。外部中断有两种类型: 可屏蔽中断和非可屏蔽中断,可屏蔽中断就是cpu可以不响应的中断(发生了也相当于每发生↖(^ω^)↗)非可屏蔽中断就是cpu不得不去处理的中断了。其实cpu是否去处理中断信息取决于标志寄存器if的设置,当cpu检测到中断信息的时候,如果if=1,那么cpu在执行完当前的指令后就会响应中断,引发中断过程,如果if=0,那么cpu就不会响应中断。 好吧那么还记得内中断的过程么? 住中断类型码 n 标志寄存器入栈 if=0,tf=0 Cs ip入栈 Cs ip取得中断类型码入口地址 这样cpu就去处理中断程序了。 可屏蔽中断的引发过程除了第一步和内中断的引发不一样外,基本上和内中断差不多,主要是不可屏蔽中断的信息来自cpu外部。中断类型码是通过数据总线送入到cpu的,这样我们就可以理解在cpu处理中断过程中会将if=0了,这样cpu在进入处理中断程序的时候就不会再去响应其他的中断信息了,这样就屏蔽了其他的中断了,当然我们可以通过指令来控制if的信息来让cpu随时随地都响应我们想要的可屏蔽中断信息,sti 用于设置if=1 cli用于设置if=0 当cpu遇到不可屏蔽中断的时候,执行完当前的指令后会立即去处理中断信息。对于x86cpu不可屏蔽中断的中断类型码固定为2,所以不可屏蔽中断不需要进行取中断类型码。 其实几乎多有的有外设引发的终端都是可屏蔽中断,不可屏蔽中断是在系统中又必须处理的紧急情况发生的时候用来通知cpu的中断信息。 Pc机的键盘处理过程 键盘上的每一个键都相当于一个开关,当我们把它按下去的时候,开关就相当于接通了,这时会产生一个扫描码,扫描码说明了按下间的位置,伺候扫描码就被送入了主板上的相关接口芯片上的寄存器中了,该类寄存器的端口地址位60h,当键松开的时候,会产生一个扫描码此时是断码,也将会送到相应的寄存器里边去,端口同样是60h,扫描码长度为一个字节,通码的第7位是0.断码的第7位是1,所以 断码=通码+80h 键盘的输入到达60h号端口的时候,相关的芯片回想cpu发出中断类型为9的可屏蔽中断,cpu管不管响应就要看if的标志了,要是if=1那么cpu就去执行int 9中断例程 Int9中断例程 Bios提供的,用来执行基本的输入输出处理,工作原理: 读出60h的扫描码 如果是字符扫描码那么,该扫描码和对应的字符码(asc11码)就被送入键盘输入缓冲区,该区可以存放15个键盘输入。当然要是是状态扫描码例如(crtl键等)就将扫描码转换成对应的状态字节 在键盘缓冲区一个键盘输入有一个字单元存放,高位字节存放扫描码,低位字节存放字符码 编写int 9中断例程 基本上键盘的处理过程如下: 键盘产生扫描码 扫描码送入60h号端口 引发int9中断 Cpu响应中断,进行处理 在上面的处理过程中,头三步是由硬件系统完成的,我们能控制的就是第四步--改写int9程序例程。我们可以按照自己的意图来进行处理键盘的输入,编程题如下 在屏幕中间依次显示a--z子u,并可以看清,显示过程中按下esc键后,改变现实的颜色。 这个题目我们会分开几步去做。 首先我们清楚现在cpu处理速度是相当快的,所以若是我们仅仅进行字符显示,那么屏幕的显示速度远远超过了我们眼睛的分辨率,所以我们会在程序中加入一段空循环,来隔开字符的显示,降低分辨率: assume cs:code ,ss:stack stack segment db 128 dup(?) stack ends code segment start: mov ax,0b800h mov es,ax mov ah,a s: mov es:[160*12+40*2],ah inc ah call delay cmp ah,z jna s mov ax,4c00h int 21h delay: push ax push dx mov ax,0ffffh mov dx,0f000h ok: sub ax,1 sbb dx,1 cmp ax,0 je return

文档评论(0)

xy88118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档