1、汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式12.条件转移指令条件转移指令w1 1简单条件转移指令简单条件转移指令w2 2无符号数条件转移指令无符号数条件转移指令w3.3.有符号数条件转移指令有符号数条件转移指令 w它们都有通用的语句格式和功能。它们都有通用的语句格式和功能。w语句格式语句格式:操作符操作符 oproprw功能:如果条件满足,功能:如果条件满足,则(则(IPIP)位移量)位移量IPIP。存储器存储器OPOPXXXXJZ+15+15MOVXXXXIPIPCSCSIPIP汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式21 1
2、)简单条件转移指令简单条件转移指令助记符助记符转移条件转移条件功功 能能JE/JZJE/JZZF=1ZF=1相等相等/等于等于0 0转移转移JNE/JNZJNE/JNZZF=0ZF=0不相等不相等/不等于不等于0 0转移转移JSJSSF=1SF=1为负转移为负转移JNSJNSSF=0SF=0为正转移为正转移JOJOOF=1OF=1溢出转移溢出转移JNOJNOOF=0OF=0未溢出转移未溢出转移JCJCCF=1CF=1进位位为进位位为 1 1 转移转移JNCJNCCF=0CF=0进位位为进位位为 0 0 转移转移JP/JPEJP/JPEPF=1PF=11 1的个数为偶数转移的个数为偶数转移JNP
3、/JPOJNP/JPOPF=OPF=O1 1的个数为奇数转移的个数为奇数转移汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式3控制转移指令控制转移指令-例例w例例 :根据加法运算的结果:根据加法运算的结果,做不同的动作做不同的动作或者或者add ax,tempjnz action1action_1:action_2:add ax,tempadd ax,tempjzjz action_2action_2 action_1action_1:MOV MOV .action_2:action_2:ADD ADD 汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址
4、址方方式式4条件转移指令条件转移指令w2)2)比较两个比较两个无符号无符号数数,并根据比较的结果转移并根据比较的结果转移wJBE(JBA)(CFJBE(JBA)(CF ZF)=1 ZF)=1 无符号数无符号数wJNBE(JA)(CFJNBE(JA)(CF ZF)=0 ZF)=0 无符号数无符号数3 3)比较两个比较两个带符号带符号数数,并根据比较结果转移并根据比较结果转移JL(JNGE)(SF JL(JNGE)(SF OF)=1 OF)=1 有符号数有符号数JNL(JGE)(SF JNL(JGE)(SF OF)=0 OF)=0 有符号数有符号数JLE(JNG)(SF JLE(JNG)(SF O
5、F)OF)vZFvZF=1 =1 有符号数有符号数JNLE(JG)(SF JNLE(JG)(SF OF)OF)vZFvZF=0 =0 有符号数有符号数 Above -大于大于 Blow -小于小于 Great -大于大于 Low -小于小于汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式5带符号数带符号数/无符号数比较无符号数比较w必须区分有符号和无符号指令的适用情况必须区分有符号和无符号指令的适用情况,否则否则会出现错误会出现错误.w例如例如:AX=11111111,BX=00000000:AX=11111111,BX=00000000wCMP AX,BXCMP A
6、X,BXw无符号数无符号数 1111111(1111111(255255)00000000(00000000(0 0)w有符号数有符号数 1111111(1111111(-1-1)000000000(000000000(0 0)w 无符号数比较时无符号数比较时,nCF=1CF=1有借位有借位 =nCFCFVZF=1 VZF=1 VZF=0 汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式6带符号比较的情况带符号比较的情况wSF=1 SF=1 符号为负符号为负,OF=1,OF=1 有溢出有溢出 SF OF SF SF OF SF OF OF A 0 0 0(A 0 0
7、0(大于大于)B 0 1 1(B 0 1 1(小于小于)C 1 0 1C 1 0 1D 1 1 0D 1 1 0-32768 +327678000 7FFFFFFF 0001-1 +1负溢负溢正溢正溢负数负数正数正数汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式7控制转移指令控制转移指令-测试测试CXCX4)4)测试测试 CX CX 的值为的值为 0 0 则转移指令则转移指令JCXZ CX JCXZ CX 寄存器为寄存器为0 0则转移则转移格式格式:JCXZ OPR :JCXZ OPR JECXZ JECXZ OPR OPR ECX ECX 寄存器的内容值为寄存器的
8、内容值为 0 0 则转移指令则转移指令格式格式:JECXZ OPR :JECXZ OPR 测试条件(测试条件(ECXECX)=0=0汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式8控制转移指令控制转移指令-例例wmov ax,xmov ax,xwcmp ax,50cmp ax,50wjg jg too-hightoo-highwsub ax,ysub ax,ywjo jo overflowoverflowwjns jns nonnegnonneg wneg axneg axwnonnegnonneg:wmov result,axmov result,axwwtoo_
9、hightoo_high:w woverflowoverflow:例例:设设X,YX,Y均为存放在均为存放在X X和和 Y Y单单元中的元中的1616位位操作数操作数,先判断先判断X50X50否?否?如 果 满 足 条 件 则 转 移 到如 果 满 足 条 件 则 转 移 到TOO-HIGHTOO-HIGH去执行。然后做去执行。然后做X-YX-Y;如溢出则转移到如溢出则转移到OVERFLOWOVERFLOW去执行。去执行。否则计算否则计算|X-Y|X-Y|,并把结果,并把结果存入存入RESULTRESULT中。中。汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式9控制
10、转移指令控制转移指令w例例 3.65 a,b3.65 a,b为两个双精度数为两个双精度数,分别存储于分别存储于DX,AXDX,AX及及AX,CXAX,CX中中.要求编制一程序使要求编制一程序使ABAB时转向时转向X X转向转向,否则转否则转Y Y执行执行,程序如下程序如下:w CMP DX,BX CMP DX,BXw JG JG X Xw JL JL Y Yw CMP AX,CX CMP AX,CXw JA JA X XwwY:Y:w wX:X:0000 00010000 00011111 11111111 1111-1-10000 00100000 00101111 11011111 110
11、1-2-2汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式10例:例:3.783.78Cx=n bx=0 di=0 si=0Arraybx0?INC diINC siArraybx=BXAX=BX,转移到,转移到NEXTNEXTwXCHGXCHGAXAX,BXBX;若;若AXBXAXBX,交换,交换wNEXTNEXT:返回本节返回本节汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式243.6 3.6 中断指令中断指令2 2中断返回指令中断返回指令IRETIRET语句格式:语句格式:IRETIRET功能:功能:(SPSP)IP IP (SPSP
12、)CSCS (SPSP)FLAGS FLAGS 1 1中断调用指令中断调用指令INTINT语句格式:语句格式:INT nINT n功能:功能:(FLAGSFLAGS)(SPSP),),0 IF0 IF、TFTF。(CSCS)(SPSP),(),(4 4*n+2n+2)CS CS。(IPIP)(SPSP),(),(4 4*n n)IP IP。中断中断中断服务中断服务中断反回中断反回汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式253.7 处理机控制类指令处理机控制类指令3.7.1 3.7.1 标志位设置指令标志位设置指令返回本章首页返回本章首页1 1进位标志操作指令进
13、位标志操作指令2 2方向标志操作指令方向标志操作指令3 3中断标志操作指令中断标志操作指令3.7.2 CPU3.7.2 CPU状态控制指令状态控制指令汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式26wCLC CF=0CLC CF=0wCMC CF=CMC CF=wSTC CF=1STC CF=1wCLDCLD DF=0 DF=0wSTDSTD DF=1 DF=1wCLICLI IF=0 IF=0 w(cpu(cpu不识别中断请求线上的外部中断请求不识别中断请求线上的外部中断请求信号信号,屏蔽中断屏蔽中断)wSTISTI IF=1(IF=1(取消中断屏蔽取消中断屏蔽
14、)标志位设置指令标志位设置指令CFCF汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式27CPUCPU状态控制指令状态控制指令wNOP NOP 无操作无操作 (留出富余空间留出富余空间)wHLT HLT 停停 机机 (使使cpu cpu 进入暂时停机状态进入暂时停机状态,等待外部中断的等待外部中断的到来到来)wWAIT WAIT 等待等待 (循环等待中断循环等待中断,中断执行后中断执行后,回到等待状态回到等待状态,作用与硬件状态同步作用与硬件状态同步)wESC ESC 换码换码 (使别的处理器能从使别的处理器能从wLOCK LOCK 封锁封锁 (与其它指令联合时使用与
15、其它指令联合时使用,维持总线锁存信维持总线锁存信号号,起协同工作的作用起协同工作的作用)wBOUND BOUND 界限指令界限指令wENTER ENTER 建立堆栈帧指令(建立堆栈帧指令(286286以后机用)以后机用)汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式28本章重点本章重点w各种寻址方式各种寻址方式w学会使用汇编语言的各种命令学会使用汇编语言的各种命令w如何判断溢出(有符号数和无符号数)如何判断溢出(有符号数和无符号数)w符号扩展的含义符号扩展的含义w压缩的和非压缩的压缩的和非压缩的bcdbcd码的调整指令码的调整指令w串操作时,不同前缀的结束重复条件的区别串操作时,不同前缀的结束重复条件的区别w比较大小时,有符号数和无符号数的判断条件比较大小时,有符号数和无符号数的判断条件汇汇编编语语言言程程序序设设计计3章章指指令令系系统统和和寻寻址址方方式式29THANK YOU VERY MUCHTHANK YOU VERY MUCH本章到此结束,本章到此结束,谢谢您的光临!谢谢您的光临!返回本章首页返回本章首页结结 束束