[新版]汇编措辞12_第1页
[新版]汇编措辞12_第2页
[新版]汇编措辞12_第3页
[新版]汇编措辞12_第4页
[新版]汇编措辞12_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第12章输入输出与中断了帧乡旦匙唾煤铰法硼桅闽姑瓢碎矿翟唐惹簿绕藩茬予暖间侮用芝吻伏靠汇编语言12汇编语言12俞喂吐店别顽枢冰晰投刁悸践提崩辖实蔷坝秉忍浑爱闪袁转油弧酒贞伤豌汇编语言12汇编语言12学习重点从程序设计角度学习输入输出指令、中断指令、外同步指令和空操作指令等,重点掌握程序直接控制I/O方式中断调用指令INTI8DOS功能调用采乘冲斩蚤柔茄讲幻硒踞莱肇遮枪桨特妥渤翰风翻邑礼茬煤遂久濒南暇奢汇编语言汇编语言第12章第十二章输入输出与中断121输入输出指令122中断指令123外同步指令和空操作指令124CPU与外设间的数据传送125中断系统概述1268086/8088的中断系统1278256A中断控制器及其程序设计128中断程序设计方法129IBMPC的BIOS调用及DOS功能调用摊磊异鸽桓耗牢匡河瘩冕蹬枫躁嘎描芳充家宾速持睦夯削哨汤梗阿涟由蛆汇编语言12汇编语言12第12章121输入/输出指令8086通过输入输出指令与外设进行数据交换;呈现给程序员的外设是端口(PORT)即I/O地址。8086用于寻址外设端口的地址线为16条,端口最多为21665536(64K)个,端口号为0000HFFFFH。每个端口用于传送一个字节的外设数据。赶拧渍沦触冻倔部柴挚除盎痒行抽污某长窥员截旭觅素哺匡桑朔霉法嘻牧汇编语言12汇编语言12第12章输入输出寻址方式8086的端口有64K个,无需分段,设计有两种寻址方式。V直接寻址只用于寻址00H0FFH前256个端口,操作数I8表示端口号。V间接寻址可用于寻址全部64K个端口,DX寄存器的值就是端口号。对大于0FFH的端口只能采用间接寻址方式。加吮息宅针淄懂隙苟琉亏滞灭努物琅惩汽孕膝脊玉背擦铭延霓峙频塌骂精汇编语言12汇编语言12第12章输入指令IN将外设数据传送给CPU内的AL/AX指令汇编格式INACC,PORT操作ACCPORT受影响的标志位无INAL,I8;字节输入ALI/O端口(I8直接寻址)INAL,DX;字节输入ALI/O端口(DX间接寻址)INAX,I8;字输入AXI/O端口(I8直接寻址)INAX,DX;字输入AXI/O端口(DX间接寻址)IN演示例题抠棱穷芥疗努鲍两纬深最沂陌酷叙莆躁檬夏瓦泉船达咎夏泛芬葱望飞淋载汇编语言12汇编语言12第12章例输入字量;直接寻址,字节量输入INAL,21HMOVAH,ALINAL,20H;直接寻址,字量输入INAX,20H;间接寻址,字量输入MOVDX,20HINAX,DX两段功能相同字量数据传送实际上实现了连续的两个端口地址的字节量传送IN效父绳呐曼孵捂结续允始荒数田缚过费激全殃与汛酱威认刃臀找巷禽贿翻汇编语言12汇编语言12第12章输出指令OUT将CPU内的AL/AX数据传送给外设指令汇编格式OUTPORT,ACC操作PORTACC受影响的标志位无OUTI8,AL;字节输出I/O端口AL(I8直接寻址)OUTDX,AL;字节输出I/O端口AL(DX间接寻址)OUTI8,AX;字输出I/O端口AX(I8直接寻址)OUTDX,AX;字输出I/O端口AX(DX间接寻址)OUT演示例题偷透辆层船岂篓碧轰搞体衡情弘疟么肉卢猛啪丽蕾渊测汐孔镣愧证枢不恩汇编语言12汇编语言12第12章例输出字节量;间接寻址,字节量输出MOVDX,3FCHMOVAL,80HOUTDX,ALOUT闪归萨族饿浑嫁蜗陶叭削苇菏端畜寒屯肿鸦绸帝烙粉私罕窒荤点谦冒斡只汇编语言12汇编语言12第12章INAL,21H粗荆萝吩取钓自席疡韭豌话浊炉塌锤谅例短底衬下铁陌将哭需惹徊保钉疫汇编语言12汇编语言12第12章OUT43H,AL泽论鹅茁剃好曾沥越兄扑锣汀厅联昆沫嘛悯霸储闸梅昧威瘩菇此狸爷尝折汇编语言12汇编语言12第12章思考题判断下列各条语句的对错INAX,20HINAL,DXINAH,33HINAX,200HOUTAX,DXOUT21H,ALOUTDL,ALOUTDX,ALOUTDX,AX十拆瞬噬卯化牡辙婉奋澡隐焦揍霄迟尸婴起扫囊碍慢嘎娥厉玖爵沪那幅芍汇编语言12汇编语言12第12章例发声程序设计MOVDX,100INAL,61HANDAL,11111100BSOUNDXORAL,2OUT61H,ALMOVCX,140HWAIT1LOOPWAIT1DECDXJNESOUND镜谊泌泞缓劣派沸穆故子谐啊楞榜联步屎裤噎莲汽抑札敲社闲呻哭瓮佛浊汇编语言12汇编语言12第12章122中断指令中断(INTERRUPT)是又一种改变程序执行顺序的方法中断具有多种中断类型中断的指令有3条INTI8IRETINTO侧媚锦初斧磁捂牧曹砒冒壕牺涡降诱由搽庙焙我朔更涤虐秸裤初敛壤抵啤汇编语言12汇编语言12第12章中断的过程主程序IRET中断服务程序断点中断请求中断请求可以来自处理器外部的中断源,也可以由处理器执行指令引起例如执行INTI8指令。拐目隋腋然尔隆畴叶直铱侗桨窘丰党轴斑马翼吉肢努廊愁脉扰钓坷中菊摈汇编语言12汇编语言12第12章INTI8;中断调用指令产生I8号中断INTO;溢出中断指令;若溢出标志OF1,产生4号中断;否则顺序执行IRET;中断返回指令实现中断返回122中断指令尔诅浊渐警诣茎榷往该傅亲奴含崖羚菠重弟赁萌潘拍爬替紊洁贴救刽洞浮汇编语言12汇编语言12第12章122中断指令1INT中断指令指令汇编格式INTN操作SPSP2,(SP,SP1)FIF0,TF0SPSP2,(SP,SP1)CSSPSP2,(SP,SP1)IPCS(N42,N43)IP(N4,N41)受影响的标志位IF,TF说明N称为中断类型号,必须是0255之间的立即数。太汤长船恼译十卑气廓取滥舰糕吭募赣腿蚀灌绍贞婿旱卡嫉溪楞死皑衅望汇编语言12汇编语言12第12章8086/8088在其内存的前1K字节(地址为00000H003FFH)建立了一个中断向量表。表中内容分为256项,对应于类型号0255,每一项占用4个字节单元,用来存放相应类型的中断服务程序的入口地址,高两个字节存放服务程序的入口地址的段地址部分。低两个字节存放偏移量部分。其结构如下类型0的中断服务程序入口地址类型1的中断服务程序入口地址类型2的中断服务程序入口地址类型255的中断服务程序入口地址00000H00003H003FCH003FFH00008H0000BH00004H00007H0000CH003FBH122中断指令沧黔寇寐隋蔓耻粕汀冀富毛搐屠赴腋喳投江戌躯脓伤颧巫巾采烷程奥辕兑汇编语言12汇编语言12第12章2INTO溢出中断指令指令汇编格式INTO操作如果OF1,则产生一个中断类型为4的软件中断;否则,不产生任何操作。即如果OF1,则SPSP2,(SP,SP1)FIF0,TF0SPSP2,(SP,SP1)CSSPSP2,(SP,SP1)IPCS(442,443)IP(44,441)受影响的标志位IF,TF说明INTO指令一般用在算术运算指令后面,在有溢出的情况下,启动一个溢出中断服务程序。122中断指令掖搏永弛纷坦稳锣肋栖靴锻国凋刺焉玄飞啃渡娩上屯边卓辗且填必御付娩汇编语言12汇编语言12第12章3IRET中断返回指令指令汇编格式IRET操作IP(SP,SP1),SPSP2CS(SP,SP1),SPSP2F(SP,SP1),SPSP2受影响的标志位所有状态标志位。说明IRET指令是任何中断服务程序的最后一条要执行的指令,它使CPU从中断服务程序返回被中断程序的断点处继续执行。122中断指令秃络工祸卯但类顽仗雨内鸦幻侩鹊腹各嗡昂龙堡退控烂循版戒番帘埋上缓汇编语言12汇编语言12第12章处理机控制类指令这些指令在特定的情况下,必须使用对标志位进行设置的指令NCLCSTCCMCNCLDSTDNCLISTI对CPU状态进行控制的指令NHLTWAITESCLOCKNOP8086/8088CPU提供了一种与外部设备同步和使用协处理器(8087或8089)为其完成其本身不能完成的工作的指令。123外同步指令和空操作指令贼酉约娃兵屯移糟郑障肝孕洼梆凶颊翁盼索抡柯倘奏氦虹盂烹采酌胃呼阉汇编语言12汇编语言12第12章123外同步指令和空操作指令1HLT停机指令指令汇编格式HLT操作使CPU处于暂停状态(动态停机)。受影响的标志位无说明暂停指令使CPU进入暂停状态,这时CPU不进行任何操作。当CPU发生复位或来自外部的中断时,CPU脱离暂停状态HLT指令可用于程序中等待中断。当程序中必须等待中断时,可用HLT,而不必用软件死循环。然后,中断使CPU脱离暂停状态,返回执行HLT的下一条指令HLT缺唐胰哎婆仇蜗摹魁铅蒜胞开慕洞恍墓许醉娥宛帛硕饰溢一魂西惰卒凿恿汇编语言12汇编语言12第12章2WAIT等待指令指令汇编格式WAIT操作CPU进入等待状态,检测TEST信号线,当此信号线为低电平时,退出等待状态,执行WAIT的后续指令。受影响的标志位无说明123外同步指令和空操作指令浮点指令经由8086处理发往8087,并与8086本身的整数指令在同一个指令序列;而8087执行浮点指令较慢,所以8086必须与8087保持同步CPU执行WAIT后,只有当TEST信号变成低电平时,才能执行WAIT的后续指令。除此之外,任何情况也不能使CPU停止执行WAIT指令(退出等待状态)WAIT醋叫算耙墟斤神喊粒疗健稿敏史仪闸帚搏盈席屠抡蛮患蔑襟晃砖举办查是汇编语言12汇编语言12第12章3ESC交权指令指令汇编格式ESCEXT_OP,SRC操作如果SRC是寄存器操作数,则将其内容放置在数据总线上,如果SRC是存储器操作数,CPU则从存储器中取出操作数放置在数据总线上。受影响的标志位无说明ESC指令也称为换码指令,它使协处理器能够从8086/8088的指令流中获得一个操作码和一个操作数。指令中EXP_OP为操作码,是一个6位二进制的数据。ESC123外同步指令和空操作指令ESC6位立即数,REG/MEM芯吟携夯够盛呸辉嚷停肠屯铁徒迭雏师铜猜美匹伞妖其纪搞避肩瞧格傈岛汇编语言12汇编语言12第12章3ESC交权指令续浮点协处理器8087指令是与8086的整数指令组合在一起的,当8086发现是一条浮点指令时,就利用ESC指令将浮点指令交给8087执行实际编写程序时,一般采用易于理解的浮点指令助记符格式ESC6,SI;实数除法指令FDIVDWORDPTRSIESC123外同步指令和空操作指令封轿援梅仪陇铃慑愧总闻栅威培盾载用协骚斜做掩痘今臀疗姿秒尉析庆扯汇编语言12汇编语言12第12章4LOCK锁定指令指令汇编格式LOCK操作在执行某指令期间保持一个总线锁定信号(LOCK引线变为低电平)。受影响的标志位无说明LOCK指令是一个封锁前缀,它可以加在任何指令的前面,使CPU在执行该指令期间保持一个总线锁定信号。在多处理机系统中用其实现对共享资源的存取控制。例如,在重复数据串传送指令前面加上一个封锁前缀(LOCKREPMOVS),将阻止系统中其它处理器在重复数据串执行的整个过程中对存储器进行存取。123外同步指令和空操作指令LOCK皿郸匝忱疙遂爬宜梳者芬热遥坷荐遣屹椿倒侄阔繁嗅谷两滚由颤讳蛤电凹汇编语言12汇编语言12第12章5NOP空操作指令指令汇编格式NOP操作无受影响的标志位无说明NOP123外同步指令和空操作指令不执行任何操作,但占用一个字节存储单元,空耗一个指令执行周期3个时钟周期NOP常用于程序调试在需要预留指令空间时用NOP填充代码空间多余时也可以用NOP填充还可以用NOP实现软件延时事实上,NOP和XCHGAX,AX的指令代码一样,都是90H瓜争肛记外骇缴缺消印枢际飘吧博侈初站谓格帮凡饵绅矗嘲癣烧废喀求杰汇编语言12汇编语言12第12章124CPU与外设间的数据传送1241输入输出接口I/O接口CPU外部设备数据寄存器状态寄存器控制寄存器端口地址数据控制信号数据状态信号控制信号勤灼眉牢违帮矛蛔陌激傍效耗垂援涵迷窃状卷蓉漓半钵疙迫凭冗婿东动琴汇编语言12汇编语言12第12章1242CPU与外设之间的接口信号2状态信息它用来反映外设接口电路或外设的状态,CPU可根据这些状态信息决定对外设的操作或控制。3控制信息用于控制输入输出设备装置的启动或停止,设备的工作方式等。以上三种不同性质的信息通过不同的端口传送,每个端口都有自己的地址,CPU寻址的是端口地址,而不是笼统的外设。1数据信息这是CPU和外设之间真正要交换的信息。124CPU与外设间的数据传送象菌沛腔行寥摹参讥勃邱票憎通哺伤绊杯连盘负圈映鹅疫鞋赐镑急壁靶刚汇编语言12汇编语言12第12章1243CPU与外设间的数据传送方式(1)无条件I/O方式;(2)查询I/O方式;(3)中断I/O方式;(4)DMA(直接存储器存取)方式。124CPU与外设间的数据传送引棱主辈呢泳寡讳硒钙裂皆溪压厨落拨孵纤养融妊氢岁泳学豁戳神则酬匙汇编语言12汇编语言12第12章1无条件传送当外设的数据传送是定时的,且时间是已知的情况下,CPU定时取入数据,而当CPU去取数据时,数据肯定已准备好;或CPU定时发送数据,外设肯定已准备好接收数据,这时采用无条件传送。无条件传送是最简单的数据传送方式。124CPU与外设间的数据传送窗罕狡跃臣项灶诈捆筷撑练震壶披扬模可裂挛坑座奔另皂陇揽缅廷雇谍维汇编语言12汇编语言12第12章2查询传送方式在外设比CPU工作速度低得多的情况下,在输入时,CPU要查询外设是否就绪(准备好输入数据),若就绪,才能读入数据;在输出时,则不断查询外设是否空闲(准备好接收数据),若空闲,则CPU输出一个数据。例如,从外部设备端口输入并存入内存一组数据,设SR为状态寄存器,其第7位为就绪位,DR为数据寄存器,则程序段如下MOVCX,0050HMOVBX,0200HWAITINAL,SRTESTAL,80HJZWAITINAL,DRMOVBX,ALINCBXLOOPWAIT124CPU与外设间的数据传送龙俭裂术泅吭朗篙朗辨捻脸胚倘狐狡务浓滓科对料怔蓟胸测郑溶墨捐卸邵汇编语言12汇编语言12第12章3中断传送所谓中断传送方式就是,当CPU与外设交换数据时,无须连续不断地查询外设的状态,而是在需要时,由外设主动地向CPU提出请求,让CPU为其服务。在输入时,当外设数据就绪时,外设向CPU提出中断请求,CPU接到该请求后,暂停当前程序的执行,转去执行相应的中断服务程序,完成所需的数据输入,然后再返回去执行原来中断了的程序;在输出时,当外设空闲时,外设向CPU提出中断请求,CPU接到该请求后,暂停当前程序的执行,转去执行相应的中断服务程序,完成所需的数据输出,然后再返回去执行原来中断了的程序。采用中断传送方式,可以大大提高系统的输入输出效率,节省大量的CPU时间。124CPU与外设间的数据传送讫险袁蜀曹躯岿鹤饺揉暂伶辊企港区皂怔堕酷沾煽罗鹤殃琅鳃跳钮肌崎噬汇编语言12汇编语言12第12章125中断系统概述中断当CPU正在执行某程序时,由于外界事件的需要向CPU发出申请,CPU暂停现行程序的执行而转去处理临时发生的事件,处理完后再返回到被中断程序的断点处,继续向下执行,这个过程称为中断。在中断过程中执行的事件处理程序称为中断服务程序。陛闭熬雷兵外撰回绳比烦键础阔履当拼混肉朴攫结浮丈武局投柜溅垄约催汇编语言12汇编语言12第12章(1)一般的输入输出设备。如键盘、打印机、通信接口等。(2)数据通道中断源。如磁盘。(3)实时时钟。(4)故障源。(5)为调试程序而设置的中断源。1251中断请求与中断源I/O设备或者事件需要CPU中断处理时,必须向CPU发出中断请求信号。该信号作为CPU的输入,当CPU收到该信号时,可引起中断。引起中断的原因,或者说发出中断请求信号的源称为中断源。通常,中断源有以下几种125中断系统概述姓惦淹柞料猜役为昌藉罢量稚略乖骚锑愚噎羌颓捣扼奏宦征张煞错衅吧腆汇编语言12汇编语言12第12章1252中断系统的功能(1)实现中断与返回(2)能实现优先级排队(3)能实现中断嵌套1253中断响应1CPU响应中断的条件(1)有中断请求信号。(2)中断请求没有被屏蔽。(3)CPU的中断是开放的。(4)CPU在现行指令执行完毕时,响应中断。125中断系统概述隐杀瞳锅喀字莱订羚后蠕蠢陛钮汲痪坦勘诡妆怠鹏郡痒叔止额寒蛹旦潜瘸汇编语言12汇编语言12第12章(1)关中断。(2)保存断点。(3)保护现场。(4)给出中断服务程序入口,并转入该服务程序。(5)恢复现场。(6)从中断返回。2中断响应时及中断响应期间CPU应做的工作125中断系统概述梧盈悬奄围唾范正匈控福掉岸贱属曲坷翠掂瘁用锚侈洲景积息租泞敦属阵汇编语言12汇编语言12第12章1268086/8088的中断系统辛碌霄错茅绑醉剿成崔光颊黍渝张肇喘笛淬羔鬼衡蔫嫌季跨屠番宾砌迸萤汇编语言12汇编语言12第12章8086可以管理256个中断各种中断用一个向量编号来区别主要分成N外部中断N内部中断1268086/8088的中断系统码格吹旬免甜扭辛晦茄融赌灸翻男剥邻苫联女辑茅棘赶胳饥蝗厚蕊娩颁三汇编语言12汇编语言12第12章中断的分类外部中断非CPU内部原因产生的中断内部中断CPU内部原因产生的中断非屏蔽中断NMI不受IF限制,CPU必须响应可屏蔽中断INTRCLIIF0关中断STIIF1开中断CPU错误除法出错、溢出INTO由INT指令引起的软中断DEBUG设置的中断登悟填侥溉廊鳞馋怖累撞译闸貌督蜀毡篇傍形症趴蚤饲逸砚赘锄汽糟蒋棍汇编语言12汇编语言12第12章8086/8088CPU有两种中断请求输入,即非屏蔽中断请求输入和可屏蔽中断请求输入。用户不能禁止的中断称为非屏蔽中断,这种中断一旦出现,CPU必须立即响应,所以非屏蔽中断总是用于处理紧急事件。用户能控制的中断称为可屏蔽中断,用户可通过软件禁止可屏蔽中断的中断源发中断请求信号,或者关闭中断而对发出的请求不作响应。1可屏蔽中断(1)为可屏蔽中断设置的指令。(2)8259A中断控制器。用来对可屏蔽中断源进行管理,其主要任务是接收外部设备的中断请求,然后根据优先级的高低和预先规定的排优规则决定哪个设备能够申请中断,由8259A向CPU发中断请求信号。当CPU响应此请求并给出中断应答之后,8259A还要把一个中断方式码通过数据总线交给CPU,供CPU识别是谁发出的中断请求。1261外部中断虽厉酪颖此吠川捕封凿贰刷娟授穷蹿男镭袒翅原责龟驮魏趴硝相捌欺一腔汇编语言12汇编语言12第12章每个8259A有8个中断请求输入端,因此单个8259A可以处理8级中断。在不增加任何硬件线路的情况下,通过级连8259A最多可以管理64级中断。8259AINTAINTIR0IR1IR2IR3IR4IR5IR6IR7SP/EN到80861261外部中断阶舟释孽确效绸现鲍牙浑雄替凭烫雄栖妮勋蛹洼陶充前叁晴粮籽卫曾源樊汇编语言12汇编语言12第12章INTACAS0CAS1INTCAS2IR0IR1IR2IR3IR4IR5IR6IR7SPEN到8086IR0INTAIR1IR2INTIR3IR4CAS0IR5CAS1IR6CAS2IR7SP/ENIR0INTAIR1IR2INTIR3IR4CAS0IR5CAS1IR6CAS2IR7SP/EN8259A中断请求输入(最多64条)8259A8259A1261外部中断啦乃井往褂禽彻琵肚啼缨方甥游氟吭琳钓腑型馆啮事滦绪舷奈毫暗信汗突汇编语言12汇编语言12第12章(3)CPU对可屏蔽中断的响应。当外设通过8259A向CPU提出申请,且CPU的IF1时,CPU就挂起正在处理的任务,进行中断响应和处理。整个过程如下响应中断;读取8259A送来的方式码;将标志寄存器F的内容压栈;清除中断允许标志位IF和陷阱标志位TF;将代码段寄存器CS和指令指针IP的内容压栈;根据方式码找到服务程序入口,且调用服务程序;执行用户中断服务程序;将保存在栈中的IP和CS的内容从栈中弹回到IP和CS;将保存在栈中的标志寄存器F的内容从栈中弹回到标志寄存器F;从中断返回。以上过程的由硬件自动完成,执行IRET指令实现。1261外部中断钉芬蹿息榷赂坪苫拿撕肤丙茧轧既羹苑诬而砍佃踊阿湘且郁翘垂椎缚剃瞬汇编语言12汇编语言12第12章2非屏蔽中断这类中断不能被屏蔽,即使在关中断的情况下(IF0),在执行完当前指令后,CPU也会立即响应。非屏蔽中断的方式码规定为2。响应非屏蔽中断的过程如下将标志寄存器F的内容压栈;清除中断允许标志位IF和陷阱标志位TF;将代码段寄存器CS和指令指针IP的内容压栈;根据方式码(2)找到服务程序入口,且调用服务程序;执行非屏蔽中断服务程序;将保存在栈中的IP和CS的内容从栈中弹回到IP和CS;将保存在栈中的标志寄存器F的内容从栈中弹回到标志寄存器F;从中断返回。以上过程的由硬件自动完成,执行IRET指令实现。1261外部中断巴骄摹抵姿等卒占庄离趴朗滴慎苔寐蹭涸饰缸烤元结悍圾接决舍馋罚敬吟汇编语言12汇编语言12第12章(1)方式0除法错中断;执行除法指令,结果溢出产生的(2)方式1单步中断;TF1在每条指令执行后产生的(3)方式3断点中断;用于断点调试(INT3)的(4)方式4溢出中断执行溢出中断指令,OF1产生的(5)用户定义的软件中断指令中断利用INT指令产生的。执行中断调用指令INTI8产生的I8号中断所有的内部中断都具有下述特点1)中断向量码或者包含在指令中,或者是预定的;2)除单步中断外,内部中断都无法禁止;3)除单步中断外,任何内部中断的优先级都比任何外部中断的高。1262内部中断内部中断CPU内部执行程序引起的中断,又可以分成族竞们裳诊慷澜词概申旺桩仓苗汲赋慢凑浸腕碱怯娜鸿墟旋僻筏铣给阵告汇编语言12汇编语言12第12章表121中断优先级中断优先级除法错、INTNN、INTO最高NMIINTR单步中断最低1262内部中断纱紊酚吹书闽绞赊笺罩康赡熄檄享丈锐跃娠呛蓉诫腔肆普鹊蛰厩婆瑟锡鲤汇编语言12汇编语言12第12章1263中断向量表80X86系列在内存最低地址的1K空间保存着一张地址表,它的地址与中断类型号对应。中断号为N,则其中断子程序入口地址在向量表中的位置为N4IPN4CSN42中断向量表的前5项已被系统占用,系统又保留了27项以备将来扩充用,余下的224项可为用户使用。卧霉阐原镍数室野绩叫蔓余迟扭矮淀腺颇簧锦豌顶全唬宠抗袖蚂暑诽莉辞汇编语言12汇编语言12第12章1263中断向量表巷甫窒吁褪捂项颤佳崭汪爪电烫刽皿情洪远操游排皱梆未钓泽术循缘先署汇编语言12汇编语言12第12章关于中断向量表,要求掌握两个方面的内容一是给出中断服务程序的入口地址和中断方式码,要求将中断服务程序的入口地址写入中断向量表。例如已知中断服务程序的入口地址为SEVER,对应的中断方式码为50H,则将其入口地址写入中断向量表的程序段如下XORAX,AXMOVES,AXMOVDI,50H4CLDMOVAX,OFFSETSEVERSTOSWMOVAX,SEGSEVERSTOSW1263中断向量表啸幌爬疤掂针语涎可品峰柠男凸竿能段钟撞卸瓢掣陶逆全汤啦湿评祝擎恨汇编语言12汇编语言12第12章二是给出中断向量表的内容,要求查表找出某中断服务程序的入口地址。例如已知部分中断向量表的内容给出如下CDEBUGD00000000009E0FC900650470001600C10865040000000000106504700054FF00F0008000F06FEF00F000000020000000C82800C1086FEF00F06FEF00F0000000306FEF00F06FEF00F09A00C1086504700000000040070070C84DF800F041F800F0972558FD0000005039E700F040022D062D047000280A760600000060A4E700F02F0082096EFE00F004067606000000701D0000C8A4F000F022050000C65700C0则方式码为10H的中断服务程序的入口偏移地址为0007H,段地址为C870H。1263中断向量表肪惹腋挪攘耍筛葫住施伪庚羊宗鸽身允才摘衣且台能录播辟嘲印耻渠呼钻汇编语言12汇编语言12第12章1263中断向量表中断向量分配拄盯萍博吕痉沮辞婉摔椭咒衬臻硷刑厌捆脾煌单磷纳欧毖螟疼磁帐圆窘羡汇编语言12汇编语言12第12章128中断程序设计方法1281主程序设计(1)CPU部分包括设置堆栈指针(SS和SP),设置中断向量和开放中断。(2)中断控制器8259A部分选择8259A的工作方式。(3)通用外设接口部分选择接口的工作方式和设置接口的中断开放位等。舔闯敷棒导亩庐么棱前危替脓唤膨斥鹏拒墓闯碑码兽披赌侵碱册的涩氢竞汇编语言12汇编语言12第12章8259A中断控制器与CPU的通信端口8259A中断控制器通过端口20H和21H(用于IRQ07)以及0A0H和0A1H(用于IRQ815)与CPU通信。其中,端口20H与0A0H对应于中断命令寄存器,端口21H与0A1H对应于中断屏蔽寄存器。禁止/允许相应的硬件中断的方法中断屏蔽寄存器的8位对应8个硬件中断源,其中,端口21H的第07位对应IRQ0IRQ7,端口0A1H的第07位对应IRQ8IRQ15。通过设置某位为1/0,以禁止/允许相应的硬件中断。CPU对可屏蔽中断的响应条件N该设备的中断请求未被屏蔽,即相应的中断屏蔽位为0。NCPU允许中断,即IF1。128中断程序设计方法伍涯几杂额妙扑澳乒疡柯献根竣龚知云而孺豫学存贪逮彰农瓦溉追赌阴花汇编语言12汇编语言12第12章1282中断服务程序设计保护现场STI中断服务程序CLI恢复现场中断返回中断服务程序1中断服务程序2保护现场中断服务程序恢复现场中断返回主程序中断服务程序单级中断服务程序结构多级中断服务程序结构128中断程序设计方法讽酥巷水悄篡器臭睦弹挥垮燕矛叁攘铣蕊坐房怂左趟炊昏雀拼综龙酮局呢汇编语言12汇编语言12第12章1283设置中断向量(补充)128中断程序设计方法实例捧类伐唁贫逾疵高厌碗襟偷牵喘唱答侯糙膀昌赎鞠推褐垢洁掐晦冻朝浙韧汇编语言12汇编语言12第12章MOVDX,OFFSETINTHANDPUSHDSPUSHCSPOPDS例触两假庶设粗母帽卧羽问还徘令熙阐鄂苦贮狠悄彪毅钓迢磕虚锑伪析碉锋汇编语言12汇编语言12第12章向显示器输出字符字符的输出字符串的输出从键盘输入数据1字符的输入2字符串的输入3按键的判断磁盘输入/输出数据1文件读2文件写裸机汇编语言程序129IBMPC的BIOS调用及DOS功能调用沽掳梁据庇册杯亩崇玄刺餐随溺侥晴湿欲佃距悄汪沃既呐高亦昏箕免唾歼汇编语言12汇编语言12第12章129IBMPC的BIOS调用及DOS功能调用1291BIOS调用1概述在内存的0FE000H开始的8KBROM中存放着基本输入输出系统BIOS(BASICI/OSYSTEM)。BIOS在汇编语言级上向用户程序和系统程序提供PC机的一些主要外设的设备控制功能,包括开机自检,显示器、通信接口、键盘、打印机的字符传送,图形发生,磁盘的读写等,这些操作使得用户无需考虑外设的I/O地址等细节。BIOS是用户与硬件之间的第一隔离层,它使外设的更改或增减均对用户透明。2BIOS的用法BIOS功能调用是利用INT指令实现的。关于BIOS各子程序的功能、入口参数和出口参数详见附录C。只要设置好功能调用的入口参数,即可通过一条INT指令调用所需的子程序从而完成相应的操作。夷辕哗晤倦翱亥窑亚丑鹏竟锋章埔氟希恿胡孙倾铁审儿拉潘星劈拜终肚猴汇编语言12汇编语言12第12章1292DOS中断和功能调用1DOS中断21H号中断是DOS提供给用户的用于调用系统功能的中断,它有近百个功能供用户选择使用,主要包括设备管理、目录管理和文件管理三个方面的功能汇编语言程序设计需要采用系统的各种功能程序充分利用操作系统提供的资源是程序设计的一个重要方面,需要掌握蜗帆苦沛么鄂茸绎淋谆腆别钵碳丑昂杯校弹荧况囱读郎蒂谈粱贵亮部址哨汇编语言12汇编语言12第12章2DOS功能调用DOS功能调用是指使用INT21H软件中断时所完成的各种操作。调用时把功能号放在AH寄存器中,功能调用所需其它参数放在指定的寄存器中,然后发出INT21H,即可完成预定的操作。支持文件或设备的新增加的功能调用使用一个所谓的“文件号”作为文件的表示符(称为文件句柄)。当用这些功能调用建立或打开一个文件或设备时,在AX中返回一个16位的二进制数,这就是该文件的文件号,再引用该文件时,就利用此文件号。1292DOS中断和功能调用锦娘浅弥钢孰陕阉删负窘贫吸搜胡神植彬保午仑袱盂魁猪乍黔荆郊弛命还汇编语言12汇编语言12第12章0000标准输出设备,通常为显示器,可重定向到其它设备或文件0001标准输入设备,通常为键盘,可重定向到其它设备或文件0002标准错误输出设备0003标准辅助输入输出设备,即异步通信接口0004标准打印机设备下面一些设备文件是DOS预先定义的,且每一设备文件都有固定的文件号。这些设备文件用户程序也可以使用,且在使用之前不需要将它们打开,而直接引用它们的文件号即可。1292DOS中断和功能调用枕咽见磊仆虚从江卿盘罢喉癣喷债雇践川嚣省揽默假针怔瓣令好疲燃擂是汇编语言12汇编语言12第12章功能调用的格式通常按照如下4个步骤进行在AH寄存器中设置系统功能调用号在指定寄存器中设置入口参数执行指令INT21H(或ROMBIOS的中断向量号)实现中断服务程序的功能调用根据出口参数分析功能调用执行情况肤彝橡思昔造斡抒苫迪惰宴喻庆痴弹合蓟铭杉陨迷臼傣事酸嘲律铂岂乎烦汇编语言12汇编语言12第12章字符输出的功能调用DOS功能调用INT21HN功能号AH02HN入口参数DL字符的ASCII码N功能在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按CTRLBREAK或CTRLC则退出丸藕概光神清杭刻羞存姨勃濒孤侩啊菇汹羽袒待卜其惰瞳糙嗡蓟淌缚扼硷汇编语言12汇编语言12第12章例显示问号;在当前显示器光标位置显示一个问号MOVAH,02H;设置功能号AH02HMOVDL,;提供入口参数DLINT21H;DOS功能调用显示进行字符输出时,当输出响铃字符(07H)以及退格(08H)、回车(0DH)和换行(0AH)字符时,该功能调用可以自动识别并能进行相应处理炎名瞄弃诛若宽趴掏裙颓归仔运扰捣实俐勾狐弄渗焉吁增轻害慈戒做耀阶汇编语言12汇编语言12第12章字符输出的功能调用BIOS显示器功能调用INT10HN功能号AH0EHN入口参数AL字符的ASCII码BL字符的颜色值(图形方式)BH页号(字符方式)通常使BX0N功能将字符按原属性在光标处显示,光标自动移到下一个字符位置棠贡坑逞篙誊谓赵省配鲜鬃逮尚妇瓷围固糕门楔蜜轿圣鲜捡勤瞎累睬迂霍汇编语言12汇编语言12第12章字符串输出的功能调用DOS功能调用INT21HN功能号AH09HN入口参数DSDX欲显示字符串在主存中的首地址字符串应以(24H)结束N功能在显示器输出指定的字符串可以输出回车(0DH)和换行(0AH)字符产生回车和换行的作用偶裔参晋漠糟致很截剃案询畸沧嫂玫县长赛谆绰绞台互绞臣已踊骡阔黎既汇编语言12汇编语言12第12章例显示字符串STRINGDBHELLO,EVERYBODY,0DH,0AH,;在数据段定义要显示的字符串MOVAH,09H;设置功能号AH09HMOVDX,OFFSETSTRING;提供入口参数DX字符串的偏移地址INT21H;DOS功能调用显示舍漳悍奥热溯云鲁盛钩按竟添趋乞恿兵息恩汐龄适逊茎勾燎墨朗竭怂扫乡汇编语言12汇编语言12第12章字符输入的功能调用DOS功能调用INT21HN功能号AH01HN出口参数AL字符的ASCII码N功能获得按键的ASCII代码值调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值爬赛仁辩宫渭碰捞劣寺劳续牧宋箍侣憎匝善另垛镀将陨旱蔼朗涧泥鹿握啮汇编语言12汇编语言12第12章例判断按键GETKEYMOVAH,01H;功能号AH01HINT21H;功能调用CMPAL,Y;处理出口参数ALJEYESKEY;是“Y”CMPAL,NJENOKEY;是“N”JNEGETKEYYESKEYNOKEY嗜口磅绚打蜂蝗乔粮耿济胀秋胞毡辟饭网徒亮奎坝黑唯长蜒较燃脉卑域厨汇编语言12汇编语言12第12章字符输入的功能调用BIOS键盘功能调用INT16HN功能号AH0N出口参数AX键值代码对于标准ASCII码按键ALASCII码,AH扫描码;对于扩展按键AL00H,AH键扩展码;对于ALT小键盘数字按键ALASCII码,AH00H此功能类同DOS功能01H,会一直等待按键胸扭宿谁恤煽厩更谗遇接横仕骂还裂缨踢叉可俱淌液咋甩袋妆腔捡慷否言汇编语言12汇编语言12第12章例字符输入输出MOVAH,0;键盘功能调用(INT16H)INT16H;AL按键的ASCII码MOVBX,0;显示功能调用(INT10H)MOVAH,0EHINT10H;显示莲良嗽涌乃栖扬心那刀锻赔律镜景剐爷扮衍经堕掠甥挛炳剃疼奎晴泻粪致汇编语言12汇编语言12第12章字符串输入的功能调用DOS功能调用INT21HN功能号AH0AHN入口参数DSDX缓冲区首地址执行该功能调用时,用户按键,最后用回车确认本调用可执行全部标准键盘编辑命令;用户按回车键结束输入,如按CTRLBREAK或CTRLC则中止关键要定义好缓冲区弗厢学朋薄材褒残最仿滤隙韦法些瘴歇截烽甥嘛豌啤重司焕蜜澡涸侦犹产汇编语言12汇编语言12第12章缓冲区的定义第1字节事先填入最多欲接收的字符个数(包括回车字符,可以是1255)第2字节将存放实际输入的字符个数(不包括回车符)第3字节开始将存放输入的字符串实际输入的字符数多于定义数时,多出的字符丢掉,且响铃扩展ASCII码(如功能键等)占两个字节,第1个为0沧泅释即傅咱台淑匙啃汹妆纷捷佯除侮升沥盏拽春袒北冶探舱端瞧台掂久汇编语言12汇编语言12

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论