int 21h 指令是怎样影响al的值的?

时间:2022-08-13 00:57:57
汇编里输入输出经常用到 int 21h 指令,此指令会改变 al 的值,而且改变好像没有什么规律,
不知哪位高手能给解释一下它是怎样影响al的值的

12 个解决方案

#1


不同的功能返回的AL含义也不同。

#2


google搜索"int21"第一个结果是
http://www.uv.tietgen.dk/staff/mlha/PC/Prog/ASM/INT/21/index.htm

#3


int 21h 是根据ah的值完成不同的功能,如果ah是2,执行int 21h 后 al的值变成dl的内容,但是ah等于9执行int 21h 后al的内容变为 24h 不明白是什么原因

#4


友情UP

#5


中断后会调用对应中断号的服务程序,在中断服务程序中会使用ax而没有对ax进行现场保护,返回会改变,通常也把函数的返回值放到ax中

#6


没明白意思

#7


引用 3 楼 jiaoxun326 的回复:
int 21h 是根据ah的值完成不同的功能,如果ah是2,执行int 21h 后 al的值变成dl的内容,但是ah等于9执行int 21h 后al的内容变为 24h 不明白是什么原因

9号功能,int 21 后,因为字符串以"$"结尾。al会变成"$"对应的24h

#8


学习一下

#9


int执行只保存了Cs:ip和flag这三个寄存器,其它寄存器完全由中断处理程序决定如何处理,int 21是专门提供dos服务的,调用之前先用ah存放要调用服务的代码,并根据实际情况设置其它寄存器,中断返回时候跟根据结果设置各个寄存器,其中al一般代码返回代码。

#10


http://blog.csdn.net/chinazeze/archive/2007/08/10/1735621.aspx

#11


调用int 21h 之后,会返回一个值,这个值存放在AL中,没一个功能对应不同的返回值,这个返回值只是要告诉相关程序,这是调用了int 21h的什么功能所返回的。楼主没有必要去探究它。

#12


http://spike.scu.edu.au/~barry/interrupts.html
看这个表,AL是重要的返回值。具体调用不同AH的不同功能,AL的返回值定义是不同的。
24H是ASCII码'$'……估计用这个表示字符串是正确结尾的吧。

#1


不同的功能返回的AL含义也不同。

#2


google搜索"int21"第一个结果是
http://www.uv.tietgen.dk/staff/mlha/PC/Prog/ASM/INT/21/index.htm

#3


int 21h 是根据ah的值完成不同的功能,如果ah是2,执行int 21h 后 al的值变成dl的内容,但是ah等于9执行int 21h 后al的内容变为 24h 不明白是什么原因

#4


友情UP

#5


中断后会调用对应中断号的服务程序,在中断服务程序中会使用ax而没有对ax进行现场保护,返回会改变,通常也把函数的返回值放到ax中

#6


没明白意思

#7


引用 3 楼 jiaoxun326 的回复:
int 21h 是根据ah的值完成不同的功能,如果ah是2,执行int 21h 后 al的值变成dl的内容,但是ah等于9执行int 21h 后al的内容变为 24h 不明白是什么原因

9号功能,int 21 后,因为字符串以"$"结尾。al会变成"$"对应的24h

#8


学习一下

#9


int执行只保存了Cs:ip和flag这三个寄存器,其它寄存器完全由中断处理程序决定如何处理,int 21是专门提供dos服务的,调用之前先用ah存放要调用服务的代码,并根据实际情况设置其它寄存器,中断返回时候跟根据结果设置各个寄存器,其中al一般代码返回代码。

#10


http://blog.csdn.net/chinazeze/archive/2007/08/10/1735621.aspx

#11


调用int 21h 之后,会返回一个值,这个值存放在AL中,没一个功能对应不同的返回值,这个返回值只是要告诉相关程序,这是调用了int 21h的什么功能所返回的。楼主没有必要去探究它。

#12


http://spike.scu.edu.au/~barry/interrupts.html
看这个表,AL是重要的返回值。具体调用不同AH的不同功能,AL的返回值定义是不同的。
24H是ASCII码'$'……估计用这个表示字符串是正确结尾的吧。