MENU

「8088/8086系统功能调用」

2021 年 04 月 19 日 • 8086

BIOS

  • 驻留在 ROM 中的基本输入输出系统
  • 加电自检,装入引导,I/O 设备处理程序及接口控制

DOS

  • 磁盘操作系统
  • 是今天操作系统的前身,嵌入到 Windows 中的 CMD

BIOS/DOS 中包含着若干个系统内核功能子程序,供编程者调用
BIOS/DOS 功能均通过 BIOS 中断 DOS 中断的方式来调用
BIOS 中断 DOS 中断都会影响 AX寄存器

调用原理

  • DOS 中断通过 INT 21H来进行软件中断
  • DOS 中断中包含了 设备管理 目录管理 文件管理
  • 具体调用目标,通过 AH寄存器存放的功能号来进行区分

调用过程

  • 将调用参数装入指定寄存器
  • 将功能号装入 AH寄存器
  • 通过INT 21H调用 DOS 中断
  • 检查返回值是否正确

单字符输入

  • MOV AH,01H将单字符输入的功能号 01H放入AH
  • INT 21H通过中断调用 DOS 系统程序集
  • 通过键盘输入一个字符
  • AL负责存放刚刚输入的一个字符

字符串输入

  • 输入字符串缓冲区的定义

    • 第一个字节,用来存放预定字符个数,最多 255
    • 第二个字节,用来存放返回的实际输入的字符个数
    • 从第三个字节开始,存放输入的字符串
    • 末尾的一个字节,用来存放回车键字符
  • 字符串必须在 DS段,将字符串的逻辑地址,存放到 DX
  • MOV AH,0AH将字符串输入的功能号 0AH放入AH
  • INT 21H通过中断调用 DOS 系统程序集
  • 通过键盘输入一串字符,回车键结束输入

单字符输出

  • 将要输出的字符的 ASCII 码送给 DL
  • MOV AH,02H将单字符输出的功能号 02H放入 AH
  • INT 21H通过中断调用 DOS 系统程序集
  • 屏幕上就会显示刚刚送给 DL的 ASCII 码

字符串输出

  • 输出字符串缓冲区的定义

    • 输出的字符串,必须要以$作为字符串的结尾
    • 只能输出可视的 ASCII 码
    • 如果考虑格式的需要,需要在字符串末尾的$前面加上回车符和换行符
  • 字符串必须在 DS段,将字符串的逻辑地址,存放到 DX
  • MOV AH,09H将字符串输入的功能号 09H放入AH
  • INT 21H通过中断调用 DOS 系统程序集
  • 屏幕上就会显示刚刚 DS:DX缓冲区中的字符串

返回操作系统

  • 这条指令是保证在调用系统功能以后,可以正常返回操作系统
  • MOV AH,4CH将单字符输出的功能号4CH放入AH
  • INT 21H通过中断调用 DOS 系统程序集