🎓 微机原理考点专栏(通篇免费)
欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。
为什么选择我的视频?
- 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
- 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。
🔗 点击这里观看我的视频讲解 🔗
我需要你的支持
我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!
🙏 感谢你的支持!祝你学有所成! 🙏
了解 INT 21H 系统中断的作用,解释不同功能号对应的服务内容,如显示字符串、输入字符串和退出程序。
中断调用与系统服务
1. INT 21H 指令简介
- 作用:调用 DOS 系统中断 21H,实现多种系统服务,如显示字符串、输入字符串、文件操作和程序退出等。
- 机制:
- 在调用 INT 21H 前,需要将 AH 寄存器设置为对应服务功能号,不同功能号对应不同服务。
- 其他寄存器(如 DX、AL 等)存放具体的参数或数据地址。
2. 显示字符串
- 功能号:AH = 09H
- 要求:
- 字符串必须以特殊字符“$ ”结束,DOS 根据“ $”判断字符串终止。
- DX 寄存器中存放字符串的首地址。
- 示例:
MOV AH, 09H ; 设置功能号 09H,显示字符串
MOV DX, OFFSET MSG ; MSG 为以 $ 结束的字符串
INT 21H ; 调用中断 21H,显示字符串
- 讲解要点:
- 在数据段中,可以定义:
MSG DB 'Hello, DOS!', '$'
。 - 调用 INT 21H 后,DOS 会将字符串输出到屏幕上。
- 在数据段中,可以定义:
为什么使用 **<font style="color:#DF2A3F;background-color:#FBF5CB;">DX</font>**
寄存器?
- 在汇编语言中,寄存器的用途是约定好的。对于中断
21H
的功能号09H
,它要求:AX
寄存器存储功能号(这里是09H
)。DX
寄存器存储字符串的偏移地址(即字符串的内存地址)。
- 这是中断服务程序(DOS 提供的中断)的约定,
DX
是专门用来传递字符串地址的。
3. 输入字符串
- 功能号:AH = 0AH
- 要求:
- 使用一个特定格式的缓冲区,缓冲区第一字节存放最大输入字符数,第二字节存放实际输入字符数,后续空间用于存放输入的字符。
- DX 寄存器中存放缓冲区的首地址。
- 示例:
MOV AH, 0AH ; 设置功能号 0AH,输入字符串
MOV DX, OFFSET BUF ; BUF 为输入缓冲区的首地址
INT 21H ; 调用中断 21H,等待用户输入字符串
- 讲解要点:
- 缓冲区的定义示例:
BUF DB 20, ?, 20 DUP(0)
其中 20 表示允许输入最多 20 个字符,“?” 表示实际输入字符数(初始时未知),后面预留 20 个字节用于存储输入字符。
- 输入结束后,缓冲区中会自动保存用户输入的数据。
4. 程序退出
- 功能号:AH = 4CH
- 用途:
- 通过调用 INT 21H 以功能号 4CH 结束程序,返回操作系统控制权。
- 示例:
MOV AH, 4CH ; 设置功能号 4CH,退出程序
INT 21H ; 调用中断 21H,结束程序
综合实例
示例程序:字符串显示和输入
DATA SEGMENT
MSG DB '请输入一段文字:$' ; 提示信息,$为结束标志
BUF DB 20, ?, 20 DUP(0) ; 输入缓冲区:最大输入20个字符,?用于存储实际输入字符数
CRLF DB 13,10,'$' ; 回车换行字符串
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
; 初始化数据段
MOV AX, DATA
MOV DS, AX
; 显示提示信息
MOV AH, 09H
MOV DX, OFFSET MSG
INT 21H
; 调用输入字符串服务
MOV AH, 0AH
MOV DX, OFFSET BUF
INT 21H
; 显示回车换行(可选)
MOV AH, 09H
MOV DX, OFFSET CRLF
INT 21H
; 程序退出
MOV AH, 4CH
INT 21H
CODE ENDS
END START
- 要点:
- 通过定义 MSG 和 BUF,展示了如何用数据段中定义字符串和输入缓冲区。
- 使用 INT 21H 的不同功能号分别实现显示字符串(09H)和输入字符串(0AH)。
- 最后通过功能号 4CH 正常退出程序。
获取方式(讲义+视频)
# 获取方式:直接运行程序即可在控制台输出指定文字
print("微信小程序:知选星球")
print("里面含完整讲义和教学视频")