1贴子主题 有关TF.doc_第1页
1贴子主题 有关TF.doc_第2页
1贴子主题 有关TF.doc_第3页
1贴子主题 有关TF.doc_第4页
1贴子主题 有关TF.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.贴子主题: 有关TF002xxx(2003/05/18 10:55am)关于TF标志位的设置和清除是由程序来做的,没有特定的指令可以完成。书上P464倒数第二段说在中断服务程序返回前TF位既不是1也不是0,当指令IRET执行时才把TF位改为新的值。我想问的是the new state是什么?是在从中断服务子程序返回时从堆栈中POP出的原来的FLAG原封不动的值,还是在返回的时刻又有新的中断来时,原来的FLAG不POP出来,而是再装入这个新的中断的FLAG标志? 后面的这一点也就是P463上面第三行的语句。 002yyy(2003/05/18 11:30am)我是这么想的,不知对不对:平时TF应该为“0”吧,否则不是单步执行方式了吗?TRON和TROFF是对堆栈中的flags的TF位执行的,但因书上example121,example122两个程序的末尾都是“IRET”所以会再把它返回给当前的flag register-进行中断时的flag register?我对意思是,设置TF位的状态是对于中断服务子程序来说的,如果你想单步执行你的中断服务子程序,那么进行TRON,否则TROFF。 qbxiong(2003/05/19 10:25am)两位充分利用书上的例子来获取更多实用技术的做法值得提倡。对于标志寄存器中的中断标志IF,设有专门的指令STI将其置位,专门的指令CLI将其复位;但是,却并没有类似的指令,可以直接地操纵标志寄存器中的陷阱标志TF。不过,这并不意味着就没有办法可以改变标志寄存器中T位的状态了;办法总比问题多:书上的例子是,因中断时标志寄存器自动地压入了堆栈,故可以在中断服务程序中,用BP间址找到标志寄存器存放的内存单元,并用OR指令将其中的对应于TF的第8位置位;这样,当IRET指令使堆栈中存放的原标志寄存器内容自动地弹回到CPU中去时,其中的TF已是新的状态“1”了。 以上是464页例12-1标号为TRON的中断服务程序。同一页例12-2标号为TROFF的中断服务程序,原理与之相同,不同的只是用AND指令将其中的第8位复位。推而广之,这种将CPU或I/O接口中的寄存器,先复制到内存中,在内存中改变其中的某些位,然后再复制回去,从而改变了CPU或I/O接口中寄存器的相应位的状态,不失为一种普适的做法。其实,在我们课本已经接触到的例子中,也还有这样的做法,只是没有如此明讲而已。哪位还能找到其它的例子吗?002xxx(2003/05/19 12:09pm)那么当从中断服务程序返回时,如果有新的中断打断它,此时FLAG还从堆栈中弹出来吗? 002yyy(2003/05/19 07:22pm)因为之前已经清了IF,所以此时应该不会响应新的中断(我认为这里处于p462最下端的第二步)。 2.贴子主题: 书474页图1213关于用缓冲器扩充中断结构的方法有个疑问002zzz(2003/05/17 12:43pm)器件74ALS244为什么八个端口不各接一个IR引脚,这样不就可以扩充到8个,而书中是拿一个通过上拉电阻接电源,这样不就少接一个IR了吗?它有什么特殊的作用吗? qbxiong(2003/05/17 05:00pm)问得好。请再读一下474页最后那个自然段。002uuu(2003/05/17 09:35pm)我有同样的问题,而且最后一个自然段的说明我没有看明白.书上说“如果两个或者更多的中断请求连续发生,那么就产生一个新的中断向量.当/IR0,/IR1同时发出中断请求那么FCH为新的中断向量号,而且若/IR0收到的中断优先级比较高的话那么这个新的地址FCH就作为为/IR0的中断向量地址”我的问题是下一句,为什么说“the entire top half of the vector table and its interrupt vectors must be used to accommodate all possible conditions of theses seven interrupt request inputs”它这里的128个向量是由这7个中断输入组合形成的吗?就这道例题而言,它的中断向量表应该是怎样的?而且我想不出这种处理多个中断输入的方式有什么效率可言.qbxiong(2003/05/18 09:36am)讨论已渐入佳境,002uuu已注意到“the entire top half of the vector table”的问题。还请注意,002zzz首问中的“书中是拿一个通过上拉电阻接电源”,这“一个”,从图中看是D7,决非偶然。大家不妨翻回课本第459页,看一下倒数第2个自然段,也就是“Interrupt Vectors”小节中的第2段,或许能悟出其中的道理了吧。002uuu看书很仔细,有意义的词都不放过,这是值得提倡的学习精神,问到的“效率”,可能是指474页最后那个自然段中的“cost-effective”吧,那是节省成本的意思,英文文献中也经常出现。002xxx(2003/05/18 10:18am)the entire top half of the vector table and its interrupt vectors 是指从中断矢量号为80H-0FFH的这128个中断矢量。它刚好是the vector table 的上一半。这就是为什么D7接1的原因所在了,D7为1则限制了这个电路所产生的中断至少得从80H开始。这个D7接1不是偶然的,因为只有前32个中断向量是被reserved by Intel.后面的244个才是user interrupt vectors.故只有D7接上拉电阻,使其为1,保证中断矢量号从31H以上的80H开始。002zzz(2003/05/20 04:49pm)谢谢大家,我知道了,原来它这样接个上拉电阻,是为了使这里的中断向量号在USER INTRERRUPT的允许范围内。3.贴子主题: 书上478页图不懂之处002vvv(2003/05/13 02:00pm)图中A1为何如此连呢?002www(2003/05/13 10:34pm)你注意到了吗?一个8259A的两个端口之间相差2,所以要用A1连,而不能用A0 002ppp(2003/05/14 10:43pm)不过想问一下,为什么书上很多的例子的端口号都要两个两个隔开的?有什么道理吗 qbxiong(2003/05/15 04:04pm)有道理。 请回顾pp.395-397的标题为“8- And 16-Bit I/O Ports”的那一小节。看395页图11-13,设想将8259A的8根数据引脚接数据总线的D7-D0,比较自然的做法就是将这片8259A要用的2个端口地址,安排为连续的偶地址。 再回到476页,看倒数第3个自然段关于8259A的“D7-D0”的描述,可以理解其道理了吧。002zzz(2003/05/16 03:23pm)对,因为数据线的缘故,16位有两个bank,所以到底用哪个bank呢,这个就可以通过地址线A0来设置qbxiong(2003/05/17 11:11am)注意到002zzz在新辟的“是否A00时,8位IO端口一定接的是D0到D7,难道不可以接D8到D15吗?”主题中提出:“我觉得,把数据线接到哪个bank是人为规定的吧,像我这样的想法不知道可不可以,还是机器默认的规则?”;讲到了bank,也就讲到了问题的实质。我想,可以在本主题中将此话题继续下去:478页的图12-16是把8259A的8根数据引脚接数据总线的D7-D0,所以将这片8259A要用的2个端口地址,安排为连续的偶地址;当然也可以人为安排把8259A的8根数据引脚接数据总线的D15-D8,那么,这片8259A的2个端口地址,就是连续的2个奇地址了。接下来的问题就是:若如此,图12-16又应作何改动呢?当然,书上没有给出图中16L8的编程,那其实是有关系的。002qqq(2003/05/17 08:59pm)不过为什么同样接d0到d7,484页图将A0接到8259A的A0了呢?002yyy(2003/05/17 09:06pm)我的maybe不成熟看法:484页的是cpu是8088,外部数据线是8位的,它只有一个体的002vvv(2003/05/17 09:12pm)因为484页这张图书上说“the 8259A is decoded at 8-bit I/O ports 48h and 49h。这两个端口地址只差一,所以接A0了 002qqq(2003/05/17 09:14pm)哦,应该是数据总线8位的缘故吧。002rrr(2003/05/19 12:16pm)本来我也想问的,现在看了明白了不少4.贴子主题: P469 FIGURE 12-8002sss(2003/05/10 12:51pm)为什么会有两个*INTA? 002ttt(2003/05/10 01:54pm)书上说 There are two *INTA pulses generated by the system that ae used to insert the vector type number on the data bus.而对于图上打*处,时序图下又有这么一句注释 This portion of the data bus is ignored and usually contains the vector number.这是否指系统响应中断请求时,通过*INTA在数据总线D7-D0上放上的有效的中断类型号是第二次*INTA 脉冲处的。这里很不好理解,其中有何道理吗?我也不明白为何有两处*INTA。哪位懂时序图的,帮忙解释一下啊!qbxiong(2003/05/10 02:45pm)下面引用由002ttt在 2003/05/10 01:54pm 发表的内容: 而对于图上打*处,时序图下又有这么一句注释 This portion of the data bus is ignored and usually contains the vector number.这是否指系统响应中断请求时,通过*INTA在数据总线D7-D0上放上的有效的中断类型号是第二次*INTA 脉冲处的。问得好;并且理解了这张图本身。 *INTA是微处理器发出的,微处理器的设计者这样设计,即中断响应周期中先后发两个*INTA,是考虑了级连(Cascade)的情况:第1级汇总多个第2级的中断请求给微处理器的INTR;响应的时候,微处理器用第1个*INTA告诉第1级,我已进入中断响应周期,然后第1级就可以去通知第2级中发出请求的那位,你可以在下面那个*INTA到来时,把自己的向量号放到数据总线上去;微处理器在这第2个*INTA期间采样数据总线,得到请求中断者的向量号。 但是,实际的系统中,也有中断源并不多,不用级连的情况,比如书上这第12-2节中所有的例子,看图就知道,在第1个和第2个*INTA到来时,都会有同样的向量号放上数据总线;当然,微处理器已设计为在第2个*INTA期间采样数据总线,对于第1个*INTA期间数据总线上的 向量号,就只能是ignore了。 002yyy(2003/05/11 09:17am)那么书上的这个图是不是不对的?应像ch12-1&2.pdf中slides20那样?002sss(2003/05/11 12:31pm)应该是的,谢谢。5. 贴子主题: P469 FIGURE 12-8汇集者注:此主题与4天前开始的上一主题(碰巧同名)问题一样,内容也重复,这种情况最好不要新开主题002aaa(2003/05/14 08:41pm)为什么有两个*INTA?002vvv(2003/05/14 09:43pm)这个好像老师讲过的,这是在cascade情况下,先传给master,再传给slave002www(2003/05/14 10:17pm)在一个8259A的情况下,第一个*INTA使得ISR的相应位置1,第二次时将相应中断号放到数据总线上。在级联模式下,作用相似,只不过是要通过三根cas将设备号传输到slave,第二次响应后由slave将中断号放到数据线上002bbb(2003/05/14 10:47pm)我想一楼问的是为什么图上会有两个/INTA的线吧,我也不懂,请赐教002ccc(2003/05/20 04:09pm)*LOCK又是什么东西?好象和第1个*INTA配合的很紧密嘛。 qbxiong(2003/05/20 09:15pm)问得好。 提示: 关于*LOCK,可以看教案ch09-1第31页的定义。不过,此处的*LOCK并非由带“LOCK:”前缀的指令引起,而是进入中断响应周期就自动变为有效,直到中断响应完毕(即向量号放上了数据总线)才撤去。 还有,*LOCK信号可以通过即将在13-3节讲的8289总线判优器起作用(见已在课程主页上发布的教案ch13-3第12页)。 大家知道*LOCK信号的作用了吧。 想一下:为什么在中断响应周期先后两个*INTA期间,要让*LOCK引脚变为有效呢?002ddd(2003/05/20 09:38pm)两个中断响应周期有严格的时序逻辑,如果在一个响应周期以后,总线被其它控制器占据,之后总线将失效,因为它并没有允许插入等待状态。不知道是不是这样?qbxiong(2003/05/20 10:05pm)讲得对,用*LOCK面向的就是多处理器系统,单处理器系统是用不着*LOCK的。 今天上课讲DMAC时已经讲到,若有请求,CPU是会在完成一个机器周期之后就放弃总线控制权的;而中断响应用了两个机器周期,每发一个*INTA就是一个机器周期;大家可以想一下:如果在这两个机器周期之间放弃了总线控制权,会发生什么情况呢?qbxiong(2003/05/21 04:30pm)下面引用由002bbb在 2003/05/14 10:47pm 发表的内容: 我想一楼问的是为什么图上会有两个/INTA的线吧,我也不懂,请赐教 正确的图见教案ch12-1&2第20页。002uuu(2003/05/21 06:24pm)再多罗嗦一句问一个问题,多个8259A级联,如书后的问题9个8259A形成64个中断入口,Master的CAS0-CAS2和Slave的CAS0-CAS2是如何连接的呢?我的方式是通过三个八个引脚的NAND gate连接其他8个8259A的对应位置,因为没有经验,不知道这么处理是否妥当.002www(2003/05/21 06:37pm)让master的cas2-cas0直接分别连到各个slave就可以了吧,我觉得似乎没必要用与门。002qqq(2003/05/21 09:26pm)同意楼上的说法,直接相连即可qbxiong(2003/05/21 09:53pm)下面引用由002uuu在 2003/05/21 06:24pm 发表的内容: 再多罗嗦一句问一个问题,多个8259A级联,如书后的问题9个8259A形成64个中断入口,Master的CAS0-CAS2和Slave的CAS0-CAS2是如何连接的呢? 确实应该问,并非“罗嗦”。 可看教案ch12-3to5第19页的图和20-21页的说明;注意CAS0-CAS2也被称为一种“bus”。002uuu(2003/05/22 11:49am)大概有些明白这个cascade bus 的意思了,CAS0-CAS2一共3条线,若是对所有的slave进行内部操作,作为具体某一个slave的内部地址可以通过这三条线选通,这样就和总线的形式很像了,我想总线的意思就是这样吧.qbxiong(2003/05/22 03:38pm)对。 这种拓扑,是教案ch01_Bus第17页讲的“合用线”的一个子类,特点是“不对称”:只有一个Master,只能由它发,其它都是Slave,并且都只能收,曾有人将这种拓扑称为“Multidrop”。 6.贴子主题: P476 EXAMPLE 12-7002eee(2003/05/10 02:48pm)想问一下LEVEL_1,LEVEL_2,LEVEL_3 分别是什么,跳转到它们所指的地方在哪里?程序中没有标出来啊?qbxiong(2003/05/10 03:18pm)LEVEL_0是为第1片82C55端口B中断请求服务的中断服务程序的入口;LEVEL_1是为第1片82C55端口A中断请求服务的中断服务程序的入口;LEVEL_2是为第2片82C55端口B中断请求服务的中断服务程序的入口;LEVEL_3是为第2片82C55端口A中断请求服务的中断服务程序的入口。 7.贴子主题: 书本的487的修改和问题?002fff(2003/05/15 12:18pm)P489的Example-12-3 的代码倒数第四行的 OUT 49H,AL 应改为 OUT 48H,AL 问题为: 这条指令使8259产生哪些信号? 002zzz(2003/05/16 01:41pm)我觉得就是书中所说的产生8259A的EOI信号,你可以看看书中关于OCW2的定义 8.贴子主题: 课本的P473上的EXAMPLE12-6中的汇编代码的倒数第3行的INC对吗?002ccc(2003/05/17 09:30am)课本的P473上的EXAMPLE12-6中的汇编代码的倒数第3行的INC对吗? 是否应改成DEC 002ppp(2003/05/18 08:19am)INC应该是对的吧.OUTP是队列的头指针,移动头指针使数据出队列.在P472里的Code的0121行是移动INP,也就是队列的尾指针使数据入队列.用的也是INC,只要头指针和尾指针移动方向一样就会构成队列的.比如INP和OUTP开始都指向0,然后a,b,c,d入了队列,INP就指向4,OUTP还是0,这时候OUTP加1指向1的话,a就出队列了. 9.贴子主题:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论