




已阅读5页,还剩49页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,zhuyp,微机原理与接口技术,2,3-38086的指令系统控制转移指令,五、控制转移指令,作用:改变CS和IP的值,从而改变指令的执行顺序。类型:无条件转移和过程调用指令条件转移指令条件循环控制指令中断指令,3,3-38086的指令系统控制转移指令,JMP无条件转移指令(Jump)指令格式:JMP目的指令功能:程序无条件地转移到指定的目的地址去执行。两种转移类型:段内转移或近(NEAR)转移转移指令的目的地址和JMP指令在同一代码段中,转移时,仅改变IP寄存器的内容,段地址CS的值不变。段间转移,又称为远(FAR)转移转移指令的目的地址和JMP指令不在同一段中,转移时,CS和IP的值都要改变,程序转到另一代码段去执行。,1.无条件转移和过程调用指令,4,3-38086的指令系统控制转移指令,两种提供地址的方式:直接转移指令码中直接给出转移的目的地址,目的操作数用一个标号来表示,它又可分为段内直接转移和段间直接转移。间接转移目的地址包含在某个16位寄存器或存储单元中,CPU根据寄存器或存储器寻址方式,间接地求出转移地址。这种转移类型又可分为段内间接转移和段间间接转移。转移类型和提供地址的方式的组合可形成不同指令,如下表所示:,5,3-38086的指令系统控制转移指令,表310无条件转移指令的类型和方式,6,3-38086的指令系统控制转移指令,段内直接转移指令指令格式:JMPSHORT标号JMPNEARPTR标号(或:JMP标号)这是一种段内相对转移指令,目的操作数均用标号表示;程序转向的有效地址当前IP寄存器的内容8/16位位移量(DISP)。8位:短转移,范围在128+127个字节之间;16位:近转移,范围在32768+32767个字节之间;位移量带符号:正的向高地址转移;负的向低地址转移,且必须用补码表示。段内近/短转移指令的机器码及其操作功能如下图所示。其中第一个字节为操作码,后面的字节是位移量。,7,3-38086的指令系统控制转移指令,注意:8位的位移量与IP相加时,用符号扩展法扩展成16位后再相加。,8,3-38086的指令系统控制转移指令,近转移:标号前加说明符NEARPTR,也可以省略不写。短转移:则在标号前需加说明符SHORT。JMPSHORTPROG_S;段内短转移JMPNEARPTRPROG_N;段内近转移,行号偏离量机器码程序10000CODESEGMENT2ASSUMECS:COED300000405PROG_S:ADDAL,05H4000290NOP50003EBFBJMPSHORTPROG_S6000590NOP70006CODEENDS8END,9,3-38086的指令系统控制转移指令,位移量DISP的计算:DISP目的地址偏移量IP的当前值000000055补码为FBH,经符号扩展后为FFFBH。IP的修改:IPIPDISP0005FFFB0000H程序转到偏移量为0的位置,即标号为PROG_S处执行。注意:段内近转移指令,和段内短转移指令类似,不过段内近转移指令占有3个字节,计算时注意。它可以转移到段内任何地址去执行指令。,10,3-38086的指令系统控制转移指令,段内间接转移指令指令格式:JMP16位寄存器/字存储器单元,16位有效地址存放在一个16位寄存器、字存储器单元;寄存器间接寻址:有效地址存放在寄存器中,即IP寄存器内容;存储单元间接寻址:有效地址存放在存储单元中,即IP字存储单元内容;要计算出存储单元的物理地址,再从该地址处取一个字送到IP。,11,3-38086的指令系统控制转移指令,例JMPBX若该指令执行前BX4500H;则指令执行时,将当前IP修改成4500H;程序转向段内偏移地址为4500H处执行。例JMPWORDPTR5BX设指令执行前,DS2000H,BX100H,(20105H)4F0H;则指令执行后,IP(20000H十100H十5H)(20105H)4F0H;转到代码段内偏移地址为4F0H处执行。,12,3-38086的指令系统控制转移指令,段间直接(远)转移指令指令格式:JMPFARPTR标号特点:用远标号直接给出了转向的段地址和偏移量,即IP标号的段内偏移量,CS标号所在段的段地址。例3-72JMPFARPTRPROG_F设标号PROG_F所在段的基地址3500H,偏移地址080AH;则指令执行后,IP080AH,CS3500H;程序转到3500:080AH处执行。,13,3-38086的指令系统控制转移指令,段间间接转移指令指令格式:JMPDWORDPTR存储单元特点:目的地址的段地址和偏移量放在存储器中的4个连续地址单元中:前两个字节为偏移量;后两个字节为段地址。指令中给出存放目标地址的存储单元的首字节地址值;注意:指令的目的操作数前要加说明符DWORDPTR。,14,3-38086的指令系统控制转移指令,例3-73JMPDWORDPTRSI十0125H设指令执行前:CS1200H,IP05H,DS2500H,SI1300H;内存单元(26425H)4500H,(26427H)32F0H。指令要转向的地址存放在内存单元DS:(SIDISP)中,即目的操作数地址DS16SIDISP25000H1300H0125H26425H从单元中取出转移地址,赋与IP和CS:IP4500H,CS32F0H;程序转到32F0:4500H处执行。指令的执行过程如下图所示。,15,3-38086的指令系统控制转移指令,16,3-38086的指令系统控制转移指令,过程调用和返回指令(CallandReturn)过程:程序中能完成特定功能而又独立的模块,也称子程序。过程嵌套:在过程运行中又去调用另一个过程。过程调用和返回指令的格式:CALL过程名RET近过程调用:调用指令CALL和被调用的过程在同一代码段中。远过程调用:两者在不同代码段中。,17,3-38086的指令系统控制转移指令,CALL指令执行时分两步:第一步:是将返回地址(CALL指令下面那条指令的地址)推入堆栈。近调用的操作:SPSP2,IP入栈;远调用的操作:SPSP2,CS入栈;SPSP2,IP入栈第二步:转到程序的入口地址去执行。寻址方法有四种:段内直接调用;段内间接调用;段间直接调用;段间间接调用;(但没有段内短调用指令!),18,3-38086的指令系统控制转移指令,RET指令:从栈中弹出返回地址,使程序返回主程序继续执行。如果从近过程返回:从栈中弹出一个字IP,并且使SPSP2如果从远过程返回:先从栈中弹出一个字IP,并且使SPSP2;再从个字栈中弹出一个字CS,并使SPSP2。段内直接调用和返回例3-74CALLPROG_N;PROG_N是一个近标号解:调用之前:CS=2000H,IP=1050H,SS=5000H,SP=0100H,PROG_N与CALL指令之间的距离等于1234H(即DISP1234H),则,19,3-38086的指令系统控制转移指令,CALL指令的执行过程:如图所示SPSP2,即新的SP0100H200FEH返回地址的IP入栈。CALL指令的首地址:CS:IP2000:1050H;指令占3字节;返回地址:2000:1053H,即IP1053H;计算出新的IP值,作为子程序的入口地址,即IP=IP+DISP=1053H+1234H=2287HRET指令的执行过程:IP(SP和SP1)单元内容,即IP1053HSPSP2,即新的SP00FEH20100H,20,3-38086的指令系统控制转移指令,21,3-38086的指令系统控制转移指令,段内间接调用和返回例1CALLBX;例2CALLWORDPTRBX十SI;操作步骤:SPSP2,IP入栈,IPEA(从目的操作数计算)设:DS1000H,BX200H,SI300H,(10500H)3210H例1中:EA0200H;例2中:EA(16DSBXSI)(10000H0200H0300H)=(10500H)3210H返回:IP(SP和SP1)单元内容(返回地址出栈)SPSP2(修改栈顶指针),22,3-38086的指令系统控制转移指令,段间直接调用例3-75CALLFARPTRPROG_F;PROG_F是一个远标号解:指令为5字节,编码格式为:,调用之前:CS=1000H,IP=205AH,SS=2500H,SP=0050H,标号PROG_F的地址指针CS=3000H,IP=0500H;存放CALL指令的内存首地址为1000:205AH,由于该指令长度为5个字节,所以返回地址应为1000:205FH。,23,3-38086的指令系统控制转移指令,CALL指令的执行过程:SPSP2(SP0050H2004EH),CS入栈(CS1000H);SPSP2(SP=004CH),IP入栈(IP205FH);转子程序:FROG_F的段地址和偏移地址送CS:IP,CS3000H,IP0500H,24,3-38086的指令系统控制转移指令,RET指令执行过程:(寻址方式也是段间直接调用)IP栈中内容(IP205FH),SPSP2(SP004C2004EH)CS栈中内容(CS1000H),SPSP2(SP004EH20050H)程序转返回地址CS:IP1000:205FH处执行。,25,3-38086的指令系统控制转移指令,26,3-38086的指令系统控制转移指令,段间间接调用操作数:必须是存储单元存放的双字表示的入口地址,其中前2个字节是偏移量,后两个字节为代码段基地址。例3-76CALLDWORDPTRBX解:设DS1000H,BX200H,(10200H)31F4H,(10202)5200H。CALL指令的执行过程:SPSP2,CS入栈SPSP2,IP入栈IP(10200H)31F4H,CS(10202)5200H转子程序入口,CS:IP=5200H:31F4H,27,3-38086的指令系统控制转移指令,带参数的返回指令RETnn称为弹出值,CPU在弹出返回地址后,再从堆栈中弹出n个字节的数据。其值可以是0000-0FFFFH范围内的任何一个偶数。用途:调用过程的主程序通过堆栈向过程传递参数。参数在调用过程前推入堆栈,过程运行中通过堆栈指针寻找;过程返回时,用RETn把它们从栈中弹出。,RET指令执行过程:IP栈中内容,SPSP2CS栈中内容,SPSP2程序转返回地址CS:IP处执行。,28,3-38086的指令系统控制转移指令,2.条件转移指令,根据上一条指令执行后的状态标志作为判别测试条件来决定是否转移。条件转移均为段内短转移。目的地址当前IP值8位相对位移量。它与转移指令之后的那条指令间的距离,允许为128+127字节;8位偏移量用符号扩展法扩展到16位与IP相加。指令格式:条件操作符标号条件转移指令共有18条,可以为两类:直接标志转移指令间接标志转移指令,29,3-38086的指令系统控制转移指令,直接标志转移指令(10条)在指令助记符中直接给出标志状态的测试条件:以CF,ZF,SF,OF和PF等5个标志的10种状态为判断的条件。,表311直接标志条件转移指令,30,3-38086的指令系统控制转移指令,例求AL和BL寄存器中的两数之和,若有进位,则AH置1,否则AH清0。解:可用如下程序段来实现该操作:ADDAL,BL;两数相加JCNEXT;若有进位,转NEXTMOVAH,0;无进位,AH=0JMPEXIT;往下执行NEXT:MOVAH,1;有进位,AH置1EXIT:;程序继续进行,31,3-38086的指令系统控制转移指令,间接标志转移指令的助记符中不直接给出标志状态位的测试条件,而是标志的状态组合作为测试的条件。指令应用:通常放在比较指令CMP之后,以比较两个数的大小。无符号数比较测试指令中,指令助记符中的“A”是英文Above的缩写,表示“高于”之意,“B”是英文Below的缩写,表示“低于”之意;带符号数比较测试指令中,指令助记符中的“G”(Greatthan)表示大于,“L”(Lessthan)表示小于。,32,3-38086的指令系统控制转移指令,表312间接标志条件转移指令,33,3-38086的指令系统控制转移指令,例设某个学生的英语成绩已存放在AL寄存器中,若低于60分,则打印F(FAIL);若高于或等于85分,则打印G(GOOD);当在60分和84分之间时,打印P(PASS)。程序:CMPAL,60;与60分比较JBFAIL;60,转FAILCMPAL,85;60,与85分比较JAEGOOD;85,转GOODMOVAL,P;其它,将ALPJMPPRINT;转打印程序FAIL:MOVAL,F;ALFJMPPRINT;转打印程序GOOD:MOVAL,G;ALGPRINT:;打印存在AL中的字符,34,3-38086的指令系统字符串处理指令,例假设某温度控制系统中,从温度传感器输入一个8位二进制的摄氏温度值。当系统中温度低于100度时,则打开加热器;当温度上升到100度或100度以上时,关闭加热器,进行下一步处理。设温度传感器的端口号为320H,同时假设控制加热器的输出信号连到端口321H的最低有效位,当将这一位置1时,加热器便打开,清0时则关闭加热器。解:实现上述温度控制的程序如下:,35,3-38086的指令系统字符串处理指令,GET_TEMP:MOVDX,320H;DX指向温度输入端口INAL,DX;读取温度值CMPAL,100;与100度比较JBHEAT_ON;100度,加热JMPHEAT_OFF;100度,停止加热HEAT_ON:MOVAL,01H;D0位置1,加热MOVDX,321H;加热器口地址OUTDX,AL;打开加热器JMPGET_TEMP;继续检测温度HEAT_OFF:MOVAL,00H;D0位置0,停止加热MOVDX,321HOUTDX,AL;关闭加热器;进行其他处理,36,3-38086的指令系统控制转移指令,3循环控制指令(IterationControl),是一组增强型的条件转移指令,控制程序段的重复执行,重复次数存于CX寄存器中。指令的字节数均为2,第一字节是操作码,第二字节是8位偏移量,转移的目标都是短标号。循环指令中的偏移量都是负值。循环控制指令均不影响任何标志。这类指令共有4条。,37,3-38086的指令系统控制转移指令,(1)LOOP循环指令(Loop)指令格式:LOOP短标号指令功能:控制重复执行一系列指令,重复次数放在CX寄存器中,每执行一次LOOP指令,CX自动减1。如果减1后CX0,则转移到指令中所给定的标号处继续循环;若自动减1后CX0,则结束循环。一条LOOP指令相当于执行以下两条指令的功能:DECCXJNZ标号,38,3-38086的指令系统控制转移指令,例设商店里有8种商品,价格分别为83元,76元,65元,84元,7l元,49元,62元和58元,现要将每种商品提价7元,编程计算每种商品提价后的价格。OLDDB83H,76H,65H,84HDB71H,49H,62H,58HNEWDB8DUP(?)MOVCX,08H;共8种商品MOVBX,00H;BX作指针,初值为0NEXT:MOVAL,OLDBX;读入一个商品的原价ADDAL,7;加上提价因子DAA;调整为十进制MOVNEWBX,AL;存放结果INCBX;地址指针加1LOOPNEXT;如未加满8次,继续循环;已加完8次,39,3-38086的指令系统控制转移指令,例这是一个用循环和跳转指令来控制PC机的扬声器发声的程序。在PC机中,61H端口的D1和D0位接到扬声器接口电路上,在D00的情况下:当D11时,扬声器被接通,D10则断开,通过控制这一位的值,就能产生一个由1和0构成的二进制序列,使扬声器发声。INAL,61H;AL从61H端口读取数据ANDAL,0FCH;保护D7D2位,D1D0位清零MORE:XORAL,02;触发D1位,使之在0和1间变化OUT61H,AL;控制扬声器开关通断MOVCX,260;CX=循环次数DELAY:LOOPDELAY;循环延时JMPMORE;再次触发,40,3-38086的指令系统控制转移指令,LOOPE/LOOPZ相等或结果为零时循环(LoopIfEqual/Zero)指令格式:LOOPE标号或LOOPZ标号指令功能:LOOPE是相等时循环;LOOPZ是结果为零时循环;指令执行前,先将重复次数送到CX中,每执行一次指令,CX自动减1,若减1后CX0和ZF1,则转到指令所指定的标号处重复执行;若CX0或ZF0,便退出循环。,41,3-38086的指令系统控制转移指令,例设有一个由50个字节组成的数组存放在ARRAY开始的内存单元中,现要对该数组中的元素进行测试,若元素为0,而且不是最后一个元素,便继续进行下一个元素的测试,直到找到第一个非零元素或查完了为止。ARRAYDB,;含50个元素的数据MOVBX,OFFSETARRAY;BX指向数组开始单元DECBX;指针减1MOVCX,50;CX=元素个数NEXT:INCBX;指向数组的下个元素CMPBX,00H;数组元素与0比较LOOPENEXT;若元素为0和CX0,循环;否则,继续查找,42,3-38086的指令系统控制转移指令,LOOPNE/LOOPNZ不相等或结果不为零循环(LoopIfNotEqual/NotZero)指令格式:LOOPNE标号或LOOPNZ标号指令功能:LOOPNE是不相等时循环;LOOPNZ是结果不为零循环。指令执行前,应将重复次数送入CX,每执行一次,CX自动减1,若减1后CX0和ZF0,则转移到标号所指定的地方重复执行;若CX0或ZF1,则退出循环,顺序执行下一条指令。,43,3-38086的指令系统控制转移指令,例设一个由17个字符组成的字符串存放在STRING开始的内存中,查找该字符串中是否包含空格符。若没有找到和尚未查完,测继续查找,直到找到第一个空格符或查完了才退出循环。下面是实现上述操作的程序:STRINGDBPersonalComputer;字符串LEABX,STRING;BX指向字符串的开始DECBX;BX1MOVCX,17;CX=字符串长度NEXT:INCBX;指向下一个字符串CMPBX,20H;字符串元素与空格比较LOOPNENEXT;找到空格或CX已为0,44,3-38086的指令系统控制转移指令,JCXZ若CX为0跳转(JumpIfCXZero)指令格式:JCXZ标号指令功能:若CX寄存器为零,则转移到指令中标号所指定的地址处,它不对CX寄存器进行自动减1的操作。主要用在循环程序开始处,为跳过循环,把CX寄存器清零。,45,3-38086的指令系统控制转移指令,中断概念定义:计算机暂时中止当前程序的运行,执行中断服务程序去为临时发生的事件服务,执行完毕后,返回正常程序继续运行,这个过程称为中断。,4.中断指令(Iterrupt),46,3-38086的指令系统控制转移指令,中断过程:标志寄存器、断点(CS,IP值)的值入栈保护取入口地址(中断类型*4得到中断向量的地址)执行中断服务程序执行中断返回指令IRET,从堆栈中恢复中断前CPU的状态和断点。中断向量表:低2字节存放中断服务程序入口地址的偏移量IP;高2字节存放中断服务程序入口地址的段地址CS;中断服务程序入口地址中断类型*4;如下图所示:,47,3-38086的指令系统控制转移指令,内部中断:专用中断,实现某种特定功能。除NMI外,其它几个都是软件中断。除法错中断(类型0):除数为0;商超过范围;单步中断(类型1):单步标志TF置1;不可屏蔽中断
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 期中专题复习-词汇句型训练-2025-2026学年 译林版2024 英语七年级上册 原卷
- 20xx教师节感谢信3篇
- 文化遗产法律政策与文化产业发展研究-洞察及研究
- 【2025年秋七上语文阶段测试】第2单元学业质量评价01(解析版)
- 车驾管窗口业务课件培训
- 基于区块链的分布式能源交易场景下的仪表数据确权机制
- 基于人工智能的刺五加提取物多靶点作用机制预测模型构建
- 城市热岛效应缓解工程中列管散热器的分布式微气候调控效能评估
- 国际安全认证体系下扳手抗冲击测试标准与本土化适配冲突
- 四方结构力学性能优化与用户使用习惯冲突
- 2025至2030中国高压水射流行业项目调研及市场前景预测评估报告
- 2025合作劳务外包协议范本
- 急性胰腺炎早期液体复苏的思考 2
- 急性闭角型青光眼合并高眼压护理查房
- 2025年工会财务知识竞赛考试题库及参考答案
- 税收的原则课件
- 医疗机构应急管理与急救技能手册
- 2025留置辅警笔试题库及答案
- 胸椎后纵韧带骨化症
- 村两委换届选举培训
- 《丁香结》说课课件(共22张课件)
评论
0/150
提交评论