社区
汇编语言
帖子详情
为什么在调用中断前,要给ah赋个值?
kyq9
2004-07-08 09:06:08
例如
mov al,1ch
mov ah,25h
int 21h
不明白为什么啊?
...全文
282
8
打赏
收藏
为什么在调用中断前,要给ah赋个值?
例如 mov al,1ch mov ah,25h int 21h 不明白为什么啊?
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用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的值是入口参数,就像我们调用函数的参数一样,只是传递的方式不同
汇编 DOS的
中断
调用
INT 21H
DOS系统功能
调用
这个汇编指令是用于提供DOS系统功能
调用
。它是由DOS提供的一组实现特殊功能的子程序供程序员在编写自己的程序时
调用
,以减轻编程的工作量。 分两种,DOS系统功能
调用
和BIOS
中断
调用
。 链接里都是一些常用的内容,大家可以自己去百度,一定比我这里给出的全面很多,有那种DOS系统功能
调用
表。
调用
步骤大致 (1)系统功能号送到寄存器
AH
中; (2)入口参数送到指定的寄存器中; (3)
MOV
AH
,XXH INT XXH——BIOS
中断
和DOS
中断
BIOS在系统板ROM里存放着一套程序容量8KB,地址从FE000H开始 感兴趣可以一直查看 一直到3F 但看ASC码是字符显示,推测并不是程序而是字符 就这里有字符,往后一直是0 BIOS主要内容 硬件系统的检测和初始化程序 外部
中断
和内部
中断
的
中断
例程 用于对硬件设备进行I/O操作的
中断
例程 其他和硬件系统相关的
中断
例程 使用BIOS功能
调用
,程序员不用了解硬件的操作细...
键盘I/O
中断
调用
(INT 16H)和常见的int 17H、int 1A H
键盘I/O
中断
调用
有三个功能,功能号为0, 1, 2,且必须把功能号放在
AH
中。 (1)0号功能
调用
格式:MOV
AH
, 0 INT 16H 功能:从键盘读入字符送AL寄存器。执行时,等待键盘输入,一旦输入,字符的ASCII码放入AL中。若AL=0,则
AH
为输入的扩展码。 (2)1号功能
调用
格式:MOV
AH
, 01H INT 16H 功能:用来查询键盘缓冲区,对键盘扫描但不等待,并设置...
ah
=02h和
ah
=09h
ah
= 02h是输出单个字符,而
ah
= 09h是输出以‘$’结尾的字符串 例子: data segment buf db 'a' buffer db 'Hello$' data ends code segment assume ds:data,cs:code start: mov ax,data mov ds,ax mov dl,buf mov
ah
,02
DOS
中断
0
Ah
号功能学习
0
Ah
号功能 是 DOS 系统提供的 字符串输入功能
调用
,通过 INT 21H
中断
实现,用于从键盘接收一串字符并存入内存缓冲区。
汇编语言
21,500
社区成员
41,619
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章