首页
/ x16-PRos操作系统API详解:中断驱动的系统调用指南

x16-PRos操作系统API详解:中断驱动的系统调用指南

2025-06-28 15:53:48作者:卓炯娓

概述

x16-PRos操作系统提供了一套基于中断的系统调用API,开发者可以通过特定的中断号访问三类核心功能模块。本文将深入解析这些API的使用方法、参数规范以及实现原理,帮助开发者充分利用操作系统的底层能力。

系统调用基础

在x16-PRos中,所有系统调用都遵循统一的调用规范:

  1. 通过INT指令触发特定中断(0x21/0x22/0x23)
  2. AH寄存器中指定功能号
  3. 其他寄存器用于传递输入/输出参数
  4. 错误时设置进位标志(CF)

1. 显示输出API (INT 0x21)

1.1 功能概览

显示输出API提供了文本显示和屏幕控制功能,支持16色VGA文本模式(640x480)。所有功能都通过INT 0x21调用。

1.2 核心功能详解

初始化显示系统 (AH=0x00)

MOV AH, 0x00
INT 0x21
  • 作用:设置VGA 640x480 16色文本模式
  • 技术细节:内部调用BIOS INT 0x10(AH=0x12)

彩色文本输出

系统提供多种预设颜色的文本输出功能:

  • 白色文本(AH=0x01)
  • 绿色文本(AH=0x02)
  • 青色文本(AH=0x03)
  • 红色文本(AH=0x04)

通用调用格式:

MOV AH, 颜色功能号  ; 0x01-0x04
MOV SI, 字符串地址
INT 0x21

动态颜色设置

; 设置后续文本颜色
MOV AH, 0x07
MOV BL, 颜色代码  ; 0x00-0x0F
INT 0x21

; 使用当前颜色输出
MOV AH, 0x08
MOV SI, 字符串地址
INT 0x21

其他显示控制

  • 换行(AH=0x05)
  • 清屏(AH=0x06)

1.3 VGA颜色代码表

代码 颜色 代码 颜色
0x00 黑色 0x08 深灰色
0x01 深蓝色 0x09 蓝色
0x02 深绿色 0x0A 绿色
0x03 深青色 0x0B 青色
0x04 深红色 0x0C 红色
0x05 深洋红色 0x0D 洋红色
0x06 棕色 0x0E 黄色
0x07 浅灰色 0x0F 白色

2. 文件系统API (INT 0x22)

2.1 功能概览

文件系统API提供FAT12文件系统操作能力,支持1.44MB软盘的标准操作。所有文件名需使用8.3格式(如"README.TXT")。

2.2 核心功能详解

初始化文件系统 (AH=0x00)

MOV AH, 0x00
INT 0x22
  • 作用:重置软盘控制器
  • 错误处理:CF=1表示失败

文件列表获取 (AH=0x01)

MOV AH, 0x01
MOV AX, 缓冲区地址
INT 0x22
; 返回:
; BX:CX = 总文件大小(32位)
; DX = 文件数量
  • 输出格式:逗号分隔的文件名字符串
  • 技术细节:读取根目录区(扇区19-32)

文件加载 (AH=0x02)

MOV AH, 0x02
MOV AX, 文件名地址
MOV CX, 内存地址
INT 0x22
; 返回:
; BX = 文件大小
  • 错误处理:文件不存在时CF=1

文件写入 (AH=0x03)

MOV AH, 0x03
MOV AX, 文件名地址
MOV BX, 数据缓冲区
MOV CX, 数据长度
INT 0x22
  • 特点:自动创建新文件或覆盖已有文件

其他文件操作

  • 文件存在检查(AH=0x04)
  • 创建空文件(AH=0x05)
  • 删除文件(AH=0x06)
  • 重命名文件(AH=0x07)
  • 获取文件大小(AH=0x08)

3. 字符串与系统API (INT 0x23)

3.1 功能概览

提供字符串处理、输入输出、系统信息等实用功能。

3.2 核心功能详解

字符串处理

  • 获取长度(AH=0x01)
  • 转大写(AH=0x02)
  • 字符串复制(AH=0x03)
  • 去除空格(AH=0x04)
  • 字符串比较(AH=0x05/AH=0x06)
  • 字符串分割(AH=0x07)

输入输出

; 键盘输入
MOV AH, 0x08
MOV AX, 缓冲区地址
INT 0x23
  • 特性:支持退格编辑,最大255字符

系统信息

  • 获取时间字符串(AH=0x0A, 格式"HH:MM:SS")
  • 获取日期字符串(AH=0x0B, 可配置格式)
  • 获取光标位置(AH=0x0E)

数据转换

  • BCD转整数(AH=0x0C)
  • 整数转字符串(AH=0x0D)

最佳实践建议

  1. 寄存器保护:除明确说明外,大多数API都会保护未使用的寄存器
  2. 错误处理:重要操作后应检查CF标志
  3. 性能考虑:频繁的文件操作应考虑批量处理
  4. 内存管理:字符串操作需确保缓冲区足够大

通过合理利用这些系统API,开发者可以快速构建基于x16-PRos操作系统的应用程序,无需关心底层硬件细节。

登录后查看全文
热门项目推荐

项目优选

收起
openHiTLS-examplesopenHiTLS-examples
本仓将为广大高校开发者提供开源实践和创新开发平台,收集和展示openHiTLS示例代码及创新应用,欢迎大家投稿,让全世界看到您的精巧密码实现设计,也让更多人通过您的优秀成果,理解、喜爱上密码技术。
C
47
253
openHiTLSopenHiTLS
旨在打造算法先进、性能卓越、高效敏捷、安全可靠的密码套件,通过轻量级、可剪裁的软件技术架构满足各行业不同场景的多样化要求,让密码技术应用更简单,同时探索后量子等先进算法创新实践,构建密码前沿技术底座!
C
347
381
RuoYi-Vue3RuoYi-Vue3
🎉 (RuoYi)官方仓库 基于SpringBoot,Spring Security,JWT,Vue3 & Vite、Element Plus 的前后端分离权限管理系统
Vue
871
516
ohos_react_nativeohos_react_native
React Native鸿蒙化仓库
C++
179
263
openGauss-serveropenGauss-server
openGauss kernel ~ openGauss is an open source relational database management system
C++
131
184
kernelkernel
deepin linux kernel
C
22
5
nop-entropynop-entropy
Nop Platform 2.0是基于可逆计算理论实现的采用面向语言编程范式的新一代低代码开发平台,包含基于全新原理从零开始研发的GraphQL引擎、ORM引擎、工作流引擎、报表引擎、规则引擎、批处理引引擎等完整设计。nop-entropy是它的后端部分,采用java语言实现,可选择集成Spring框架或者Quarkus框架。中小企业可以免费商用
Java
7
0
Cangjie-ExamplesCangjie-Examples
本仓将收集和展示高质量的仓颉示例代码,欢迎大家投稿,让全世界看到您的妙趣设计,也让更多人通过您的编码理解和喜爱仓颉语言。
Cangjie
335
1.09 K
harmony-utilsharmony-utils
harmony-utils 一款功能丰富且极易上手的HarmonyOS工具库,借助众多实用工具类,致力于助力开发者迅速构建鸿蒙应用。其封装的工具涵盖了APP、设备、屏幕、授权、通知、线程间通信、弹框、吐司、生物认证、用户首选项、拍照、相册、扫码、文件、日志,异常捕获、字符、字符串、数字、集合、日期、随机、base64、加密、解密、JSON等一系列的功能和操作,能够满足各种不同的开发需求。
ArkTS
31
0
CangjieCommunityCangjieCommunity
为仓颉编程语言开发者打造活跃、开放、高质量的社区环境
Markdown
1.08 K
0