• x01.os.1: BIOS 中断


    这只是一点准备工作。为了显示字符串,需要调用中断:int  0x10 (AH=0x13)。具体参数设置,参考我的归纳整理如下:

    INT 10 (AH = 0)

    -----------------
    功能:设置显示方式
    调用参数:
        AL = 00:40 * 25 黑白方式
             01:40 * 25 彩色方式
             02:80 * 25 黑白方式
             03:80 * 25 彩色方式
             04:320 * 200 彩色图形方式
             05:320 * 200 黑白图形方式
             06:640 * 200 黑白图形方式
             07:80 * 25 单色文本方式
             08:160 * 200 16色图形(PCjr)
             09:320 * 200 16色图形(PCjr)
             0A:640 * 200 16色图形(PCjr)
             0B:保留(EGA)
             0C:保留(EGA)
             0D:320 * 200 彩色图形(EGA)
             0E:640 * 200 彩色图形(EGA)
             0F:640 * 350 黑白图形(EGA)
             10:640 * 350 彩色图形(EGA)
             11:640 * 480 单色图形(EGA)
             12:640 * 480 16色图形(EGA)
             13:320 * 200 256色图形(EGA)
             40:80 * 30 彩色图形(CGE400)
             41:80 * 50 彩色图形(CGE400)
             42:640 * 400 彩色图形(CGE400)  
             
    INT 10 (AH = 1)
    ---------------
    功能:置光标类型
    调用参数:
        CH(0-3) = 光标起始行
        CL(0-3) = 光标结束行
        
    INT 10 (AH = 2)
    ----------------
    功能:置光标位置
    调用参数:
        BH = 页号
        DH,DL = 行,列
        
    INT 10 (AH = 3)
    ----------------
    功能:读光标位置
    调用参数:
        BH = 页号
    返回参数:
        CH = 光标起始行
        DH,DL = 行,列
        
    INT 10 (AH = 4)
    ----------------
    功能:读光笔位置
    返回参数:
        AH = 0:光笔未触发
             1:光笔触发
        CH = 像素行
        BX = 像素列
        DH = 字符行
        DL = 字符列
        
    INT 10 (AH = 5)
    ----------------
    功能:置显示页
    调用参数:
        AL = 页号
        
    INT 10 (AH = 6)
    ----------------
    功能:屏幕初始化或上卷
    调用参数:
        AL = 上卷行数
             0:整个窗口空白
        BH = 卷入行属性
        CH = 左上角行号
        CL = 左上角列号
        DH = 右下角行号
        DL = 右下角列号
        
    INT 10 (AH = 7)
    ---------------
    功能:屏幕初始化或下卷
    调用参数:
        AL = 下卷行数
             0:整个窗口空白
        BH = 卷入行属性
        CH = 左上角行号
        CL = 左上角列号
        DH = 右下角行号
        DL = 右下角列号
        
    INT 10 (AH = 8)
    ----------------
    功能:读光标位置的字符和属性
    调用参数:
        BH = 显示页
    返回参数:
        AH = 属性
        AL = 字符
        
    INT 10 (AH = 9)
    ----------------
    功能:在光标位置显示字符及其属性
    调用参数:
        BH = 显示页
        AL = 字符
        BL = 属性
        CX = 字符重复次数
        
    INT 10 (AH = A)
    ----------------
    功能:在光标位置显示字符
    调用参数:
        BH = 显示页
        AL = 字符
        CX = 字符重复次数
        
    INT 10 (AH = B)
    ----------------
    功能:置彩色调板(320 * 320 图形)
    调用参数:
        BH = 彩色调板 ID
        BL = 和 ID 配套使用的颜色
        
    INT 10 (AH = C)
    ----------------
    功能:写像素
    调用参数:
        DX = 行(0--199)
        CX = 列(0--639)
        AL = 像素值
        
    INT 10 (AH = D)
    ----------------
    功能:读像素
    调用参数:
        DX = 行(0--199)
        CX = 列(0--639)
    返回参数:
        AL = 像素值
        
    INT 10 (AH = E)
    ----------------
    功能:显示字符(光标前移)
    调用参数:
        AL = 字符
        BL = 前景色
        
    INT 10 (AH = F)
    ----------------
    功能:取当前显示方式
    返回参数:
        AH = 字符列数
        AL = 显示方式
        
    INT 10 (AH = 13)
    -----------------
    功能:显示字符串(适用AT)
    调用参数:                       ;返回参数
        ES:BP = 串地址
        CX = 串长度
        DH,DL = 起始行,列
        BH = 页号
        AL = 0,BL = 属性
        串:char,char,...           ;光标返回起始位置
        AL = 1,BL = 属性           ;光标跟随移动
        串:char,char,...
        AL = 2                     ; 光标返回起始位置
        串:char,char,...
        AL = 3                      ; 光标跟随移动
        串:char,char,...
        
    INT 11 
    ------
    功能:设备校验
    返回参数:
        AX = 返回值
        bit0 = 1:配有磁盘
        bit1 = 1:80287 协处理器
        bit4,5 = 10:40 * 25 BW(彩色板)
                 01:80 * 25 BW(彩色板)
                 11:80 * 25 BW(黑白板)
        bit6,7 = 软盘驱动器
        bit9,10,11 = RS-232 板号
        bit12 = 游戏适配器
        bit14,15 = 打印机号
        
    INT 12
    -------
    功能:测定存储器容量
    返回参数:
        AX = 字节数(KB)
        
    INT 13 (AH = 0)
    ----------------
    功能:软盘系统复位


    INT 13 (AH = 1)
    ----------------
    功能:读软盘状态
    返回参数:
        AL = 状态字节
        
    INT 13 (AH = 2)
    ----------------
    功能:读磁盘
    调用参数:
        AL = 扇区数
        CH,CL = 磁道号,扇区号
        DH,DL = 磁头号,驱动器号
        ES:BX = 数据缓冲区地址
    返回参数:
        成功:AH = 0,AL = 读取的扇区数
        失败:AH = 出错代码
        
    INT 13 (AH = 3)
    ----------------
    功能:写磁盘
    调用参数:
        AL = 扇区数
        CH,CL = 磁道号,扇区号
        DH,DL = 磁头号,驱动器号
        ES:BX = 数据缓冲取地址
    返回参数:
        成功:AH = 0, AL = 写入的扇区数
        失败:AH = 出错代码
        
    INT 13 (AH = 4)
    ----------------
    功能:检验磁盘扇区
    调用参数:
        AL = 扇区数
        CH,CL = 磁道号,扇区号
        DH,DL = 磁头号,驱动器号
    返回参数:
        成功:AH = 0,AL = 检验的扇区数
        失败:AH = 出错代码
        
    INT 13 (AH = 5)
    ----------------
    功能:格式化盘磁道
    调用参数:
        ES:BX = 磁道地址
    返回参数:
        成功:AH = 0
        失败:AH = 出错代码
        
    INT 14 (AH = 0)
    ----------------
    功能:初始化串行通讯口
    调用参数:
        AL = 初始化参数
        DX = 通讯口号(0,1)
    返回参数:
        AH = 通讯口状态
        AL = 调制解调器状态
        
    INT 14 (AH = 1)
    ----------------
    功能:向串行通讯口写字符
    调用参数:
        AL = 字符
        DX = 通讯口号(0,1)
    返回参数:
        写成功:AH(7) = 0
        写失败:AH(7) = 1
        AH(0-6) = 通讯口状态
        
    INT 14 (AH = 2)
    ----------------
    功能:从串行通讯口读字符
    调用参数:
        DX = 通讯口号(0,1)
    返回参数:
        读成功:AH(7) = 0, AL = 字符
        读失败:AH(7) = 1
        AH(0-6) = 通讯口状态
        
    INT 14 (AH = 3)
    ----------------
    功能:取通讯口状态
    调用参数:
        DX = 通讯口号(0,1)
    返回参数:
        AH = 通讯口状态
        AL = 调制解调器状态
        
    INT 15 (AH = 0)
    ----------------
    功能:启动盒式磁带马达

    INT 15 (AH = 1)
    ----------------
    功能:停止盒式磁带马达

    INT 15 (AH = 2)
    ----------------
    功能:磁带分块读
    调用参数:
        ES:BX = 数据传输区地址
        CX = 字节数
    返回参数:
        AH = 状态字节
             00:读成功
             01:冗余检验错
             02:无数据传输
             04:无引导
             08:非法命令
             
    INT 15 (AH = 3)
    ----------------
    功能:磁带分块写
    调用参数:
        DS:BX = 数据传输区地址
        CX = 字节数
    返回参数:
        同上
        
    INT 16 (AH = 0)
    ----------------
    功能:从键盘读字符
    返回参数:
        AL = 字符码
        AH = 扫描码
        
    INT 16 (AH = 1)
    ----------------
    功能:读键盘缓冲区字符
    返回参数:
        ZF = 0: AL = 字符码,AH = 扫描码
        ZF = 1: 缓冲区空
        
    INT 16 (AH = 2)
    ----------------
    功能:取键盘状态字节
    返回参数:
        AL = 键盘状态字节
        
    INT 17 (AH = 0)
    ----------------
    功能:打印字符,回送状态字节
    调用参数:
        AL = 字符
        DX = 打印机号
    返回参数:
        AH = 打印机状态字节
        
    INT 17 (AH = 1)
    ----------------
    功能:初始化打印机,回送状态字节
    调用参数:
        DX = 打印机号
    返回参数:
        AH = 打印机状态字节
        
    INT 17 (AH = 2)
    ----------------
    功能:取状态字节
    调用参数:
        DX = 打印机号
    返回参数:
        AH = 打印机状态字节
        
    INT 1A (AH = 0)
    ----------------
    功能:读时钟
    返回参数:
        CH:CL = 时:分
        DH:DL = 秒:1/100秒
        
    INT 1A (AH = 1)
    ----------------
    功能:置时钟
    调用参数:
        CH:CL = 时:分
        DH:DL = 秒:1/100秒
        
    INT 1A (AH = 2)
    ----------------
    功能:读实时钟(适用AT)
    返回参数:
        CH:CL = 时:分(BCD)
        DH:DL = 秒:1/100秒(BCD)
        
    INT 1A (AH = 6)
    ----------------
    功能:置报警时间(适用AT)
    调用参数:
        CH:CL = 时:分(BCD)
        DH:DL = 秒:1/100秒(BCD)
        
    INT 1A (AH = 7)
    ----------------
    功能:清除报警(适用AT)

  • 相关阅读:
    JVM专题3: GC 垃圾回收
    Java多线程专题3: Thread和ThreadLocal
    STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
    STC8H开发(八): NRF24L01无线传输音频(对讲机原型)
    沁恒CH32F103C8T6(一): Keil5环境配置,示例运行和烧录
    Java多线程专题4: 锁的实现基础 AQS
    Java多线程专题6: Queue和List
    JVM专题2: JVM内存结构
    沁恒CH32F103C8T6(三): PlatformIO DAPLink和WCHLink下载配置
    沁恒CH32F103C8T6(二): Linux PlatformIO环境配置, 示例运行和烧录
  • 原文地址:https://www.cnblogs.com/china_x01/p/3921224.html
Copyright © 2020-2023  润新知