. : : 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