汇编中的各种中断有什么区别?

来源:百度知道 编辑:UC知道 时间:2024/07/07 05:56:06
mov al,02h
int 21h

mov al,09h
int 21h

mov al,4ch
int 21h

这些都有什么区别?

服务跳转,windows 内置的跳转指令。去看看汇编 Dos下的指令集!

mov al,02h
int 21h

mov al,09h ;是单个字符输出,可以以ASCII码输出

int 21h

mov al,4ch ;是字符串输出但是注意字符串要用$结束

int 21h

其实就是高级语言中的各种函数的区别
一部分int中断是系统和BIOS为了方便程序员编程而提供的一些子程序,主要是一些在编程中常用的过程,比如显示字符,文件操作,时间和日期等,这个和高级语言中的函数没什么区别

也有的INT比较特殊比如 INT 8 和 INT 9
INT 8 是时钟中断,每隔一段时间(具体的时间间隔可以用时钟芯片的端口设置)时钟芯片就会触发 INT 8 中断,CPU就会停止当前的任务去处理 INT 8 中断
INT 9 是键盘中断,按下和释放键盘上的按键都会触发这个中断,这个中断的主要任务是从和键盘相连的芯片端口读取键盘扫描码,并存入键盘缓冲区

你写的那几个中断都是调用的DOS提供的21H中断,在这个中断里al是用来选择功能的
很多中断都包含不止一个功能,这种情况就会使用ah来选择具体的第几号功能
有时候在调用之前还需要向其他的寄存器传递数据,那种情况有点类似高级语言的实参传递

写了好多.........
------------------------------------------
楼主你好像弄错了,是用AH选择功能吧?AL有时候是用来返回数据的
我还以为是我的手册错了,刚才试了一下,是AH

mov al,02h
int 21h
是单个字符输出,可以以ASCII码输出
mov al,09h
int 21h
是字符串输出但是注意字符串要用$结束
mov al,4ch
int 21h
返回DOS命令,code ends前面要加上它 不然要弹出遇到无效的指令的错误,不信你试试