几个端口和中断的问题
问题一:
为什么用debug读端口命令时对很多端口读得的结果都是DD?如
-i70
DD
-i80
DD
-i90
DD
-
而即使用写端口命令改变了端口的值,再读却还是DD?
-o70 0
-i70
DD
-
请高手指教这是为什么?难道不能对这些端口写吗?
问题二:
访问8位端口时用al传送数据,访问16位端口时用ax传送数据,
但是如果对于8位端口,用ax传送数据,或16位端口用al 传送数据,MASM编译器也能编译通过,
0B64:001D E460 IN AL,60
0B64:001F E560 IN AX,60
0B64:0021 E660 OUT 60,AL
0B64:0023 E760 OUT 60,AX
但是实际执行时会产生什么效果?
如以下指令分别会产生什么效果?
IN AX, B_PORT
IN AL, W_PORT
OUT B_PORT, AX
OUT W_PORT AL
请高手明示。
问题三:
当中断源向cpu发中断请求信号时,它置位保存着该状态直到该中断得到响应。
请问这个中断请求状态保存直到中断得到响应是指中断请求状态一直保存到中断处理程序的第一条指令开始执行之前还是保存到中断处理程序的最后一条返回语句执行之后,才把中断请求状态清除?
问题四:
INTO指令怎么用?和INT 4除了指令码(INTO:CE INT 4:CD04)不一样外还有什么区别?
问题点数:20、回复次数:4Top
1 楼demephy(襄王有梦)回复于 2005-11-21 18:34:09 得分 0
各位大哥麻烦给回答一下好吗?Top
2 楼demephy(襄王有梦)回复于 2005-11-21 19:13:54 得分 0
??????????????????Top
3 楼demephy(襄王有梦)回复于 2005-11-21 20:37:18 得分 0
mydo(坎道斯|Kinds)大哥帮忙给解释下,谢谢!Top
4 楼DoItFreely(Freely)回复于 2005-11-28 12:27:08 得分 20
一,由硬件决定,有些端口不连设备总是0xff,有些不是;如果该端口只读,写操作并不能改变它的值
二,即使你使用16位数据发送在数据总线了,但是端口只有8位,这不算错误,因为高8位没有数据线的内容不被端口接受 - 它只有8根线 - 丢了也没关系;至于是否有副作用,还是要看硬件是怎么设计的,如果接下来的地址中有8位可写端口,也许有副作用
三,CPU执行开始中断程序就是响应中断,此时请求中断的信号已经撤消了 - 在执行中断例程的第一条指针之前。考虑下面的情况,CPU叫硬盘控制器去读一块数据,当读到数据时因为正在运行OS内核某段程序,中断已经关闭(禁止中断),CPU此时不会响应它,知道再次允许中断时,CPU才会给pic一个ACK,然后查找并执行isr。硬件手册上有图,irq和ack各有一条线
四,用途不同。int0被硬性设计成单步中断,即执行一条指令,然后暂停。在不允许中断的时候,即flags的……为0时,该指令被忽略,不会暂停执行。int 4,不清楚,请查手册。Top




