【微机原理】程序设计题基础知识讲解——6、中断调用与系统服务

🎓 微机原理考点专栏(通篇免费)

欢迎来到我的微机原理专栏!我将帮助你在最短时间内掌握微机原理的核心内容,为你的考研或期末考试保驾护航。

为什么选择我的视频?

  • 全程考点讲解:每一节视频都紧扣考试要点,拒绝冗余,专注于最关键的知识点。
  • 系统且高效:我已经为你精心准备了系统的学习资料,让你不再迷茫。

🔗 点击这里观看我的视频讲解 🔗

我需要你的支持

我为这套视频投入了大量精力,希望它能对你的学习有所帮助。如果你觉得内容有用,请给我的视频点个赞、评论、并关注我,这将是我继续创作的最大动力!

🙏 感谢你的支持!祝你学有所成! 🙏


了解 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("里面含完整讲义和教学视频")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

命运之光

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值