在设备分配中,什么时刻的设备状态为等待状态.a,设备本身忙b,与设备连接的所
直接程序控制传输模式程序中断控制模式直接内存访问模式1.编写一条指令,向端口25H输出一个字节。2.编写命令从端口1000H输入一个字。
3.编写指令从1000H端口输出1000两次,先输出低字节,后输出高字节。
4.下列指令汇编后各有多少字节?INAL52H;OUT0CH、ALINAXDX;OUTDX、AX5编写一系列指令,其功能是依次测试属于两个设备的两个状态寄存器。
当检测到某个状态寄存器的位0为1时,从该状态寄存器对应的设备中读取数据。
每次读取一个字节时都会测试该状态寄存器。
如果测量到第3位为1,则停止读取该器件,然后进入备用测试状态。
假设两个状态寄存器的端口地址分别为300H和308H,两个输入数据端口分别为302H和30AH。
输入数据存储在数据存储器中,起始地址分别为BUFF1和BUFF2。
当使用输入操作时,除非计算机正在等待数据,否则数据无法传输到计算机。
A)节目查询方式;b)中断模式;C)DMA模式7.在微机接口中,选择设备地址的方法有哪些?如何选择?8、Intel80x86处理器可访问的I/O空间为:A)4GBB)1MBC)64KBD)1KB9.8086处理器有地址总线①,可以形成内存地址空间②。
寻址范围为③;④地址总线中的线可用于I/O寻址,形成⑤输入输出地址空间,地址范围为⑦地址线在PC中用于I/O操作等;其中地址空间为⑧,可寻址范围为⑨。
10、每个单位内存字节在内存地址空间中占据一个地址;结果,输入和输出端口占用地址空间。
11.要实现主机和设备之间的同步,需要解决两个基本问题,第一个是。
12、主机与设备之间实现数据输入输出的基本方式是、。
13.对于微型计算机来说,任何新的外部设备最终都会连接到主机上。
14.在主板之外开发新的外围接口逻辑。
该接口逻辑的一侧应连接到,另一侧应连接到。
15、I/O接口的含义,从硬件角度看,包括:从软件角度看,可以理解为和。
16.对于用户来说,界面设计的任务就是开发和。
17.有些数据输入和输出的方法必须通过在程序中安排I/O指令来完成。
(A)DMA(B)无条件直接程序传输(C)程序请求控制(D)中断模式18.系统总线通过接口逻辑连接到外设,全部并行。
19、8086CPU使用指令从端口读取数据,使用OUT指令。
20.以下允许80x86CPU对I/O端口进行读/写访问的指令包括:A)中断指令B)字符串操作指令C)指令输入/输出D)MOV指令21.IBMPC接口的开发使用了某大规模集成电路芯片。
内部占用16个I/O口地址,占用300~30FH。
请设计片选信号CS训练电路。
22。
在IBMPC系统中,如果AEN信号不参与I/O口地址的译码,会出现什么问题呢?在没有DMA的某微机系统中是否也存在同样的问题?23、使用三态门(74LS244)作为输入接口,接口地址指定为04E5H。
试画出其与最小系统总线8086的连接图。
24、使用三态门输出锁存器(74LS244)作为输出接口。
接口地址指定为E504H。
尝试画出它与最大系统总线8086的连接图。
如果上题中输入接口的第4位和第7位均为0,则如果不满足条件,输出接口将连续输出以DATA开头的十个内存数据,等待并尝试写入相应的程序段。
25.什么是中断?PC中有哪些类型的中断?使用中断机制可以执行哪些操作功能?26、中断向量表的作用是什么?详细描述CPU使用中断向量表转入中断服务程序的流程。
27、简述实模式下响应可屏蔽中断的过程?28.如果使用中断传输数据,数据是如何传输的?中断结构起什么作用?29、根据中断流程的要求,设计中断系统时一般应考虑哪些问题?30.中断向量类型14H(即中断服务程序的32位输入地址?)存放在哪些单元的内存中?31.假设(SP)=0100,(SS)=0300,(PSW)=0240,且存储单元的(00020)=0040,(00022)=0100,则单元中有一条INT8中断指令段地址0900和偏移地址00A0。
执行完INT8指令后,SP、SS、IP、PSW的是什么?堆顶部的三个词是什么?32.8259初始化编程是如何开始的?顺序是什么?33、假设一个微机系统需要处理64级中断,需要一块8259芯片来构成中断机制。
(A)8件(B)10件(C)9件(D)64件34.全嵌套优先级的规则是什么?使用哪些操作命令以及何时设置命令来确保执行此优先级排序规则?35、例如,设备D1、D2、D3、D4和D5按照完全嵌套的优先级规则排列。
设备D1具有最高优先级,D5具有最低优先级。
如果中断请求的顺序如下,请尝试对每个设备的中断处理程序进行排序。
假设所有中断处理程序启动后都有STI指令,并在中断返回前发出完成命令(1)设备3和4同时发出中断请求(2)在设备3的中断处理程序的中断结束之前,设备2发出一个结束命令中断请求(3)设备4的中断处理程序完成后,设备5发出中断请求(4)上述所有中断处理程序完成并返回主程序后,设备1、3、5同时发送。
设备3的中断处理程序中的中断请求。
在终止之前,设备2发出中断请求。
36.如果初始化时设置了非自动终止模式,那么当中断服务程序即将终止时,应该设置什么操作命令?如果没有定义这个命令会发生什么?37.如果初始化时设置了自动终止模式,中断嵌套的深度可以控制吗?38、当中断服务程序终止时,是否可以用RETF指令代替IRET指令返回主程序?这样做有什么问题吗?39.总结一下,什么情况下应该使用CLI指令来禁用中断?什么情况下需要使用STI指令来使能中断?40、根据中断源是在处理器内部还是外部,中断可分为两类:内部中断和外部中断,前者又分为内部中断和内部中断。
41、程序中断大致可分为:(1)、(2)、(3)、(4)、(5)等过程。
42、使用DMA方式传输数据时,每次数据传输所花费的时间为:A)一个指令周期;b)一个机器周期;C)存储周期D)总线周期。
43.DMA数据传输和程序控制;与数据传输相比有何差异?44、通道程序由A)I/O指令组成;B)通道控制字(或通道指令)C)通道状态字45.DMA方式数据传输过程中,由于和的为);不会被破坏,所以一旦数据传输完成,主机可以立即返回到原来的程序。
46.如果认为等待设备状态信号的处理器处于非工作状态(即等待),则主机与设备之间的以下数据传输方式中,(1)主机与设备串联工作,(2)主机与设备并联工作。
(3)主程序与外设并行工作A)程序请求方式B)中断方式;系统总线的发展过程是:从系统总线开始,对总线进行实验,然后演进到总线和总线。
48、RS-232接口为接口(1),一般用于连接(2)和(3)。
AS-232规定使用(4)逻辑,其逻辑电平为“1”。
在(5)中。
,逻辑电平“0”的范围为(6)49.8253的模式0和模式4、模式1和模式5有什么区别?50、IBMPC/XT系统中8253的计数器0用于产生实时时钟中断请求信号。
中断服务程序见手册第369页的程序。
请问8253的计数器0是在什么状态下初始化的?51、问题50提到,实时时钟中断服务程序中的INT1CH指令为用户提供输入和输出。
请编写一个程序来使用此输入和输出,大约每1秒更新一次并在屏幕上显示时间。
。
52、中断请求信号是通过8253的计数器0产生的。
如果要在最大可调初值范围内延长中断产生时间,无效的方法是:A)初始化时将CR0设置得尽可能大。
b)复位信号;OUT0变高之前的初始值;C)OUT0变高之前给GATE0添加触发信号D)降低施加到CLK0端的信号频率53.已知可编程接口芯片中的计数器端口地址为40H,计数频率为2MHz,芯片的控制字为8位二进制数,字控制寄存器的端口地址为43H,计数器到0时的输出信号作为中断请求信号。
执行下一个程序后,中断请求信号的周期为ms。
MOVAL,00110110BOUT43H,ALMOVAL,0FFHOUT40H,ALOUT40H,AL54。
如果8253芯片可以使用8086的外围接口地址D0D0H~D0DFH,尝试画出电路连接图。
添加到8253的时钟信号为2MHz:(1)如果分别使用计数器0、1和2。
产生以下三个信号:①周期为10us的对称方波②每隔1s产生一个负脉冲③每种情况10s后产生一个负脉冲,尝试解释如何连接8253并写入;程序,包括初始化。
(2)如果要使用8086通过接口控制GATE,当CPU使GATE有效时,20us后计数器0的OUT端会产生一个正脉冲。
尝试设计硬件和软件来满足这一要求。
。
55.解释一下8254的六种工作模式?如果添加到8254的时钟频率是0.5MHz,如果需要每10分钟产生一个同步中断,那么计数器的最大同步持续时间是多少,尝试寻找解决方案。
56.在IBMPC系统中,根据以下不同情况设计了接口逻辑,均采用8253来完成测量外部脉冲信号重复频率的功能。
(1)测量的脉冲信号的重复频率在10到1000Hz之间(2)测量的脉冲信号的重复频率在0.5到1.5Hz之间(3)测量的脉冲信号的重复频率在10之间。
100Hz(4)测量间歇脉冲信号,每次有信号时有100个脉冲。
重复频率为0.8至1.2MHz。
间歇频率约为每秒15次。
有必要测量脉冲重复频率。
信号。
57判断题(1)8254芯片没有连接到扩展槽系统总线。
(2)INDST和SRC指令中,SRC的寻址方式为寄存器方式,DST的寻址方式有直接寻址和间接寻址。
(3)从地址为0FEH的端口读一个字节的指令可以是INAL、0FEH;也可以是MOVDX、0FEHINAL、DX(4)在地址为0FE2H的端口输出一个字的指令与问题3类似),只不过操作数目的地有两种寻址方式,而不是源操作数。
(5)IN和OUT指令会影响ZF位。
(6)中断模式下输入输出的含义程序就是利用处理器响应内部中断的能力,利用IN和OUT指令(即程序)来实现数据的输入和输出。
(7)系统总线是主板与外界的直接接口。
任何设备都可以直接“连接”到总线。
(8)占用多个I/O端口的大规模集成电路的地址译码器的设计与存储器的地址译码器的设计类似,只是地址范围要小得多并且控制信号不同。
。
(9)主机和键盘之间有一根线专门用于将键盘的串行按键扫描码传输到主机,不能反向传输。
(10)中断类型号乘以4即为中断服务程序的输入地址。
【参考答案】3.MOVAX,1000MOVDX,1000HOUTDX,ALMOVAL,AHOUTDX,AL注意:如果这题你手动将1000转换为十六进制数,那就是多余的了。
6.A7。
答:有两种:挑线法和解码法。
在实际设计中,采用何种方法取决于系统的规模。
一般来说,对于大规模的系统,应该采用解码的方式来选择芯片,这可能会增加芯片的数量。
例如,如果使用行选择方式选择3条地址线,则只能选择3项,而使用解码方式,则可以选择8项,但需要添加解码器。
译码器设计分为全地址译码和部分地址译码。
如果系统规模允许,部分地址译码可以简化电路并节省元件。
9.①20②1M③00000H~FFFFFH④16⑤64K⑥0000H~FFFFH⑦10⑧1K⑨000H~3FFH11.设备与主机之间的通信和响应处理方式多设备管理方式12.直接程序控制传输方式程序中断控制方式直接内存访问方式15.主板上的接口逻辑、系统总线、特定设备的接口逻辑、接口软件和软件接口17.BCD20。
C22。
答:PC中有DMA控制逻辑,用于主机和设备之间的数据传输。
在开发外设接口逻辑时,用于区分DMA操作和I/O操作的AEN信号不设置为低电平。
高效地添加地址译码器(I/O操作),其他设备与内存之间会进行DMA传输,或者使用DMA机制进行动态内存刷新时,地址译码器就是该I/O端口的地址则输出端可能会输出错误的有效选择信号。
”该端口不是参与DMA传输的端口。
为了避免这种误操作,在解码端口地址时必须加上AEN当时的I/O但是在没有DMA的微机系统中不存在这个问题26.中断向量表用来存放服务程序的输入地址,每个中断都有一个中断类型号,CPU获取中断类型号。
将其乘以4即可在中断向量表中找到包含该地址的地址。
对此的中断种类。
中断服务程序将前两个单元的偏移地址装入IP,将后两个单元的段地址装入CS,CPU转而执行中断服务程序。
29.答:(1)配置必要的中断源并确定它们如何请求中断。
(2)根据不同的紧急情况,指定中断源的优先级,以决定多个中断源同时请求处理器时的情况。
可能有一个响应序列。
(3)当处理器响应中断时,需要保存被中断程序的场景和断点,以便中断处理完成后能够返回到原来的程序。
服务程序设计(5)还原场景,返回原程序。
33.C38.它可以回来,但问题是中断前放在堆栈上的PSW无法移除,无法恢复中断前的计算机状态。
40.内部中断可屏蔽中断不可屏蔽中断44.B46.(1)A(2)B(3)C48。
(1)串行传输标准(2)CRT端子(3)调制解调器(4)负极(5)-5V至-15V(6)+5V至+15V52.C55.(1)D(2)H(3)L(4)K(5)I57。
(1)D(2)H(3)L(4)K(5)I
老师,求一具有代表性的中断程序或中断应用程序
例如,中断类型号为15H,对应的中断服务程序入口为INTPROC,入口地址写法如下。关于具体的INTPROC和子程序的编写,仅描述中断返回指令。
只需向硬件中断添加中断终止命令即可。
PUSHDSMOVAX、0MOVDS、AXLEADX、INTPROCMOVDS:[15H*4]、DXMOVDX、SEGINTPROCMOVDS:[15H*4+2]、DXPOPDS
详谈实现分页的基本原理以及如何探测物理内存
分页的基本原理要实现精细化的内存管理,分页的实现是关键。这使我们能够管理物理和虚拟内存,从而实现并行多任务计算。
保护模式下的支付必须描述多次。
逻辑地址转换为线性地址后,如果没有分页,则直接指向物理地址,如果有分页,则需要分页机制进行转换。
转换后的线性地址分为三段:通过分页机制将线性地址转换为物理地址的过程如下:【文章福利】小编推荐他的Linux内核源码交流群:[869634926],并编译有些我认为是最好的。
前50人进群领取,将额外获得价值600元的基础资料包(含视频教程、电子书、动手项目和代码)!学习快车:Linux内核源码/内存调优/文件系统/进程管理/设备驱动/网络协议栈以上关键字解释如下:页框:4k字节连续物理地址的内存的单位页目录表:32-位页表条目列表,大小4K字节,包含1024个条目在pages目录中页表:包含1024个页表项:用于加载页框,大小4字节,页表项可能包含页框,也可能不包含。
如果页框不存在,则如下:存在位为0,表示页表中的条目无效。
当CPU访问这个页表项时,就会触发页错误中断,必须在这里加载相应的页。
页错误中断需要使用CR2控制寄存器页框:大小为4字节,其中高24位为页框地址,低12位为页框属性描述字段。
PageFrameAddress:页框的地址,即物理地址。
这个数据结构非常重要。
它反映了实际物理地址在虚拟地址中的情况。
分页的本质是虚拟化,实现了逻辑地址到物理地址的转换,使内存的使用更加灵活、精细。
通过虚拟化,进程拥有更大的虚拟内存空间,根据请求使用物理内存。
执行时间。
至于记忆,尽量用自己的方式来解释,如有不准确之处还请见谅。
要启用分页功能,需要具备以下硬件:以上是分页实现的基本原理,但分页实现并不是那么简单。
后续章节将介绍如何通过代码实现分页。
下面的文章将分以下几个步骤分别进行讲解:检测物理内存上面我们介绍了保护模式下页面的基本原理,现在我们来看看在实际中是如何实现的。
要具体实现分页,首先要了解物理内存的大小,然后才能进行分页。
首先看一下实际的内存视图:Bootloader由BIOS在物理地址0x7c00处加载,内核代码由Bootloader在物理地址0x100000处加载,Bootloader中使用int15中断检测到物理内存。
BIOS的,然后写入物理地址0x8000的数据随后被内核用来创建物理页管理系统——页目录表、页表、物理分页分配收集器。
发现物理内存需要其他东西。
物理内存的检测是在内核加载之前完成的,而内存的支付是在内核加载之后完成的,所以这里有一个小问题检测到的物理内存信息与使用时略有不同,因为检测到的物理内存是分类。
在bootloader中,必须使用BIOS中断函数来实现内存检测。
BIOS是一个基于ROM的程序,在加电后启动。
内存获取是在实模式下,在bootloader中它就像一栋建筑,从下往上,这一点在这里体现得淋漓尽致。
通过BIOS中断获取内存,可调用参数为e820h的INT15hBIOS中断。
BIOS通过系统内存映射地址描述符(AddressRangeDescriptor)格式来表示系统的物理内存表示,具体表示如下:ValuesforSystemMemo详细中断调用参数ryMapaddresstypeINT15hBIOS:该中断的返回值为:通过调用INT15hBIOS中断,增加di的值(20的倍数),让BIOS帮我们找将内存布局条目一一放入到描述符结构体缓冲区中保存的地址串中,供后续内核代码进一步进行物理内存管理的一步步进行。
以上来自清华大学讲座实验笔记:我认为很清楚objectkuan.gitbooks.io/ 物理检测代码:以上代码正常执行后。
从BIOS存储在地址0x8000处,根据structe820map设置填充structe820map获取的内存分配信息。
这条信息将在loader引导内核后被内核的page_init函数用来基于structe820map的memmap(起始地址定义为0x8000)完成一般机器范围的物理内存管理。
通过运行代码,我们可以看到实际的物理如下:有了具体的物理内存地址,我们就可以分配这些内存,然后对其进行管理。
如何使用这条信息其实在操作系统代码中,有很多地方是直接操作物理地址或者逻辑地址的?其实这是通过将约定的物理地址信息的起始地址强制转换成e820map结构体的指针类型来完成的,然后通过指针就可以使用物理地址信息了。
好文章推荐:浅谈ARM64Linux内核页表块图KernelMaster从Linux进程的角度教你如何使用DockerLinux下的CAN总线?探讨Linux内存管理的前世今生,深入剖析Linuxsockets数据传递过程
8088CPU具有哪些中断类型?各种中断如何产生,如何得到中断向量号?
8088CPU有256种中断类型,其中0-31为保留中断向量,32-255为可用中断向量。
以下是一些常见的中断类型:
0:溢出中断
1:单级中断
2:不可屏蔽中断
3:切点中断
4:溢出中断
5:边界中断
6:无效操作码中断
7:无处理器中断
8:双故障中断
9:处理器单元过载中断
10:无法加载计算机处理器
11:协处理器错误中断12-15:保留中断
中断可以由硬件或软件产生。
硬件中断由时钟、键盘、鼠标等外部设备发出。
软件中断是由程序中的中断指令(如INT)产生的。
当中断发生时,CPU停止当前的应用程序并保存当前的程序状态。
然后CPU根据中断类型找到对应的中断处理程序(中断向量)并跳转到中断处理程序执行。
中断处理程序保存寄存器和状态,然后执行中断服务程序,最后恢复保存的状态并返回到原始程序。
中断向量号是用于标识每种中断类型的唯一标识符。
在8088CPU中,中断向量的编号存储在中断向量表(InterruptVectorTable,IVT)中,该表位于内存地址0000:0000H到0000:03FFH。
为了获得中断向量号,CPU从IVT读取中断向量。
中断向量表包含每个中断类型的中断处理程序的入口地址。
例如,中断向量0的控制器入口地址在IVT中设置为0000H。
如果中断类型0被触发,则CPU从该位置读取中断处理程序的入口地址,并跳转到该地址并执行相应的中断处理程序。