




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第9章BIOS和DOS中断键盘I/O显示器I/O打印机I/O串行通信口I/O子程序调用主程序……CALLSUBP……
子程序…………RETDOS/BIOS调用
源程序……INTn……DOS/BIOS
例行程序…………IRET实现机制不同BIOS和DOS基本调用调用方法:1、将调用参数装入指定的寄存器中;2、BIOS或DOS功能号装入AH;3、如需子功能号,把它装入AL;4、按中断号调用DOS或BIOS中断(INT);5、检查或取得返回参数。例1:DOS调用:键盘输入,显示输出 MOV AH,01 ;DOS功能号:键盘输入
INT 21H
;DOS调用 MOVCHAR,AL ;返回参数:键入字符的 ;ASCII码(在AL中) MOVDL,’A’ ;调用参数:输出字符 MOV AH,02
;DOS功能号:显示输出
INT 21H
;DOS调用
1.键盘I/O
(1)BIOS键盘中断(INT16H)AH功能返回参数
0从键盘读一字符AL=字符码,AH=扫描码
1读键盘缓冲区的字符如ZF=0,AL=字符码, AH=扫描码如ZF=1,缓冲区空
2取键盘状态字节AL=键盘状态字节
字符数字键字符码为ASCII码功能键、控制键字符码为0对应一个扫描码例2:读取键盘状态字节,并以十六进制打印出来again:
movah,02h
int16h
mov
bx,ax callbinihex
movdl,0dh
movah,02h
int21h
jmpagain(2)DOS键盘中断(INT21H)AH
功能调用参数返回参数
1
从键盘输入一个字符并回显在屏幕上AL=字符
6读键盘字符,不回显DL=0FFH若有字符可取,AL=字符,ZF=0
若无字符可取,AL=0,ZF=1
7
从键盘输入一个字符,不回显AL=字符
8从键盘输入一个字符,不回显,AL=字符检测Ctrl-Break
A
输入字符到缓冲区DS:DX=缓冲区首址
B
读键盘状态AL=0FFH有键入,AL=00无键入
C
清除键盘缓冲区,AL=键盘功能号并调用一种键盘功能(1,6,7,8或A)例3:DOS调用:从键盘输入字符 MOVAH,01 ;DOS功能号:键盘输入
INT21H ;DOS调用 MOVCHAR,AL ;返回参数:键入字符 ;的ASCII码(AL)例4:输入字符串到缓冲区STRINGDATASEGMENTMAXLENDB32ACTLENDB?STRINGDB32DUP(?)DATAENDSCODESEGMENT
ASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AX
LEADX,MAXLENMOVAH,0AHINT21HMOVAH,4GHINT21HCODEENDSENDSTART32568H61H70H70H79H0DHMAXLENACTLENSTRING(2)DOS显示功能调用中断
INT21H
AH
功能调用参数
2
显示一个字符(检验Ctrl-Break)DL=字符 光标跟随字符移动
6
显示一个字符(不检验Ctrl-Break)DL=字符 光标跟随字符移动
9显示字符串DS:DX=串地址
串必须以$结束, 光标跟随串移动例5:DOS调用:显示输出一个字符
MOVDL,’A’ ;调用参数:输出字符 MOVAH,02 ;DOS功能号:显示输出 INT21H ;DOS调用
例6:显示字符串MESSAGEDB‘Thesortoperationisfinished.’,13,10,’$’
…
MOVAH,9 MOVDX,SEGMESSAGE MOVDS,DX MOVDX,OFFSETMESSAGEINT21H例7:除数为0时的软件中断(类型0)处理程序。此程序分成两部分:初始化部分和中断处理部分。初始化部分:设置新的0型中断向量,显示一条信息,然后完成终止和驻留后退出程序。中断处理程序:在发生被0除中断时,先保存有关的寄存器的值,然后询问是退出“Q”还是继续“C”,若键入“C”,则处理程序恢复所有的寄存器并执行IRET返回主程序(显示一个标记符“#”),此时除法的操作结果无效。若键入“Q”返回DOS。初始化部分:
leadx,zdivmovax,seg
zdivmov
ds,axmoval,0movah,25hint21hmovax,codemov
ds,axmov
dx,offsetok_msgmovah,9hmov21hmovax,1movdl,0divdlmovah,2movdl,‘#’int21hmovah,31h ;终止并驻留moval,0 ;AL=DOS返回吗mov
dx,((prog_len+15)/16)+16
;保留的节数(1节等于16字节)int21h
中断处理程序:zdiv procfar
stiprt_warn:
movax,code
mov
ds,ax
mov
dx,offsetwarn_msg
movah,9
int21hinput:movah,1
int21h
cmp
al,’c’ jecontinue
cmpal,‘q’ jeexit
mov
dx,offsetbeep
movah,9
int21h
jmp
prt_warnexit: movax,4cffh
int21hcontinue:
mov
dx,offsetcrlf
movah,9
int21h
cli
iretzdiv
endpok_msgdb0dh,0ah,’Zero-divisionHandler installed!’db0dh,0ah,’$’warn_msgdb‘Zer0-divisiondetected,’,07hdb‘ContinueorQuit(c/q)?$’beepdb07h,’$’crlfdb0dh,0ah,’$’prog_len
equ$-main软中断开发方法
对于软中断程序,则是通过软中断指令INTn来调用,为了定义一个用户自己的软中断指令,可以按以下步骤:1、确定一个空闲的中断号n。2、明确入口参数和出口参数。3、编写相应的中断处理程序。4、设置中断向量,即将新编写的中断处理程序的入口地址写入中断向量表的4*n开始的4个字节。在完成上述工作后,便可使用软中断指令INTn实现n号中断调用,执行用户自己开发的软中断处理程序。软中断程序设计举例例8:编写输出字符串“exampleforint”的中断处理程序,设中断号为5CODESEGMENTASSUMECS:CODEMAINPROCFARPUSHDSMOVAX,0PUSHAXCLIMOVAX,SEGNEWINT5MOVDS,AXMOVDX,OFFSETNEWINT5MOVAL,5MOVAH,25HINT21HSTIMOVCX,10L1:INT5H ;测试新中断
LOOPL1RETMAINENDPHELLODB‘exampleforint’NEWINT5PROCFARPUSHBXPUSHCXPUSHAX
MOVBX,OFFSETHELLOMOVCX,15L2:MOVAL,CS:[BX]CALLDISPCHARINCBXLOOPL2MOVAL,0DH ;显示回车
CALLDISPCHARMOVAL,0AH ;显示换行
CALLDISP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 业务流程再造方案计划
- 15 搭船的鸟 教学设计-2024-2025学年语文三年级上册统编版
- 2024年计算机二级考试终极试题及答案
- 婴儿早期发展特点试题及答案
- 2024人力资源管理师复习试题及答案
- 教师资格证电子商务多个考点测试题及答案
- 如何提高项目质量管理
- 01网络安全概念及规范
- 黑龙江省大兴安岭漠河一中2025届高三第二学期第一学段考试历史试题试卷含解析
- 黑龙江省大庆市重点中学2025届高三下学期联考期末试卷语文试题含解析
- (5年高职)商务谈判教学课件全套电子教案汇总整本书课件最全教学教程完整版教案(最新)
- 嘉兴华雯化工 - 201604
- 骨科手术学课件:髋及大腿的手术入路及部分手术介绍
- 冀教版七年级下册数学课件 第8章 8.2.1 幂的乘方
- 桥梁线形与变形检测检测方法实施细则
- 三级医院服务能力指南2022
- 除法口诀表(完整高清打印版)
- 部编三年级语文下册词语表带拼音
- 中国饮食礼仪(课堂PPT)
- 张素芳--孙重三小儿推拿流派特色与临床应用完整版
- 河北省城市建设用地性质和容积率调整管理规定---精品资料
评论
0/150
提交评论