• 汇编语言


    第五章:
    输入/输出和中断程序设计

    一、BIOS中断调用BIOS程序直接建立硬件基础上磁盘操作系统(DOS)和其他操作系统建立在BIOS基础上,各种高级语言则建立在操作系统基础上。用户程序可以使用高级语言,也可以调用DOS或其他操作系统,还可以调用BIOS,甚至直接指挥硬件设备。

    1.调用方法

    (1) 设置分功能号。按实现的操作功能的要求,给指定寄存器(通常为AH)送入分功能号。

    (2) 设置入口参数。按操作要求,给寄存器填写相应参数的内容(某些调用无参数。

    (3) 使用中断语句INT n。执行调用的功能,其中n为中断号。

    (4) 分析出口参数

    2.BIOS键盘键入功能调用

    在内存0040:0017中记录了双态键和组合键的状态,该字节称为键盘状态字节KB-FLAG,通过INT 16H的功能2可以查看上述8个键的状态,有关程序段如下:

    3.BIOS显示功能调用

     有关显示输出的DOS功能调用不多,而BIOS调用(INT 10H)的功能很强,主要包括设置显示方式,设置光标大小和位置,设置调色板号,显示字符和显示图形等。

    1)显示方式的设置:INT 10H0H功能用来设置显示方式。

        (1)单色字符显示P33/34/35

        (2)彩色字符显示P36/37/38

        (3)显示存储器P39/40/41/42        字符偏址 =页偏址+((行数×行宽)+列数)×字节数

    2)光标的设置:

          (1)  INT 10H的01H功能是设置光标的大小和状态。  光标起始行值放在CH的低4位,结束行值放在CL的低4位。CH的D4位为光标禁止位,用来表示光标的状态。

        (2)INT 10H的02H功能是设置光标位置。  光标位置的行号设在DH寄存器中,列号设在DL中。BH中必须包含被输出的页号,对单色显示器来说,页号总是0。

         (3)INT 10H的03功能读光标位置,页号必须在BH中指定。此功能把光标位置的行号回送给DH,列号回送给DL。光标大小的参数填入CH和CL中,也就是说,在CH和CL中回送的是用功能1设置的光标参数。

        (4)INT 10H的05功能由程序确定显存中的显示区域

         (5)INT 10H的06功能清屏和卷屏,能使屏幕内容上卷指定的行,这个功能需要设置7个参数。如果上卷超过指定窗口的顶部,这些行的内容就消失,出现在窗口底部的新行被填为空格,其属性由BH寄存器决定。 10H的功能7和功能6类似,也能使屏幕(或窗口)初始化或使屏幕(或窗口)的内容下卷指定的行,其他参数的设置与功能6一样。

     

    4.BIOS的打印功能:(INT 17H)

       (1)打印一个字符:BIOS 17H中断指令的功能0。要打印输出的字符放在AL中,打印机号放在DX中,打印机的状态信息被回送到AH寄存器。

       (2)初始化打印机功能:BIOS 17H中断指令的功能1。用于初始化打印机并回送打印机状态到AH寄存器。

       (3)状态字节读入AH寄存器:BIOS 17H中断指令的功能2。

    小结:

    BIOS固化在ROM中的程序,包含了主要I/O设备的处理程序和许多常用例行程序,它们一般以中断处理程序的形式存在编了号的、可由程序员调用的子程序就称为DOS的功能调用或称为系统调用。使用时设置好参数,功能号放AH寄存器,然后执行INT 21H即可。 磁盘文件管理有传统管理方式和扩充管理方式两种。

  • 相关阅读:
    java 日志框架的选择Log4j->SLF4j->Logback
    linux上的常用命令
    Zookeeper配置Kafka
    分布式日志收集框架Flume
    Spark Streaming简介
    Spring Cloud学习笔记之微服务架构
    IntelliJ IDEA学习记录
    firefox插件-自动化测试工具-selenium IDE
    大数据01
    使用java开发spark的wordcount程序(多种实现)
  • 原文地址:https://www.cnblogs.com/xxikwonxjlxi/p/13067350.html
Copyright © 2020-2023  润新知