第九章BIOS和DOS中断 DOS中断调用 BIOS中断调用
第九章 BIOS 和 DOS 中断 • DOS 中断调用 • BIOS 中断调用
BIOS Basic Input/output System A Fi rmware program,存储在ROM、 EPROM或 FlashROM中,提供最基本的硬件初始化、外围控制的 必要程序代码。通常是用汇编语言编写的。 Dos Disk operating System
BIOS ( Basic Input/Output System ) A Firmware program,存储在 ROM、EPROM 或 FlashROM 中,提供最基本的硬件初始化、外围控制的 必要程序代码。通常是用汇编语言编写的。 DOS ( Disk Operating System )
00000H 640K (RAM) conventional memory 128K (RAM) upper 192K(ROM) memory F0000H 64K (ROM) FEOOOH N FFFFFH 8K
00000H F0000H upper memory conventional memory 640K (RAM) 128K (RAM) 192K (ROM) 64K (ROM) FE000H ~ FFFFFH 8K
调用DOS或BIOS功能的基本步骤: (1)将调用参数装入指定寄存器 (2)如需功能号,将它装入AH (3)如需子功能号,将它装入AL (4)按中断类型号调用DOS或BOS中断 (5)检查返回参数是否正确 DOS功能与BOS功能都通过软件中断调用
调用 DOS 或 BIOS 功能的基本步骤: (1) 将调用参数装入指定寄存器 (2) 如需功能号,将它装入 AH (3) 如需子功能号,将它装入 AL (4) 按中断类型号调用 DOS 或 BIOS 中断 (5) 检查返回参数是否正确 DOS 功能与 BIOS 功能都通过 软件中断 调用
1.DOs中断调用 DOS功能调用(|NT21H) 用户在程序中调用DOS提供的一些子功能: (1)一般设备的输入输出 (2)磁盘的输入输出及磁盘文件的管理 (3)其它
1. DOS 中断调用 DOS 功能调用( INT 21H ) 用户在程序中调用 DOS 提供的一些子功能: (1) 一般设备的输入输出 (2) 磁盘的输入输出及磁盘文件的管理 (3) 其它
DOS键盘功能调用(AH=1,6,7,8,A,B,C) (单字符输入输入字符串/清除鍵盘缓冲区/检验键盘状态) 例:单字符输入(AH=1)例:输入字符串(AH=0ah) get_key: mov ah, 定义缓冲区: int 21 h cmp al,Y maxlen db 32 e yes actlen db cmp al string db 32 dup(?) e no jne get_key: maxlen db 32, 0, 32 dup(? yes. maxlen db 32, 33 dup (? no lea dx, maxlen mov ah, Oah int 21h
DOS 键盘功能调用( AH = 1, 6, 7, 8, A, B, C ) (单字符输入/输入字符串/清除键盘缓冲区/检验键盘状态) 例:单字符输入( AH=1 ) get_key: mov ah, 1 int 21h cmp al, ‘Y’ je yes cmp al, ‘N’ je no jne get_key yes: …… no: …… 例:输入字符串( AH=0ah ) 定义缓冲区: maxlen db 32 actlen db ? string db 32 dup ( ? ) maxlen db 32, 0, 32 dup ( ? ) maxlen db 32, 33 dup ( ? ) lea dx, maxlen mov ah, 0ah int 21h
DOS显示功能调用(AH=2,6,9) (显示一个字符/显示字符串) 例:显示一个字符(AH=2) mov ah, 2 movd,‘A int 21h 例:显示字符串(AH=9) string db ' HELLo, Odh, Oah,'S mov dx, offset string mov ah, 9 Int 21h
DOS 显示功能调用( AH=2, 6, 9 ) (显示一个字符/显示字符串) 例:显示一个字符 ( AH=2 ) mov ah, 2 mov dl, ‘A’ int 21h 例:显示字符串 (AH=9 ) string db ‘HELLO’, 0dh, 0ah, ‘$’ mov dx, offset string mov ah, 9 int 21h
DOS打印功能(AH=5) (打印一个字符) DOS串行通讯口功能(AH=3,4) (从串口读一个字符/向串口写一个字符)
DOS 打印功能 ( AH=5 ) (打印一个字符) DOS 串行通讯口功能 ( AH=3, 4 ) (从串口读一个字符/向串口写一个字符)
2.BOs中断调用 BIOS键盘中断(INT16HAH=0,1,2) 从键盘读一字符/读键盘缓冲区字符/取键盘状态字节) 例:从键盘读一字符(AH=0) mov ah 0 int 1 6h al=字符码 ah=扫描码 mov bx, ax call binhex
2. BIOS 中断调用 BIOS 键盘中断 ( INT 16H AH = 0, 1, 2 ) (从键盘读一字符/读键盘缓冲区字符/取键盘状态字节) 例:从键盘读一字符( AH=0 ) mov ah, 0 int 16h ; al = 字符码 ; ah = 扫描码 mov bx, ax call binihex
BIOS显示中断(IT10HAH=1,2,3,6,7,8,9,A) (控制光标/读光标位置/清屏和卷屏/字符显示) BIOS打印中断(IT17HAH=0,1,2) (打印一个字符/初始化打印机/取打印机状态字节) BIOS串行通讯口功能(INT14HAH=0,1,2,3) (初始化串口/向串口写字符/从串口读字符/取串口状态)
BIOS 显示中断 ( INT 10H AH = 1, 2, 3, 6, 7, 8, 9, A ) (控制光标/读光标位置/清屏和卷屏/字符显示) BIOS 打印中断 ( INT 17H AH = 0, 1, 2 ) (打印一个字符/初始化打印机/取打印机状态字节) BIOS 串行通讯口功能 ( INT 14H AH = 0, 1, 2, 3 ) (初始化串口/向串口写字符/从串口读字符/取串口状态)