为什么在调用中断前,要给ah赋个值?

kyq9 2004-07-08 09:06:08
例如
mov al,1ch
mov ah,25h
int 21h
不明白为什么啊?
...全文
241 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
fly4free 2004-07-15
  • 打赏
  • 举报
回复
这是硬件设计的问题。
IBM-PC在响应(恩……,查看?)中断时,是要根据AH的值,也就是相应电路端点的高低电平来判断是哪个功能。

dunkel(内心和夜 哪个黑)
“用户自己设计了一个中断功能组”,怎么设计?还不是基于硬件的设计。当然,硬件逻辑也可抽象到软件上面……,这样说的话,所有的问题不都是软件问题?哈哈
wangziz 2004-07-14
  • 打赏
  • 举报
回复
35h是取中断向量
snowegale888 2004-07-09
  • 打赏
  • 举报
回复
good
dunkel 2004-07-09
  • 打赏
  • 举报
回复
fanxero(方舟二号) 上面的说法不完全对吧. 调用中断, 这里的中断应该是软中断了, 象是 int10h, int21h 等等这样的. 这样的中断, 往往是能够完成许多功能的, 如何来区别用户要实现的是哪个功能呢, 就是通过 AH 来判断的, 这就是所谓的功能号了. 把功能号置于 AH 中, 这只是个约定俗成的做法, 不是 "硬件这样设计的". 如果是用户自己设计了一个中断功能组的话, 它完全可以把功能号放到其他的寄存器里, 当然这样的做法在大家都已经习惯了在 AH 里时, 是否恰当就是另外一回事了. 实际上, 有些时候情况可能还要复杂些, 就是一个功能里面, 还可能包含更细的子功能, 象是 int21h 的 AH=44h 功能组, int10h 的 AH=0Bh 功能组等等. 这时, 除了要将功能号置于 AH 中之外, 还需要设置子功能号, 这时的做法各个中断就不完全一致了, 有放在 AL 中的, 有在 BH 中的, ...
以功能的类别来理解中断调用的参数设置, 主要是寄存器值的设置, 这样比较有条例些, 也容易理解. 虽然也可以笼统地以函数调用的参数来看, 但可能就不如前面的那种方法直观了.
SDFDSAC 2004-07-09
  • 打赏
  • 举报
回复
int是dos系统功能调用
ah里放的是功能号,就是具体调用哪个功能
你上面的就是调用25号功能(设置中断向量)
al里放的是调用参数
fanxero 2004-07-08
  • 打赏
  • 举报
回复
在C语言中,假如你定义了一个函数void fun(int a),整型变量a就是函数fun的参数。参数是处理的对象。
汇编语言调用中断服务程序,也需要给它参数,放ah里的值就是传给中断服务程序的参数,对于同一个中断不同的参数值代表不同的处理。放ah里的值所代表意义不直观,没什么为什么,硬件这样设计的。为什么要放ah里是还是因为硬件的设计这样做,完全可以设计为放在其它寄存器里。
kyq9 2004-07-08
  • 打赏
  • 举报
回复
tankbattle(坦克大战) 老兄能讲的详细点吗?
tankbattle 2004-07-08
  • 打赏
  • 举报
回复
int21h是dos提供的一个软中断,已给用户提供通用的服务,就像win32api一样。ah的值是入口参数,就像我们调用函数的参数一样,只是传递的方式不同

21,497

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧