关于IO端口和编址方式的知识

关于I/O端口和编址方式的知识
以下涉及到的指令都是汇编指令,如INOUTSTICLIMOV等。
一:I/O端口知识
      1.什么是I/O端口? CPU使用什么指令与外设进行数据交换?
  答:CPUI/O设备通过硬件接口或控制器相连接,这些接口或控制器都有数量不等的端口,这些端口有统一的地址编码,CPU通过这些端口使用输入输出指令INOUT与外设进行数据交换。
  2CPU为什么不能用MOV指令进行I/O数据传输?
  答:在80x86微机系统中,I/O端口编址在一个独立的地址空间中,它和存储器是完全分离的。因此,对于存储器的存取操作使用MOV指令,而与端口进行信息交换的操作使用专门的I/O指令,二者不能混淆。
  3.使用查询方式进行输入输出的优缺点是什么?
  答:使用查询方式编程可直接在端口级上输入输出信息,数据的传送速度和吞吐量比较高,
另外在控制多个设备的I/O时,可在程序中安排它们的优先级,最先查询的设备,其工作的优先级也最高。修改程序中的查询次序,实际上也就修改了设备的优先级,这样以最简便的方法实现了对设备优先级的控制。查询方式的缺点主要是在查询过程中,要反复的查询等待,浪费了CPU原本可执行大量指令的时间,而且由询问转向相应的处理程序的时间较长,尤其在设备比较多的情况下。
  4.什么是中断?
  答:计算机在执行程序过程中,遇到需要处理的事件时,暂停当前正在运行的程序,转去执行有关的服务程序,处理完后自动返回原程序,这个过程称为中断(interrupt)。中断在现代计算机系统中是一种非常重要的技术,输入输出设备和主机交换数据、分时操作、实时系统、多处理机系统、计算机网络和分布式计算机系统都要用到这种技术。
  5.中断分为几类?
  答:中断可分为内中断和外中断。内中断是由计算机内部原因引起的中断,内中断又称为软中断,它通常由三种情况引起:
  风力发电汽车(1) 由中断指令INT引起;
  (2) 由于CPU的某些错误而引起,如溢出中断、除法错中断等;
  (3) 为调试程序(DEBUG)设置的中断,如单步中断、断点中断;外中断指由外部事件引起的中断,又称为硬中断。
  硬件中断主要有两种来源:
  (1) 非屏蔽中断(NMI),如电源故障中断、实时钟中断等。
  (2) 可屏蔽中断,一般是由于各种外部设备请求CPU提供服务所引起的中断。
  6.什么是中断类型?
  答:80x86中断系统能处理256种中断,每种中断都安排一个编号,称之为中断类型。256种中断类型号排列为00~0FFH
  7.中断向量表的作用是什么?
  答:为了提高响应中断的速度,通常把所有中断处理程序的入口地址(或称为中断向量)汇集在中断向量表中,当CPU响应中断时,根据中断源的中断类型号,直接从中断向量表中得到相应的入口地址,并从该地址开始执行中断处理程序。
  8.中断向量表一般安排在存储器的什么位置?
  答:存储器最低的1K字节,地址从00000 ~ 03FFHled驱动电路存放中断向量。中断向量表中的256项中断向量对应256种中断类型,每项占用四个字节,其中两个字节存放中断处理程序的段地址(16位),另两个字节存放偏移地址(16位)。
  9.某外设能否得到CPU的中断服务取决于什么控制条件?
  答:从外设发出中断请求到CPU响应中断,有两个控制条件是起决定性作用的:
  (1) 该外设的中断请求是否被屏蔽,这个条件由8259A的中断屏蔽寄存器(端口地址为21H)控制;
  (2) CPU是否允许响应中断,这由标志寄存器(FLAG)中的中断允许位IF控制。但CPU不能禁止非屏蔽中断,对于非屏蔽中断CPU总会响应。
  10.什么是开中断和关中断?如何控制开中断和关中断?
  答:允许CPU响应外设的中断请求叫做开中断,此时IF=1;不允许CPU响应外设的中断请求叫做关中断,此时IF=0。有两条指令能控制开、关中断:STI 开中断(IF=1CLI 关中断(IF=0
  11CPU响应中断的过程是怎样的?
  答:(1)取中断类型号N
    (2)寄存器(FLAG)内容入栈
    (3)当前代码段寄存器(CS)内容入栈
    (4)当前指令计数器(IP)内容入栈
    (5)禁止硬件中断和单步中断(IF=0, TF=0)
    (6)从中断向量表中取4*N的字节内容送IP,取4*N+2中的字节内容送CS
    (7)转中断处理程序
  12.为什么产生中断后,要清除IFTF位?
  答:在中断发生时,CPU自动清除了IF位和TF位,这样设计的目的是使CPU转入中断处理程序后,不允许再产生新的中断,包括单步执行。如果在执行中断处理程序的过程中,还允许外部的中断,可通过STI指令再把IF置为1
  13.当多个中断源同时向CPU请求中断时,CPU应如何处理?
  答:各种中断源事先安排有中断优先级,当多个中断源同时申请中断时,CPU先比较他们的优先级,,然后从优先级高到优先级低的次序来依次处理各个中断源的中断请求。
  14.在中断处理程序中,如何发出EOI命令?
  答:tf2oEOI命令即中断结束命令,用两条指令完成:MOV AL20H EOI位为1的指令 OUT 20HAL ;第二条指令的作用是清除8259AISR中的中断服务标志(8259AI/O端口地址为20H)。
  15.中断程序的编写方法是什么?
  答:在主程序中要为中断做如下准备工作:
  (1)设置中断向量(使用INT 21H25H功能)
  (2)设置中断设备的屏蔽位(I/O端口21H
  (3)开中断(STI
        中断处理程序的编写步骤:
  (1)保存工作寄存器的内容
  (2)如允许中断嵌套,则开中断(STI
  (3)中断处理功能
  (4)关中断 (CLI)
  (5)送中断结束命令(EOI)给中断命令寄存器(I/O端口20H
  (6)恢复工作寄存器内容
  (7)返回被中断的程序(RET
  16.什么是中断嵌套?处理中断嵌套时应注意什么?
  答:中断嵌套是指正在运行的中断处理程序,又被其它中断源中断的情况。一个正在执行的中断处理程序,在开中断(IF=1)的情况下,能被优先级高于它的中断源中断,但如果要被同级或低级的中断源中断,则必须发出EOI命令,清除正在执行的中断请求,才能响应同级或低级的中断。80X86没有规定中断嵌套的深度(中断程序又被中断的层次),但在实际使用时,多重的中断嵌套要受到堆栈容量的限制,所以在编写中断程序时,一定要考虑有足够的堆栈单元来保存多次中断的断点及各寄存器的内容。
  17.什么情况下中断处理子程序需要结束中断(EOI)? 结束中断指令起什么作用?
  答:在外中断处理程序之中或在结束之前,发出中断结束命令EOI能清除当前正在处理的中断请求,以便能够在该处理程序的过程中或结束之后,再响应同级或低级的中断。
  18.系统提供的INT 1CH的中断处理程序是怎样的?为什么?
  答:系统提供的INT 1CH的中断处理程序中只有一条指令:IRET。实际上这是系统为用户
设置的一个中断类型号,用户可以用自己设计的中断处理代码来代替原1CH程序。如果用户有某种定时周期性的工作需要完成,就可以利用系统定时器的中断间隔(约每秒中断18.2次),嵌套调用1CH的中断处理程序,并用计数的方法控制时间周期。如,需要10秒钟的周期,则将计数值设置为182。定时器中断程序每调用一次INT 1CH,计数值减1,当计数值为0时,说明已到10秒。
编址方式知识
      CPU对外设的访问是通过I/O端口的,而I/O端口的编址方式有两种:统一编址和独立编址。
      1)统一编址
              I/O端口与主存单元一样看待,每个端口占用一个存储单元的地址,将主存的一部分划出来用作IO地址空间,端口占用了存储器的地址空间,使存储量容量减小。统一编址也称为“I/O内存方式,I/O端口地址位于内存空间(很多外设有自己的内存、缓冲区,外设的寄存器和内存统称“I/O空间)。
        2)独立编址
              I/O端口地址与存储地址分开独立编址,I/0端口地址不占用存储空间的地址范围,这样,在系统中就存在了另一种与存储地址无关的IO地址,CPU也必须具有专用与输入输出操作的IO指令(INOUT等)和控制逻辑。独立编址下,地址总线上过来一个地址,设备不知道是给IO端口的、还是给存储器的,于是处理器通过MEMR/MEMW裤带蛇IOR/IOW两组控制信号来实现对I/O端口和存储器的不同寻址。如,intel 80x86就采用单独编址,CPU内存和I/O是一起编址的,就是说内存一部分的地址可能和I/O地址是重叠的。比如:当系统安装上4G内存时,由于位于4G地址以下的部分要优先分配给MMIOMemory-Mapped I/O 内存映射酚醛模塑料I/O,它是PCI规范的一部分,I/O设备被放置在内存空间而不是I/O空间。从处理器的角度看,内存映射I/O后系统设备访问起来和内存一样。这样访问AGP/PCI-E显卡上的帧缓存,BIOSPCI设备就可以使用读写内存一样的汇编指令完成,而不需要单独的I/O指令INOUT,简化了程序设计的难度和接口的复杂性。),大概是256M~1G的空间,所以这部分空间就不能供内存使用。相反,如果系统安装不到3G的内存时,MMIO就不会与物理内存的地址空间相重合,就能基本完全的供内存使用。
1.独立编址(专用的I/O端口编址)----存储器和I/O端口在两个独立的地址空间中

(1)优点:I/O端口的地址码较短,译码电路简单,存储器同I/O端口的操作指令不同,程序比较清晰;存储器和I/O端口的控制结构相互独立,可以分别设计

(2)缺点:需要有专用的I/O指令,程序设计的灵活性较差

2.统一编址(存储器映像编址)----存储器和I/O端口共用统一的地址空间,当一个地址空间分配给烟雾过滤器I/O端口以后,存储器就不能再占有这一部分的地址空间

(1)优点:不需要专用的I/O指令,任何对存储器数据进行操作的指令都可用于I/O端口的数据操作,程序设计比较灵活;由于I/O端口的地址空间是内存空间的一部分,这样,I/O端口的地址空间可大可小,从而使外设的数量几乎不受限制

(2)缺点:I/O端口占用了内存空间的一部分,影响了系统的内存容量;访问I/O端口也要同访问内存一样,由于内存地址较长,导致执行时间增加

本文发布于:2024-09-22 12:26:51,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/335386.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:中断   地址   端口   指令   处理程序
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议