第2章8086的指令系统三yk控制转移指令

上传人:ni****g 文档编号:589881153 上传时间:2024-09-11 格式:PPT 页数:60 大小:357.50KB
返回 下载 相关 举报
第2章8086的指令系统三yk控制转移指令_第1页
第1页 / 共60页
第2章8086的指令系统三yk控制转移指令_第2页
第2页 / 共60页
第2章8086的指令系统三yk控制转移指令_第3页
第3页 / 共60页
第2章8086的指令系统三yk控制转移指令_第4页
第4页 / 共60页
第2章8086的指令系统三yk控制转移指令_第5页
第5页 / 共60页
点击查看更多>>
资源描述

《第2章8086的指令系统三yk控制转移指令》由会员分享,可在线阅读,更多相关《第2章8086的指令系统三yk控制转移指令(60页珍藏版)》请在金锄头文库上搜索。

1、 朱 泽 民 计算机科学与技术学院 13995939009凤西枉疫蓑叠聚渭矾阑搬巷斟渡敝掳翁九柞欣贿巢朵葛儒哦珐肝冰住紊全第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令第第 2 章章 8086的指令系统的指令系统(三)(三)利辊好欢建桌融蚀目锌倍综厚溅朱球丙铣镁欠辆营瘩由宏蒙冉潮渍汕倍涸第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令2.4 控制转移类指令控制转移类指令n控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令重点掌握:JMP/Jcc/LOOP CALL/RETINT n/IRET

2、常用系统功能调用一般了解: LOOPZ/LOOPNZ INTO 控控制制转转移移类类指指令令通通过过改改变变IP(和和CS)值值,实现程序执行顺序的改变实现程序执行顺序的改变墨驾淹痛妥鱼襟牌昨媳集虹淤铬时复崩渠鸥入不摔滥勋狈莲俩孤艺味猴胖第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令22.4.1 无条件转移指令无条件转移指令n只要执行无条件转移指令只要执行无条件转移指令JMP,就使程序转到,就使程序转到指定的目标地址处,从目标地址处开始执行指指定的目标地址处,从目标地址处开始执行指令令n操作数操作数label是要转移到的是要转移到的目标地址(目的地址、目标

3、地址(目的地址、转移地址转移地址)JMP labelJMP label;程序转向;程序转向labellabel标号指定的地址标号指定的地址具省辉彦件担露较为疑瞳嘻锤谍媚牡瞳淑填盐库惺值盂购卤转迅逾裕礼锅第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令3目标地址的范围:段内目标地址的范围:段内n段内转移近转移(near)q在当前代码段64KB范围内转移( -3276832767)q不需要更改CS段地址,只要改变IP偏移地址n段内转移短转移(short)q转移范围可以用一个字节表达,在段内128127范围的转移代代码码段段代代码码段段脉宦浦嚣好饱伎尊狙蔚樟管蝗尧

4、造秤硫芝找策眯在酬罩挞属搐艾塑抄惕疤第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令4目标地址的范围:段间目标地址的范围:段间n段间转移远转移(far)q从当前代码段跳转到另一个代码段,可以在1MB范围q更改CS段地址和IP偏移地址q目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址代代码码段段代代码码段段 实实际际编编程程时时,MASM汇汇编编程程序序会会根根据据目目标标地地址址的的距距离,自动处理成短转移、近转移或远转移离,自动处理成短转移、近转移或远转移 程序员可用操作符程序员可用操作符short、near ptr 或或far ptr 强

5、制强制恍鞘均诊俩倘鳞葡没荐党狼茵窘六宙盟阶沸歌差粒钾甩池缮连吉巢菩戚啃第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令5nJMP指令分成指令分成4种类型:种类型: 段内转移、相对寻址段内转移、相对寻址 段内转移、间接寻址段内转移、间接寻址 段间转移、直接寻址段间转移、直接寻址 段间转移、间接寻址段间转移、间接寻址谓淹涧巾挂挽六筹躬玛尘晒荆腺都游厉闻鸡剩缩幸有乾视诲枉蔡手淳绘竖第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令6段内转移、相对寻址段内转移、相对寻址JMP labelJMP label;IPIP+IPIP+位移量

6、位移量n位移量是紧接着位移量是紧接着JMP指令后的那条指令的偏移地指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移址,到目标指令的偏移地址的地址位移n当向地址增大方向转移时,位移量为正;向地址当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负减小方向转移时,位移量为负again:again:dec cxdec cx;标号;标号againagain的指令的指令jmp againjmp again;转移到;转移到againagain处继续执行处继续执行jmp outputjmp output;转向;转向outputoutputoutput:output: mov res

7、ult,almov result,al;标号;标号outputoutput的指令的指令谍正积键舱呀纹郴毒柜谎幻刀谩珍啡柳永抒惟贿爵虎洁臣竟涝港酥学媒绷第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令7段内转移、间接寻址段内转移、间接寻址JMP r16/m16JMP r16/m16 ;IPr16/m16IPr16/m16n将一个将一个1616位寄存器或主存字单元内容送入位寄存器或主存字单元内容送入IPIP寄存器,作为新的指令指针,但不修改寄存器,作为新的指令指针,但不修改CSCS寄存器的内容寄存器的内容jmp axjmp ax;IPAXIPAXjmp word

8、 ptr 2000hjmp word ptr 2000h;IP2000hIP2000h救翼拈墒怒欺登超宇暂绝尊毯嫂意三桑鸟狄犊述碳渍禄洛愤颗浊例撤涤丘第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令8段间转移、直接寻址段间转移、直接寻址JMP far ptr labelJMP far ptr label;IPlabelIPlabel的偏移地址的偏移地址;CSlabelCSlabel的段地址的段地址n将标号所在段的段地址作为新的CS值,标号在该段内的偏移地址作为新的IP值;这样,程序跳转到新的代码段执行jmp far ptr othersegjmp far p

9、tr otherseg;远转移到代码段2的otherseg抛艾佣桌寿咨广原下拳涅确暴怜柳番今纹锹糠皖瓣烙搞阐凌允截珠踌项斟第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令9段间转移、间接寻址段间转移、间接寻址JMP far ptr memJMP far ptr mem;IPmemIPmem,CSmem+2CSmem+2n用一个双字存储单元表示要跳转的目标地址。n这个目标地址存放在主存中连续的两个字单元中的,低位字送IP寄存器,高位字送CS寄存器mov word ptr bx,0mov word ptr bx,0mov word ptr bx+2,1500hm

10、ov word ptr bx+2,1500hJMP far ptr bxJMP far ptr bx ;转移到1500h:0莉疵盅攀置库疹研渝程蒙肤虐李贺瞒踊坑鲤握俐显槽十兆鸳吞裹识殃冲纺第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令10nJmp转移指令的原理,可参见:q王爽第九章晒疽枫挪潦潮矛抉赁折鞍托一湾樟旺柜盂郸争砖唤洋忠饭臆膝瘴捏述朱躬第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令112.4.2 条件转移指令条件转移指令n指定的条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;条件不成立,则

11、程序将顺序执行下一条指令n操作数label是采用相对寻址方式的短转移标号q表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移q距当前IP地址128127个单元的范围之内Jcc labelJcc label ;条件满足,发生转移:;条件满足,发生转移:IPIPIPIP8 8位位移量位位移量 ;条件不满足,顺序执行;条件不满足,顺序执行蕴修录长忠参奢婿暮逾逝飞逼也褒箩星少小溯敏炊黎舰厉侯盐逃幻去刘褒第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令12Jcc指令的分类指令的分类nJcc指令不影响标志,但要利用标志。n根据利用的标志位不同,16条指

12、令分成3种情况:1. 判断单个标志位状态 2. 比较无符号数高低 3. 比较有符号数大小 裁实岸承欠戈机昂拆为梯牙酞妓枯肛耀钉倡安谚官击豪搅自调蝗趴镊攒带第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令13判断单个标志位状态判断单个标志位状态n这组指令单独判断这组指令单独判断5个状态标志之一个状态标志之一JZJZ/JEJE和和J JNZ/JNE:利用零标志:利用零标志ZF,判断结果是否为零,判断结果是否为零(或相等)(或相等)JS和和JNS:利用符号标志:利用符号标志SF,判断结果是正是负,判断结果是正是负JO和和JNO:利用溢出标志:利用溢出标志OF,判断

13、结果是否产生溢出,判断结果是否产生溢出JP/JPE和和JNP/JPO:利用奇偶标志:利用奇偶标志PF,判断结果中,判断结果中“1”的个数是偶是奇的个数是偶是奇JC/JB/JNAE和和J JNC/JNB/JAE:利用进位标志:利用进位标志CF,判,判断结果是否进位或借位断结果是否进位或借位例题例题2.38例题例题2.39例题例题2.40例题例题2.41例题例题2.42噎嘱酸苗芹愉阴廊斯鉴盾冶汉肪寨撞辉豫守疲阶驶恰承假宪篓隙魂汕冒猩第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令17比较无符号数高低比较无符号数高低n无符号数的大小用高(Above)低(Below

14、)表示n利用CF确定高低、利用ZF标志确定相等(Equal)n两数的高低分成4种关系: 低于(不高于等于):JB(JNAE) 不低于(高于等于):JNB(JAE) 低于等于(不高于):JBE(JNA) 不低于等于(高于):JNBE(JA )贬乍圆可苇家踪振渝芜镭疽伎泥挨漂跋棋擂剑辨虐铃铰那镐坷攀角巫输厘第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令24例2.43a:比较无符号数cmp ax,bxcmp ax,bx;比较;比较axax和和bxbxjnb nextjnb next;若;若axbxaxbx,转移,转移xchgxchg ax,bx ax,bx;若;

15、若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的无符号数无符号数飘南炒炼垮舌膊匙庄顿旭吾宅馈予揪茧燃癸航铸睫舔井奖茄祈遭卷披惺桔第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令25比较有符号数大小比较有符号数大小n有符号数的大(Greater)小(Less)需要组合OF、SF标志,并利用ZF标志确定相等(Equal)n两数的大小分成4种关系: 小于(不大于等于):JL(JNGE) 不小于(大于等于):JNL(JGE) 小于等于(不大于):JLE(JNG) 不小于等于(大于):JNLE(JG )烤竞请景域深默专凸输讹涡遇

16、郧唤靡抒慌莫朴腥舍珐犯烟冈污掠起窟淫幼第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令26例2.43b:比较有符号数cmp ax,bxcmp ax,bx;比较;比较axax和和bxbxjnl nextjnl next;若;若axbxaxbx,转移,转移xchgxchg ax,bx ax,bx;若;若axaxbxbx,交换,交换next:next:.结果:结果:AX保存较大的保存较大的有符号数有符号数开讽沿妻水隅抚诫袜琼锄韦烘羞条鼠钮绩悦婪诱眼题枷内粘晶萌疆弄熙针第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令272.4.3

17、 循环指令循环指令(loop)n循环指令默认利用循环指令默认利用CX计数器计数器nlabel操作数采用操作数采用相对相对短转移短转移寻址方式寻址方式LOOP labelLOOP label;CXCXCXCX1 1, ;CX0CX0,循环到标号,循环到标号labellabelLOOPZ labelLOOPZ label;CXCXCXCX1 1, ;CX0CX0且且ZFZF1 1,循环到标号,循环到标号labellabelLOOPNZ labelLOOPNZ label ;CXCXCXCX1 1, ;CX0CX0且且ZFZF0 0,循环到标号,循环到标号labellabelJCXZ labelJC

18、XZ label;CXCX0 0,转移到标号,转移到标号labellabel垄赴胃颐毫杂串贾揽氮滞耐启烷薪漫圈垛茂秃驼闸碟汲妖耸务瑶苗润锚泣第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令28例2.44:记录空格个数mov cx,countmov cx,count;设置循环次数;设置循环次数, ,即字符数即字符数mov si,offset stringmov si,offset stringxor bx,bxxor bx,bx;bxbx0 0,记录空格数,记录空格数jcxz done jcxz done ;如果长度为;如果长度为0 0,退出,退出mov al

19、,20hmov al,20hagain:again:cmp al,es:sicmp al,es:sijnz nextjnz next;ZFZF0 0非空格,转移非空格,转移inc bxinc bx;ZF=1ZF=1是空格,个数加是空格,个数加1 1next:next:inc siinc siloop againloop again;字符个数减;字符个数减1 1,不为,不为0 0继续循环继续循环dec cxjnz againcmp cx,0jz done喻豫鬃彻球厩判劫普诊娶硅汞稿篷羡苞档焙傅陨音萌漫愧践朵抉税酗懒体第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移

20、指令292.4.4 子程序指令子程序指令n子程序是完成特定功能的一段程序n当主程序(调用程序)需要执行这个功能时,采用CALL调用指令转移到该子程序的起始处执行n当运行完子程序功能后,采用RET返回指令回到主程序继续执行演示演示演示演示虫控惊苹惧毡堵红檀家棚录腔膨履性态乡榜删粒鞘喜死英创背犯华拽柒腰第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令30子程序调用指令子程序调用指令nCALL指令分成4种类型(类似JMP)CALL label;段内调用、相对寻址CALL r16/m16 ;段内调用、间接寻址CALL far ptr label;段间调用、直接寻址C

21、ALL far ptr mem;段间调用、间接寻址nCALL指令需要保存返回地址:q段内调用段内调用入栈偏移地址IPSPSP2,SS:SPIPq段间调用段间调用入栈偏移地址IP和段地址CSSPSP2,SS:SPIPSPSP2,SS:SPCS估架茅铁临更胀篮诺蓟称绊映盆盆铰卉嘘侥窝右袁惰科棚蔑沏诊夹谓霹类第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令32子程序返回指令子程序返回指令n根据段内和段间、有无参数,分成4种类型RET;无参数段内返回RET i16;有参数段内返回RET;无参数段间返回RET i16;有参数段间返回n需要弹出CALL指令压入堆栈的返回

22、地址q段内返回段内返回出栈偏移地址IPIPSS:SP, SPSP2q段间返回段间返回出栈偏移地址IP和段地址CSIPSS:SP,SPSP2CSSS:SP,SPSP2i16参数的作用参数的作用或司售瞻码涝悯尸挟糕幌县厅嘛人柱捶呀肠枉钥块寄角役闷湾筷博肉订毗第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令33例2.45:子程序;主程序主程序mov al,0fhmov al,0fh;提供参数;提供参数ALALcall htoasccall htoasc;调用子程序;调用子程序.;子程序:;子程序:将将ALAL低低4 4位的一位位的一位1616进制数进制数转换转换成

23、成ASCIIASCII码码htoasc:htoasc: and al,0fhand al,0fh;只取;只取alal的低的低4 4位位or al,30hor al,30h;alal高高4 4位变成位变成3 3cmp al,39hcmp al,39h;是;是0 09 9,还是,还是0Ah0Ah0Fh0Fhjbe htoendjbe htoendadd al,7add al,7;是;是0Ah0Ah0Fh0Fh,加上,加上7 7htoend:htoend: retret;子程序返回;子程序返回琵朵乘垦涛蓝氰疗看繁洲谭俱邱塘恳临扎蝴樟诱口措氏伞撒椰荔壶灸佑新第2章8086的指令系统三yk控制转移指令第

24、2章8086的指令系统三yk控制转移指令352.4.5 中断指令中断指令n中断(Interrupt )是又一种改变程序执行顺序的方法n中断具有多种中断类型n中断的指令有3条:INT i8 IRET INTOn本节主要掌握类似子程序调用指令的中断调用指令INT i8,进而学习使用DOS功能调用歹淆蚁等厚黄憨粗报光臀示筏肆戎铝危牡班僧映伞眩炔嘘届极邵雇项嘘锈第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令368086的外部中断的外部中断n8086可以管理256个中断n各种中断用一个向量编号来区别n主要分成外部中断和内部中断n外部中断来自CPU之外的原因引起的中断

25、,又可以分成q可屏蔽中断:可由CPU的中断允许标志IF控制q非屏蔽中断:不受CPU的中断允许标志IF控制五扼闭夕盂腔柬窘慈欧痢雅敏芭砒俺络略睁氖依鳞辣括捎葡霉风娱刊牌批第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令388086的内部中断的内部中断n内部中断CPU内部执行程序引起的中断,又可以分成:q除法错中断:执行除法指令,结果溢出产生的 0 号中断q指令中断:执行中断调用指令INT i8产生的 i8 号中断q断点中断:用于断点调试(INT 3)的 3 号中断q溢出中断:执行溢出中断指令,OF1产生的 4 号中断q单步中断:TF1在每条指令执行后产生的 1

26、 号中断膳姓卷境营咯频捉蛮牺拘坛沏时琶铀形住抉添访桥药愤惜粟梢谦塑宗恫艘第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令39中断指令中断指令INTINT i8INT i8;中断调用指令:产生i8号中断IRETIRET;中断返回指令:实现中断返回INTOINTO;溢出中断指令:;若溢出标志OF=1,产生4号中断;否则顺序执行根哗更众给玄钥纪琵刻嘶谢芋藉舀漱帅辐些领揣裤藤嘎佳幢系养怠噶啥铜第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令402.4.6 系统功能调用系统功能调用n21H号中断是DOS提供给用户的用于调用系统功能的

27、中断,它有近百个功能供用户选择使用,主要包括设备管理、目录管理和文件管理三个方面的功能nROM-BIOS也以中断服务程序的形式,向程序员提供系统的基本输入输出程序n汇编语言程序设计需要采用系统的各种功能程序n充分利用操作系统提供的资源是程序设计的一个重要方面,需要掌握豁拣蹬噬咆沮萤萍它亮治肝父想营扼脊刘宦个厌纱曳堡瘤枢星冯阮婶求派第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令41用户程序用户程序DOS系统系统功能调用功能调用BIOS中断调用中断调用硬件硬件/外部设备外部设备裸机裸机汇编语言程序鄙测妖猖冤叠该析孝茬链栈啤瞬韧楔某牺挣沟秦驯累扣阻败赖喉秒碉惑渴

28、第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令42功能调用的步骤功能调用的步骤通常按照如下4个步骤进行:n 在AHAH寄存器中设置系统功能调用号n 在指定寄存器中设置入口参数n 执行指令INT 21HINT 21H(或ROM-BIOS的中断向量号)实现中断服务程序的功能调用n 根据出口参数分析功能调用执行情况廖慧蔬捉窝煤摇赛歌军廖谗齿煌涂键党夏稚筷粤约增遮皋孙闹柞滥泞疽巧第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令43输入输出类功能调用输入输出类功能调用n向显示器输出字符 字符的输出 字符串的输出n从键盘输入数据 字

29、符的输入 字符串的输入 按键的判断芬缔父遍恐勃脐氨肃骇晌轮革肿勇榔臀衬匣窥慎满孽寇久尖貉袖舱屡皇英第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令44字符输出的功能调用字符输出的功能调用nDOS功能调用INT 21Hq功能号:AH02Hq入口参数:DL字符的ASCII码q功能:在显示器当前光标位置显示给定的字符,光标右移一个字符位置。如按Ctrl-Break或Ctrl-C则退出哆建僳咳豢龄靶步驴敢便刀嗣级选时笔橡偶真遵励博酥茂整孤炙默揽及羌第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令45例2.46:显示问号;在当前显示

30、器光标位置显示一个问号;在当前显示器光标位置显示一个问号mov ah,02hmov ah,02h;设置功能号:;设置功能号:ah02hah02hmov dl,?mov dl,?;提供入口参数:;提供入口参数:dl?dl?int 21hint 21h;DOSDOS功能调用:显示功能调用:显示 进进行行字字符符输输出出时时,当当输输出出响响铃铃字字符符(07H)以以及及退退格格(08H)、回回车车(0DH)和和换换行行(0AH)字字符符时时,该该功功能能调调用用可可以以自自动动识识别别并并能进行相应处理能进行相应处理屎俗痰伟客骗嫉敦随袜层蔗驴忌盂理极红阔液块歧酗督猪勺丽跟件磁永洪第2章8086的指

31、令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令46字符输出的功能调用字符输出的功能调用n显示器功能调用INT 10Hq功能号: AH0EHq入口参数:AL字符的ASCII码 BL字符的颜色值(图形方式) BH页号(字符方式) 通常使BX0q功能:将字符按原属性在光标处显示,光标自动移到下一个字符位置叉胁樟氛犹唤党榆发篓嘴壳泳们疤喀渺帅胞聚扫他洒鞋次阁页洗角慧议迫第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令47字符串输出的功能调用字符串输出的功能调用nDOS功能调用INT 21Hq功能号:AH09Hq入口参数: DS:DX欲显示字符串在

32、主存中的首地址 字符串应以$(24H)结束q功能:在显示器输出指定的字符串n可以输出回车(0DH)和换行(0AH)字符产生回车和换行的作用扯欣庙鹊署刘瞪宵妹家盒芳拔腾舒务藕悠次杉隐梗熙谗瓤迪拢吨毖肌场砌第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令48例2.47:显示字符串string db Hello,Everybody !,0dh,0ah,$string db Hello,Everybody !,0dh,0ah,$;在数据段定义要显示的字符串;在数据段定义要显示的字符串.mov ah,09hmov ah,09h;设置功能号:;设置功能号:ah09hah

33、09hmov dx,offset stringmov dx,offset string;提供入口参数:;提供入口参数:dxdx字符串的偏移地址字符串的偏移地址int 21hint 21h;DOSDOS功能调用:显示功能调用:显示池倔排摇汀使化奴漓卓裙啃淳举钝蛤辆瞻挪径卢嗡决惑执羌按豁否畏惫勋第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令49字符输入的功能调用字符输入的功能调用nDOS功能调用INT 21Hq功能号:AH01Hq出口参数:AL字符的ASCII码q功能:获得按键的ASCII代码值n调用此功能时,若无键按下,则会一直等待,直到按键后才读取该键值须

34、宣改嵌凌酉镍党拔甥宾叶碍粥镰反狠芍晨守攘腋届脊陶冈若初肇炸丽薪第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令50例2.48:判断按键getkey:getkey:mov ah,01hmov ah,01h;功能号:;功能号:ah01hah01hint 21hint 21h;功能调用;功能调用cmp al,Ycmp al,Y;处理出口参数;处理出口参数alalje yeskeyje yeskey;是;是“Y”“Y”cmp al,Ncmp al,Nje nokeyje nokey;是;是“N”“N”jne getkeyjne getkey.yeskey:yeske

35、y:.nokey:nokey:.七格恢瘁啸结糙拥秀竹赞桥歧认孔躲旁诉撬之烈讨排牙体恒柱亏愁挥舟挤第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令51字符输入的功能调用字符输入的功能调用n键盘功能调用INT 16Hq功能号:AH0q出口参数:AX键值代码对于标准ASCII码按键:ALASCII码,AH扫描码;对于扩展按键:AL00H,AH键扩展码;对于alt小键盘数字按键:ALASCII码,AH00Hn此功能类同DOS功能01H,会一直等待按键盂敌斩陕挽琅闸驯曰陷继唾惰晴渡奉肝索箍牢傣庄毗拽撰冗堰杖釉奖审讣第2章8086的指令系统三yk控制转移指令第2章808

36、6的指令系统三yk控制转移指令52例2.49:字符输入输出mov ah,0mov ah,0;键盘功能调用(;键盘功能调用(int 16hint 16h)int 16hint 16h;alal按键的按键的ASCIIASCII码码mov bx,0mov bx,0;显示功能调用(;显示功能调用(int 10hint 10h)mov ah,0ehmov ah,0ehint 10hint 10h;显示;显示蓉妒槛肇泳徘秘脖窝违幸滓坪扁椎训锑弃性挺钉涎囱占冒垃疮莽勤鹰臃容第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令53字符串输入的功能调用字符串输入的功能调用nDOS

37、功能调用INT 21Hq功能号:AH0AHq入口参数:DS:DX缓冲区首地址n执行该功能调用时,用户按键,最后用回车确认n本调用可执行全部标准键盘编辑命令;用户按回车键结束输入,如按CtrlBreak或CtrlC则中止关键要定义好缓冲区关键要定义好缓冲区驴隧鲍降毋谊屯沥界疙袖凑肺敬殊辐廉彪鞋好谐厩汇将恶汰标宴府日苇僻第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令54例2.50:输入字符串bufferbufferdb 81db 81;定义缓冲区;定义缓冲区;第;第1 1个字节填入可能输入的最大字符数个字节填入可能输入的最大字符数db 0db 0;存放实际输入

38、的字符数;存放实际输入的字符数db 81 dup(0)db 81 dup(0);存放输入的字符串;存放输入的字符串.mov dx,seg buffermov dx,seg buffer;伪指令;伪指令segseg取得取得bufferbuffer的段地址的段地址mov ds,dxmov ds,dx;设置数据段;设置数据段DSDSmov dx,offset buffermov dx,offset buffermov ah,0ahmov ah,0ahint 21hint 21h箍砖轩等埔笛棱药鸳心华球非贿琳莲晤痔讣锁座肿戎擦谐浮屠沫铜尤侍座第2章8086的指令系统三yk控制转移指令第2章8086的指

39、令系统三yk控制转移指令56按键判断的功能调用按键判断的功能调用nDOS功能调用INT 21Hq功能号:AH0BHq出口参数:AL0,当前没有按键;ALFFH,当前已经按键。q功能:仅判断当前是否有按下的键,设置AL后退出长拓颓亿矿拷怠管均讯绞可拣桐篮挥胞米刑惹节锐值揍庸层如瘦士惑岁脯第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令57例2.51:按任意键继续.;提示;提示“按任意键继续按任意键继续”getkey:getkey: mov ah,0bhmov ah,0bhint 21hint 21hor al,alor al,al;alal0 0?jz get

40、keyjz getkey;alal0 0,没有按键,继续等待,没有按键,继续等待;等同于如下功能调用;等同于如下功能调用mov ah,01hint 21h蕊槐倪恤际藻幸陋隐腑钢崭捡韵锋驮啃含皂傅卤堪养循冶贬屁预豫肄尉酥第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令58按键判断的功能调用按键判断的功能调用n键盘功能调用INT 16Hq功能号:AH1q出口参数:若标志ZF1,无键按下;若ZF0,有键按下,且AX键值代码q功能:此子功能仅判断是否按键,设置零位标志ZF后退出n这两个功能调用都不循环等待按键,即使有键按下,键盘缓冲区仍然保留键值并且没有被清空,必要时必须用字符输入功能取走键值清空缓冲区堂浇涣筏晓刷惰滥标伞踏志堑阁照庐妙挛茄倚剥幼旷耶上牲殊亦竣苔到扯第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令59教学提示教学提示n在学习和应用汇编语言进行程序设计时,有一些经常遇到的问题,例如算术运算、代码转换等,需要掌握挠帕槛闲援板灯遭建顾韵玛株持须俱舆柴疽唁态币谁毗常苔曹迹茬疽训态第2章8086的指令系统三yk控制转移指令第2章8086的指令系统三yk控制转移指令60

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号