. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
外中断
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
关于端口读取的问题
[已解决]
回复[
4
次 ] 点击[
394
次 ]
lamapig
[帖 主]
[ 发表时间:2010-03-12 22:14 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:2
注册日期:2010-03-10 12:02
第15章的实验,有个问题,指令是这样的:
IN AL,60H
CALL DWORD PTR DS:[0]
CMP AL,1
这里有个疑问,从端口读取按键数据后,调用DS:[0]处的程序,然后再把AL的值和ESC的通码比较看是否按下了ESC键。那么,程序如何保证一定能读到60端口的数据呢?假如程序执行到读取端口时,我没按键,而指令执行过后我才按键,那么这个程序还能正常工作吗?
还有,调用完其他程序后,AL的值不变吗??受到保护?
再有,调用原来的INT 9H后,60H端口的数据和没调用之前比变化了吗?如果端口的数据没有被读取走,在案件会被覆盖吧??
请高手指点迷津,多谢!!!
mgf1988629
[第
1
楼]
[ 回复时间:2010-03-13 22:22 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:14
信誉值:2
注册日期:2009-11-30 11:46
不知道阁下本章完没有!
反正我是按照书上做不出来!
我是:
1.将原中断int9入口地址保存起来
2.cli
3.设置中断向量表
4.sti
5.调用时间延时程序(call)
6.恢复原中断入口地址
7.程序返回
8.延时程序
9.中断例程
我认为本程序同时做了两件事:其一当在延时程序时它不能瞬间就完成
其二你按键盘时发生中断过程,执行中断例程,如果不是那个键就返回(iret)到延时程序执行到哪里就返回到哪里,如果是那个键就显示后才返回!
lamapig
[第
2
楼]
[ 回复时间:2010-03-15 15:05 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:2
注册日期:2010-03-10 12:02
明白了,谢谢提醒,这问题问的好愚蠢,呵呵
lamapig
[第
3
楼]
[ 回复时间:2010-03-15 15:14 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:2
注册日期:2010-03-10 12:02
还有个疑问,如果此段改为
IN AL,60H
CMP AL,1
CALL DWORD PTR DS:[0]
这样可以吗???
lamapig
[第
4
楼]
[ 回复时间:2010-03-23 23:32 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:0
信誉值:2
注册日期:2010-03-10 12:02
此贴由 贴主 于 [ 2010-03-23 23:32 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(mgf1988629):6分
此问题已结贴!
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved