BIOS和DOS中断功能调用-课件.ppt

上传人(卖家):晟晟文业 文档编号:4687822 上传时间:2023-01-01 格式:PPT 页数:71 大小:285.47KB
下载 相关 举报
BIOS和DOS中断功能调用-课件.ppt_第1页
第1页 / 共71页
BIOS和DOS中断功能调用-课件.ppt_第2页
第2页 / 共71页
BIOS和DOS中断功能调用-课件.ppt_第3页
第3页 / 共71页
BIOS和DOS中断功能调用-课件.ppt_第4页
第4页 / 共71页
BIOS和DOS中断功能调用-课件.ppt_第5页
第5页 / 共71页
点击查看更多>>
资源描述

1、第五节第五节 BIOS和和DOS中断功能调用中断功能调用(教材旧教材旧P238、新新P239)一、概述一、概述 1.BIOS和和DOS中断子程层次特点中断子程层次特点2.中断类型分类中断类型分类3.调用方法调用方法二、二、BIOS功能调用功能调用1设置显示方式设置显示方式(10H类型,类型,00H功能功能)2置光标位置置光标位置 (10H类型,类型,02H功能功能)3清屏、清窗口清屏、清窗口(10H类型,类型,06H或或07H功能功能)三、三、DOS系统功能调用系统功能调用(21H类型中断调用类型中断调用)1显示单字符显示单字符(02H功能功能)2显示字符串显示字符串(09H功能功能)3单字符

2、输入单字符输入(01H、07H、08H功能功能)4字符串输入字符串输入(0AH功能功能)5检测键盘状态检测键盘状态(0BH功能功能)6保存中断向量保存中断向量(35H功能功能)(第六章介绍)第六章介绍)7设置中断向量设置中断向量(25H功能功能)1复习内容:复习内容:P339P247(新新),),P228P246(旧)旧)预内容习:预内容习:P 110P140(新新),),P106P134(旧)旧)作业作业:1、其中其中:任务任务 1、(、(2)()(4),),2必做,必做,任务任务 1、(、(1)()(3)选做)选做.任务任务1,作为家庭作业,在计算机上调通后,作为家庭作业,在计算机上调通后

3、,经过教师检查经过教师检查 签字签字22编写完整汇编语言程序,要求上机调试出来:编写完整汇编语言程序,要求上机调试出来:(1)清屏,在)清屏,在10行行5列上显示列上显示“Hello China!”(2)将将0AH功能输入的字符串功能输入的字符串,用用09H功能显示出来。功能显示出来。在在DOS下执行,从键盘输入下执行,从键盘输入123456789回车回车,屏幕上能显示屏幕上能显示Hello World!吗吗?为什么?为什么?用在用在DEBUG下查看到的下查看到的data段的内容来说明。段的内容来说明。3问题回答问题回答下面程序,汇编连接后下面程序,汇编连接后3max DB 11,?,4 DU

4、P(?)data SEGMENTstring DB Hello World!,$data ENDScode SEGMENTASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,maxMOV AH,0AH ;调用调用0AH输入功能输入功能INT 21HLEA DX,stringMOV AH,09H ;调用调用09H显示功能显示功能INT 21HMOV AH,4CHINT 21H ;返回返回DOScode ENDS END start4 第三节第三节 BIOS和和DOS中断功能调用中断功能调用 (

5、教材旧教材旧P238、新新P239)一、概述一、概述 二、二、BIOS功能调用功能调用三、三、DOS系统功能调用系统功能调用 (21H类型中断调用类型中断调用)5一、概述一、概述1BIOS 和和 DOS 中断子程层次特点中断子程层次特点2.中断类型分类中断类型分类3.调用方法调用方法61BIOS和和DOS中断子程层次特点中断子程层次特点用户程序用户程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装入装入命令处理模块命令处理模块CO

6、MMAN D.COM用户命令用户命令DOS系统层次结构系统层次结构7 层次特点:层次特点:l ROM BIOS中的中断子程中的中断子程 使使用用IN/OUT指令指令直接控制外设,直接控制外设,实现与外设之间的输入实现与外设之间的输入/输出操作,输出操作,以软件形式向其上层提供服务。以软件形式向其上层提供服务。l IO.SYS中的中断子程中的中断子程 (称基本输入称基本输入/输出输出BIOS模块模块)调用调用ROM BIOS的基本的基本I/O功能功能,向向 MSDOS.SYS提供设备驱动服务。提供设备驱动服务。用户程序用户程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能

7、系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装装入入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令8l MSDOS.SYS中的中断子程中的中断子程 (称称DOS内核模块内核模块)调用调用IO.SYS,实现对外设的控制。实现对外设的控制。与标准外设有两层隔离与标准外设有两层隔离:IO.SYS和和ROM BIOS。其中其中21H类型的中断子程类型的中断子程提供了丰富的系统服务,提供了丰富的系统服务,称称21类型的中断调用类型的中断调用为为DOS系统系统(功能功能)调用调用。用户程序用户

8、程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装装入入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令9l 用户编程原则用户编程原则尽可能使用尽可能使用DOS的系统功能调用,的系统功能调用,提高程序可移植性。提高程序可移植性。在在DOS功能不能实现情况下,功能不能实现情况下,考虑用考虑用BIOS功能调用。功能调用。在在DOS和和BIOS的中断子程的中断子程 不能解决问题时不能解决问题时,使用使用IN/OUT指令直

9、接控制硬件。指令直接控制硬件。用户程序用户程序磁盘管理模块磁盘管理模块(DOS内核内核)MSDOS.SYS 系统功能系统功能基本输入基本输入/输出输出 BIOS 模模 块块IO.SYS 设备驱动设备驱动ROM BIOS 基本基本I/O系系 统统 硬硬 件件装装入入命令处理模块命令处理模块COMMAN D.COM用户命令用户命令102.中断类型分类中断类型分类l 向量表中的中断类型分为七类:向量表中的中断类型分为七类:处理处理CPU特殊操作特殊操作(除除0、溢出、溢出)的的00H、04H类型。类型。为为DEBUG调试程序设置调试程序设置的单步的单步(01H)、断点断点(03H)类型。类型。处理处

10、理CPU的的NMI引脚信号引脚信号的的02H类型。类型。非屏蔽硬中断子程非屏蔽硬中断子程 处理处理CPU的的INTR引脚信号引脚信号的的080FH类型。类型。可屏蔽类型硬中断子程可屏蔽类型硬中断子程 用用INT指令调用的中断子程指令调用的中断子程 BIOS功能调用(如功能调用(如101AH)DOS功能调用功能调用(如(如 21H)NMIINTR808811 保留类型保留类型为为DOS系统保留系统保留 1)指现在未用到,以后系统可能会用到。指现在未用到,以后系统可能会用到。2)已用到,但不向用户公开。已用到,但不向用户公开。为用户保留为用户保留 1)被系统子程嵌套调用了的类型被系统子程嵌套调用了

11、的类型(如如1BH、1CH)。使用户在系统功能基础上扩充功能。使用户在系统功能基础上扩充功能。2)系统未占用类型系统未占用类型(如如 60H67H)。非中断向量类型非中断向量类型对应向量表中的对应向量表中的4个单元存放的不是中断向量。个单元存放的不是中断向量。(如(如1DH、1EH、1FH、41H、46H、22H)通常是一些参数表的地址信息通常是一些参数表的地址信息.12类类型型号号中中断断功功能能名名称称模模 块块中中 断断 源源00H除除零零错错误误BIOSCPU 内内部部操操作作01H单单步步执执行行BIOSDEBUG 程程序序02H非非屏屏蔽蔽中中断断BIOS非非屏屏蔽蔽硬硬中中断断0

12、3H断断点点设设置置BIOSDEBUG 程程序序04H溢溢出出错错误误BIOSCPU 内内部部操操作作05H屏屏幕幕打打印印BIOSINT 指指令令06-07H保保留留08H定定时时器器中中断断BIOS可可屏屏蔽蔽硬硬中中断断09H键键盘盘中中断断BIOS可可屏屏蔽蔽硬硬中中断断0AH保保留留BIOS可可屏屏蔽蔽硬硬中中断断0BH串串行行通通信信中中断断BIOS可可屏屏蔽蔽硬硬中中断断0CH保保留留BIOS可可屏屏蔽蔽硬硬中中断断0DH硬硬盘盘中中断断BIOS可可屏屏蔽蔽硬硬中中断断0EH软软盘盘中中断断BIOS可可屏屏蔽蔽硬硬中中断断0FH打打印印机机中中断断BIOS可可屏屏蔽蔽硬硬中中断断

13、l 中断向量分配表中断向量分配表13类类型型号号中中断断功功能能名名称称模模 块块中中 断断 源源10H显显示示器器 I/OBIOSINT 指指令令11H设设备备配配置置检检测测BIOSINT 指指令令12H内内存存容容量量检检测测BIOSINT 指指令令13H磁磁盘盘 I/OBIOSINT 指指令令14H串串行行通通信信 I/OBIOSINT 指指令令15H盒盒式式磁磁带带 I/OBIOSINT 指指令令16H键键盘盘 I/OBIOSINT 指指令令17H打打印印机机 I/OBIOSINT 指指令令18HR RO OM M B BA AS SI IC C 入入口口BIOSINT 指指令令19

14、H系系统统检检测测程程序序BIOSINT 指指令令1AH日日时时钟钟 I/OBIOSINT 指指令令1BH用用户户 Ctrl-BreakBIOSINT 指指令令1CH用用户户定定时时器器BIOSINT 指指令令1DH显显示示器器参参数数表表BIOS非非中中断断向向量量1EH软软盘盘参参数数表表BIOS非非中中断断向向量量1FH图图形形显显示示字字符符表表BIOS非非中中断断向向量量14类类型型号号中中断断功功能能名名称称模模 块块中中 断断 源源20H程程序序结结束束返返回回系系统统DOSINT 指指令令21H系系统统功功能能调调用用DOSINT 指指令令22H程程序序结结束束地地址址DOS非

15、非中中断断向向量量23HCtrl-Break 处处理理DOSINT 指指令令24H严严重重错错误误处处理理DOSINT 指指令令25H按按扇扇区区读读磁磁盘盘DOSINT 指指令令26H按按扇扇区区写写磁磁盘盘DOSINT 指指令令27H程程序序结结束束驻驻留留内内存存DOSINT 指指令令28-3FH保保留留40H软软盘盘 I/OBIOSINT 指指令令41,46H硬硬盘盘参参数数表表 1,2BIOS非非中中断断向向量量42-5FH保保留留60-67H为为用用户户保保留留INT 指指令令68-7FH保保留留80-F0HBASIC 使使用用BIOSINT 指指令令F1-FFH保保留留153.调

16、用方法调用方法设置入口参数设置入口参数在在AH设置功能号设置功能号m执行中断指令执行中断指令INT N分析、应用出口参数分析、应用出口参数16例例1 单字符显示功能调用单字符显示功能调用MOV DL,A ;设置入口参数设置入口参数MOV AH,02H ;设置功能号设置功能号 INT 21H ;执行中断调用执行中断调用 例例2 单字符输入功能调用单字符输入功能调用MOV AH,01H ;设置功能号设置功能号 INT 21H ;执行中断调用执行中断调用CMP AL,0DH ;分析、应用出口参数分析、应用出口参数JZ exit、17二、二、BIOS功能调用功能调用l 基本输入基本输入/输出模块输出模

17、块BIOS:实现对输入实现对输入/输出设备的控制,输出设备的控制,内含内含0 1CH 等类型中断子程,等类型中断子程,包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。包括显示器、磁盘、键盘、打印机等标准外设的驱动程序。(参看中断类型分配表)(参看中断类型分配表)l BIOS功能调用指对功能调用指对BIOS模块中的中断子程的调用。模块中的中断子程的调用。18l 有关显示器有关显示器 显示器通过显卡显示器通过显卡(显示适配器显示适配器)连接到计算机上。连接到计算机上。单色显示器只能显示黑白两色。单色显示器只能显示黑白两色。彩色显示器能显示多种颜色。彩色显示器能显示多种颜色。19 屏幕上各象素的

18、显示信息,存放在显示缓冲区(显存)中。屏幕上各象素的显示信息,存放在显示缓冲区(显存)中。640KB RAM 基本内存基本内存0000:0000 0040:0000 0050:0000 0070:0000 A000:0000 B000:0000 C800:0000 F600:0000 FE00:0000 FE00:1FFF显示缓存区显示缓存区(显存显存)硬盘驱动器控制硬盘驱动器控制ROM32KB ROM BASIC8KB ROM BIOSIO.SYS模块模块COMMAND.COM常驻模块常驻模块MSDOS.SYS模块模块用户程序空间用户程序空间COMMAND.COM暂驻模块暂驻模块256KB

19、ROMDOS工作区工作区ROM BIOS工作区工作区128KB RAM 保留区保留区1KB中断向量表中断向量表20 显示器有两种显示方式显示器有两种显示方式:图形方式图形方式:将屏幕划分为将屏幕划分为 mn的点阵,在每个点的位置显示象素的点阵,在每个点的位置显示象素,一个点是一个象素一个点是一个象素。文本方式文本方式将屏幕划分为若干行和列,在每个网格位置上显示象素,将屏幕划分为若干行和列,在每个网格位置上显示象素,一个字符是一个象素一个字符是一个象素。21文本方式文本方式将屏幕划分为将屏幕划分为 m列和列和n行行(m n),在每个网格位置上显示象素,在每个网格位置上显示象素,一个字符是一个象素

20、。一个字符是一个象素。8025 文本方式文本方式A 0列列0 行行79列列24行行BC22 640480 图形方式图形方式640 点点480点点图形方式图形方式:将屏幕划分为将屏幕划分为 mn的点阵,在每个点的位置显示象素的点阵,在每个点的位置显示象素,一个点是一个象素一个点是一个象素。23在文本方式下,在文本方式下,对应屏幕上的对应屏幕上的每个字符每个字符,在显示缓冲区中占用两个单元在显示缓冲区中占用两个单元:一个存放一个存放ASCII码,码,一个存放显示属性。一个存放显示属性。41H07H42H07H61H70H62H70H、显示缓冲区显示缓冲区(显存)(显存)字符字符A,黑底白字黑底白字

21、字符字符B,黑底白字黑底白字字符字符a,白底黑字白底黑字字符字符b,白底黑字白底黑字24例例 10000111B 或或 87H 表示黑底白字,闪烁表示黑底白字,闪烁 01110000B 或或70H 表示白底黑字,不闪烁表示白底黑字,不闪烁1616种种0000 黑黑 1000 灰灰 0010 绿绿 1010 浅绿浅绿0100 红红 1100 浅红浅红0111 灰白灰白 1111 白白BL R G BIR G B闪烁闪烁背景背景前景前景765432108种种000 黑黑 010 绿绿 100 红红111 白白0 不闪烁不闪烁1 闪烁闪烁属性字节的含义:属性字节的含义:25 据显存大小,可存储若干页

22、的字符象素。据显存大小,可存储若干页的字符象素。例例 16KB 显存能存储显存能存储:8025方式,方式,4页页(0 3),802524=16000 4025方式,方式,8页页(0 7),402528=16000261设置显示方式设置显示方式入口参数入口参数 AL=显示方式值显示方式值 00 4025 黑白文本方式黑白文本方式 01 4025 彩色文本方式彩色文本方式 02 8025 黑白文本方式黑白文本方式 03 8025 彩色文本方式彩色文本方式 04 320320 彩色图形方式彩色图形方式 功能号功能号 AH=00H类型号类型号 10H出口参数出口参数 无无 实现功能实现功能 将显示方式

23、设置为指定形式将显示方式设置为指定形式例例 将显示方式设置为将显示方式设置为 8025 彩色文本方式彩色文本方式 MOV AL,03H MOV AH,00 INT 10H272.清屏、清窗口功能清屏、清窗口功能入口参数入口参数 AL=0 CH=窗口左上角行号窗口左上角行号 CL=窗口左上角列号窗口左上角列号 DH=窗口右下角行号窗口右下角行号 DL=窗口右下角列号窗口右下角列号 BH=窗口属性窗口属性功能号功能号 AH=06H 或或 AH=07H类型号类型号 10H出口参数出口参数 无无 实现功能实现功能 按给定属性清除指定的窗口内容按给定属性清除指定的窗口内容28例例 清除屏幕显示,将其属性

24、置为反白(白底黑字)显示。清除屏幕显示,将其属性置为反白(白底黑字)显示。MOV AL,0 ;清屏功能清屏功能 MOV BH,70H ;白底黑字白底黑字 MOV CH,0 ;左上角左上角 行号行号MOV CL,0 ;左上角左上角 列号列号 MOV DH,24 ;右下角右下角 行号行号 MOV DL,79 ;右下角右下角 列号列号 MOV AH,6 ;功能号功能号 INT 10H ;中断调用中断调用293.置光标位置置光标位置l 光标控制开始显示的位置,光标控制开始显示的位置,计算机有专门的硬件控制光标的显示大小、位置。计算机有专门的硬件控制光标的显示大小、位置。l 光标只在文本方式中出现,在图

25、形方式下光标消失。光标只在文本方式中出现,在图形方式下光标消失。0列列0 行行79列列24 行行5列列1列列1 行行2 行行30置光标位置置光标位置 入口参数入口参数 DH=行号行号 DL=列号列号 BH=页号页号 功能号功能号 AH=02H 类型号类型号 10H 出口参数出口参数 无无 实现功能实现功能 将光标设置在指定的位置将光标设置在指定的位置31例例 将光标设置在将光标设置在2行行5列列的位置的位置MOV DH,2MOV DL,5MOV BH,0MOV AH,2INT 10H 0列列0 行行79列列24行行5列列1列列1 行行2 行行32三、三、DOS系统功能调用系统功能调用(21H类

26、型中断调用类型中断调用)1显示单字符显示单字符(02H功能功能)2显示字符串显示字符串(09H功能功能)3单字符输入单字符输入(01H、07H、08H功能功能)4字符串输入字符串输入(0AH功能功能)5检测键盘状态检测键盘状态(0BH功能功能)6保存中断向量保存中断向量(35H功能功能)(第六章介绍第六章介绍)7设置中断向量设置中断向量(25H功能功能)331.显示单字符显示单字符(02H功能功能)入口参数入口参数 DL=要显示字符的要显示字符的ASCII 码码 功能号功能号 AH=02H类型号类型号 INT 21H出口参数出口参数 无无实现功能实现功能 显示指定字符显示指定字符,光标随动。光

27、标随动。例例 显示字符显示字符A MOV DL,A MOV AH,02H INT 21H34例例 使光标回到下一行的行首。使光标回到下一行的行首。MOV DL,0DH ;显示回车符显示回车符MOV AH,02HINT 21HMOV DL,0AH ;显示换行符显示换行符MOV AH,02HINT 21H H e l l o W o r l d 352.显示字符串显示字符串(09H功能功能)入口参数入口参数 定义要显示的字符串,定义要显示的字符串,字符串尾应为字符串尾应为$,作为结束显示的标志。,作为结束显示的标志。DS:DX=字符串的首地址字符串的首地址功能号功能号 AH=09 H类型号类型号

28、21H出口参数出口参数 无无实现功能实现功能 显示字符串,遇显示字符串,遇$停止显示,光标随动停止显示,光标随动。36例例 编程显示字符串编程显示字符串 Tsinghua Universitydata SEGMENT ;定义显示的子符串定义显示的子符串stri DB Tsinghua University,$data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,stri MOV AH,09H ;调显示功能调显示功能 INT 21H MOV AH,4C

29、H ;返回返回DOS INT 21H code ENDS END start37l 有关键盘有关键盘 键盘通过键盘接口电路与计算机连接。键盘通过键盘接口电路与计算机连接。键盘上的键有三种类型键盘上的键有三种类型:字符键字符键 AZ,09等等 功能键功能键 F1F12,Page Up等等 组合控制键组合控制键 Shift,Ctrl,Alt等等 键盘上的每个键都有一个键盘上的每个键都有一个扫描码扫描码。据扫描码可确定操作的是哪个键、是按下键还是释放键;据扫描码可确定操作的是哪个键、是按下键还是释放键;扫描码用一个字节表示。扫描码用一个字节表示。低低7位是扫描码的数字编码位是扫描码的数字编码,与键盘

30、上的键一一对应;与键盘上的键一一对应;最高位最高位D7位表示键的操作状态:位表示键的操作状态:当当按下键时按下键时,D7=0;当当释放键时释放键时,D7=138 键盘中断子程功能(键盘中断子程功能(09H类型中断子程)类型中断子程)从键盘接口读取操作键的扫描码从键盘接口读取操作键的扫描码;将扫描码转换成字符码;将扫描码转换成字符码;大部分键的字符码为大部分键的字符码为ASCII码,码,无无ASCII码键(如组合键码键(如组合键Shift、Ctrl等)的字符码为等)的字符码为0。将键的扫描码、字符码存放在键盘缓冲区将键的扫描码、字符码存放在键盘缓冲区,供其它有关键盘的中断子程应用。供其它有关键盘

31、的中断子程应用。键盘接口对按下键和释放键均向计算机发出中断申请键盘接口对按下键和释放键均向计算机发出中断申请,如果如果中断响应条件满足中断响应条件满足,CPU转去执行键盘中断子程。转去执行键盘中断子程。键盘中断子程类型号为键盘中断子程类型号为09H。393.单字符输入单字符输入(01H、07H、08H功能功能)入口参数入口参数 无无 功能号功能号 AH=01H 类型号类型号 21H 出口参数出口参数 AL=键入字符的键入字符的ASCII码码 实现功能实现功能 等待从键盘输入一个字符等待从键盘输入一个字符,并在屏幕上回显,光标移动并在屏幕上回显,光标移动,检测检测Ctrl-Break键键40例例

32、 利用键盘输入的字符产生分支:利用键盘输入的字符产生分支:MOV AH,1 ;等待从键盘输入等待从键盘输入 INT 21H CMP AL,Y ;是是Y?JZ yes CMP AL,y ;是是y?JZ yes no:.JMP exit yes:.exit:.41例例 在中断向量表中在中断向量表中查找从键盘输入的字符查找从键盘输入的字符,并将其个数用二进制形式显示出来。并将其个数用二进制形式显示出来。(scanskey.asm)code SEGMENT ;代码段开始代码段开始 ASSUME CS:code begin:MOV AX,0000H ;设置查找首地址设置查找首地址 MOV DS,AX M

33、OV SI,0000H MOV CX,0400H ;设置查找长度设置查找长度 MOV BX,0 ;计算值初值计算值初值 MOV AH,01H ;从键盘输入从键盘输入 INT 21H ;输入关键字输入关键字 MOV DL,AL ;保存在保存在DL中中 next:LODSB ;从串取从串取 CMP AL,DL ;与关键字比较与关键字比较 JNZ point INC BX ;计算值加计算值加1 point:LOOP next ;查找结束?查找结束?CALL display ;调用显示子程调用显示子程 MOV AH,4CH ;调用调用4CH功能功能 INT 21H ;返回返回DOS;用二进制显示用二进

34、制显示BX内容子程内容子程 display PROC MOV CX,16 ;显示位数显示位数 rotate:ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,2H INT 21H LOOP rotate RET ;子程返回子程返回 display ENDP code ENDS ;代码段结束代码段结束 END begin42 入口参数入口参数 无无 功能号功能号 AH=07H类型号类型号 21H出口参数出口参数 AL=键入字符的键入字符的ASCII码码实现功能实现功能 等待从键盘输入一个字符等待从键盘输入一个字符,不在屏幕上回显,不在屏幕上回显,不检

35、测不检测Ctrl-Break键键43例例 用不带回显功能输入密码时:用不带回显功能输入密码时:input:MOV AH,07H ;等待从键盘输入等待从键盘输入 INT 21H MOV DI,AL ;存入缓冲区存入缓冲区 CMP AL,0DH ;是回车符?是回车符?JNZ input ;不是,继续输入不是,继续输入 check:、444.字符串输入字符串输入(0AH 功能功能)入口参数入口参数 DS:DX=缓冲区的首地址缓冲区的首地址 (DS:DX)=限制最多输入的字符数限制最多输入的字符数 功能号功能号 AH=0AH 类型号类型号 21H 出口参数出口参数 (DS:DX+1)=实际键入的字符实

36、际键入的字符(不含回车符不含回车符)从从(DS:DX+2)开始顺序存放键入的字符串,开始顺序存放键入的字符串,回车符回车符0DH为串尾最后一字符。为串尾最后一字符。实现功能实现功能 等待从键盘输入字符串,并存入设定的缓冲区内,等待从键盘输入字符串,并存入设定的缓冲区内,同时回显字符串,光标随着移动,同时回显字符串,光标随着移动,回车符使光标回到行首。回车符使光标回到行首。注意事项:注意事项:应按要求先定义缓冲区,再调用。应按要求先定义缓冲区,再调用。45例例 应用应用0AH功能输入字符串。功能输入字符串。data SEGMENT ;定义缓冲区定义缓冲区max DB 11 ;定义限制最多输入个数

37、定义限制最多输入个数lenth DB?;用于存放实际输入个数用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串用于存放输入的字符串data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH INT 21H ;调调0A输入功能输入功能 MOX CH,0 MOV CL,lenth ;取字符串长度放取字符串长度放CX中中 LEA BX,stri ;取字符串首址于取字符串首址于BX中中 MOV AL,BX ;

38、应用输入字符应用输入字符 、code ENDS 46data SEGMENT ;定义缓冲区定义缓冲区max DB 11 ;定义限制最多输入个数定义限制最多输入个数lenth DB?;用于存放实际输入个数用于存放实际输入个数stri DB 11 DUP(?);用于存放输入的字符串用于存放输入的字符串data ENDS从键盘输入从键盘输入ABCD,回车,内存的存放结果回车,内存的存放结果:0B 04 41 42 43 44 0D 00max0700 00 00 00 00 00 00 0080a 0b0f12345690c 0d 0elenthstri地址地址内容内容DS:DX47如下编程与上例相

39、同如下编程与上例相同:data SEGMENT max DB 11 等价于:等价于:DB?max DB 11,?,11 DUP(?)DB 11 DUP(?)data ENDS code SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH ;调输入功能调输入功能 INT 21H MOX CH,0 MOV CL,max+1 ;取字符串长度放取字符串长度放CX中中 LEA BX,max+2 ;取字符串首址于取字符串首址于BX中中 MOV AL,BX ;

40、应用输入字符应用输入字符 、code ENDS48data SEGMENTmax DB 11 DB?DB 11 DUP(?)data ENDS从键盘输入从键盘输入ABCD,回车,内存的存放结果回车,内存的存放结果:等价于等价于max DB 11,?,?,11 DUP(?)0B 04 41 42 43 44 0D 00max0700 00 00 00 00 00 00 0080a 0b0f12345690c 0d 0e地址地址内容内容DS:DX490AH功能执行过程功能执行过程:若若(DS:DX)字节单元的值为字节单元的值为0,则不等待从键盘输入,结束调用。,则不等待从键盘输入,结束调用。若若(

41、DS:DX)字节单元的内容大于字节单元的内容大于0,则等待从键盘输入,则等待从键盘输入,并把输入键的并把输入键的ASCII码顺序存放在码顺序存放在DS:DX+2开始的单元,开始的单元,按回车键表示结束输入。按回车键表示结束输入。当按下键的个数超过当按下键的个数超过(DS:DX)中值,发出警告声中值,发出警告声 嘟嘟嘟嘟,不再接收输入的数据不再接收输入的数据,直到输入回车键。直到输入回车键。将实际输入的字符个数将实际输入的字符个数(不包括回车键不包括回车键)填入填入(DS:DX+1),结束调用。结束调用。DS:DX00 00 00 00 00 00 00 00 00 00 00 00 00 00

42、 00 00500AH功能注意事项功能注意事项:输入的字符均带回显,且光标随字符移动。输入的字符均带回显,且光标随字符移动。当输入回车符结束时,也回显回车符。当输入回车符结束时,也回显回车符。表现为功能调用结束后,光标回到了行首。表现为功能调用结束后,光标回到了行首。回车符回车符0DH作为一个输入的字符存放在字符串尾,作为一个输入的字符存放在字符串尾,但计数输入个数时,不包括回车键。但计数输入个数时,不包括回车键。实际最多能输入的字符数实际最多能输入的字符数=限制的最多数限制的最多数-1 (回车符占一个)(回车符占一个)执行完执行完0AH功能后,功能后,DS和和DX的值不变,的值不变,DS:D

43、X仍指向缓冲区的首地址。仍指向缓冲区的首地址。整个缓冲区的大小应为整个缓冲区的大小应为:限制的最多数限制的最多数+2 max DB 11,?,11 dup(?)51例例 利用利用DEBUG查看查看0A功能输入结果功能输入结果。data SEGMENT max DB 11,?,11 DUP(?)data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH ;调输入功能调输入功能 INT 21H MOV CH,0 MOV CL,ma

44、x+1 ;取输入长度到取输入长度到CX中中 MOV AH,4CH ;返回返回DOS INT 21Hcode ENDS END start52D:MASMDEBUG TEST0a.exe ;装入执行文件装入执行文件-U ;反汇编程序反汇编程序 129E:0000 B89D12 MOV AX,129D129E:0003 8ED8 MOV DS,AX129E:0005 8D160000 LEA DX,0000129E:0009 B40A MOV AH,0A129E:000B CD21 INT 21129E:000D B500 MOV CH,00129E:000F 8A0E0100 MOV CL,00

45、01129E:0013 B44C MOV AH,4C129E:0015 CD21 INT 21 、-D 129D:0 L10 ;查看程序执行查看程序执行前前缓冲区内容缓冲区内容 129D:0000 0B 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00 .-G 000D ;执行程序执行程序 Hello ;从键盘输入字符串从键盘输入字符串 Program terminated normally-D 129D:0 L10 ;查看程序执行查看程序执行后后缓冲区内容缓冲区内容 129D:0000 0B 05 48 65 6C 6C 6F 0D-00 00 00

46、00 00 00 00 00 .Hello.-53思考:思考:1.若将程序改为如下形式,若将程序改为如下形式,设想程序执行的结果。设想程序执行的结果。data SEGMENT max DB 100H DUP(?)data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH ;调输入功能调输入功能 INT 21H MOV AH,4CH ;返回返回DOS INT 21Hcode ENDS END start54结果是:结果是:不等待

47、输入,结束不等待输入,结束0AH功能调用。功能调用。00 00 0000 00 00 00 00max0700 00 00 00 00 00 00 0080a0b0f12345690c 0d 0e地址地址内容内容DS:DX注意:注意:由于由于DS:DX限制输入最大字符数为限制输入最大字符数为0,所以不等待输入所以不等待输入,结束结束0AH功能调用。功能调用。原因是:原因是:552.若将程序改为如下形式,若将程序改为如下形式,设想程序执行的结果。设想程序执行的结果。data SEGMENT max DW 100H,?,100H DUP(?);定义为字类型定义为字类型data ENDScode S

48、EGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,max MOV AH,0AH ;调输入功能调输入功能 INT 21H MOV AH,4CH ;返回返回DOS INT 21Hcode ENDS END start56结果是:结果是:不等待输入,结束不等待输入,结束0AH功能调用。功能调用。00 01 0000 00 00 00 00max0700 00 00 00 00 00 00 0080a0b0f12345690c 0d 0e地址地址内容内容DS:DX注意:注意:0AH功

49、能以功能以字节类型应用字节类型应用DS:DX指向的缓冲区指向的缓冲区。并不随缓冲区类型定义的变化而变化。并不随缓冲区类型定义的变化而变化。原因是:原因是:57例例 编程从键盘输入字符串,给出显示提示编程从键盘输入字符串,给出显示提示Please input:data SEGMENT stri DB Please Input:,$max DB 11,?,11 DUP(?)data ENDScode SEGMENT ASSUME CS:code,DS:datastart:MOV AX,data ;置缓冲区地址于置缓冲区地址于DS:DX MOV DS,AX LEA DX,stri MOV AH,09

50、H ;显示提示显示提示 INT 21H LEA DX,max ;等待从键盘输入等待从键盘输入 MOV AH,0AH INT 21H MOV AH,4CH INT 21H code ENDS END start利用利用DOS 功能调用,编写小程序功能调用,编写小程序58D:MASMDEBUG e0a09.exe-U ;查看程序查看程序129F:0000 B89D12 MOV AX,129D129F:0003 8ED8 MOV DS,AX129F:0005 8D160000 LEA DX,0000129F:0009 B409 MOV AH,09129F:000B CD21 INT 21129F:0

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(BIOS和DOS中断功能调用-课件.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|