. : : Assembly Language : : .
|
首页
|
我提出的问题
|
我参与的问题
|
我的收藏
|
消息中心
|
游客 登录
|
刷新
|
提问
|
未解决
|
已解决
|
精华区
|
搜索
|
《汇编语言》论坛
->
使用BIOS进行键盘输入和磁盘读写
管理员:
assembly
[
回复本贴
]
[
收藏本贴
] [
管理本贴
] [
关闭窗口
]
主题 : :
提一个关于int16编程"线程安全"的问题
[已解决]
回复[
3
次 ] 点击[
361
次 ]
ln_ydc
[帖 主]
[ 发表时间:2012-03-11 02:37 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:14
信誉值:10
注册日期:2010-03-02 17:00
如下代码:
mov ah, 0
int 16h
cmp al, 'q'
jne func1
quit:
mov ax, 4c00h
int 21h
func1:
push ax
mov al, 'a'
.... ;(1)
pop ax
jmp short quit
疑问:
假设在调用int16h的0号功能的时候,键盘缓冲区为空
在代码执行到(1)处,此时输入q,
此时al是多少呢,'q','a',还是其它
若(1)处代码中含有关于al的决断或逻辑什么的
不就影响整个程序的运行结果了么?
tomato
[第
1
楼]
[ 回复时间:2012-03-12 23:52 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:405
信誉值:0
注册日期:2008-01-19 14:51
如果发生中断,如果响应,则当前指令将不会继续执行。dos系统是单线程的,不存在线程安全的问题。
ln_ydc
[第
2
楼]
[ 回复时间:2012-03-13 09:10 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:14
信誉值:10
注册日期:2010-03-02 17:00
谢谢,debug了一下,确实是
ln_ydc
[第
3
楼]
[ 回复时间:2012-03-13 09:29 ]
[
引用
]
[
回复
]
[
top
]
荣誉值:14
信誉值:10
注册日期:2010-03-02 17:00
此贴由 贴主 于 [ 2012-03-13 09:29 ] 结贴。 结贴原因:问题已解决
得分情况: 1楼(tomato):4分
此问题已结贴!
Copyright © 2006-2024 ASMEDU.NET All Rights Reserved