版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
复习1、逻辑运算指令:ANDORXORNOTTEST2、移位指令:7/10/20231移位指令小结带进位位循环左移指令RCL带进位位循环右移指令RCR将操作数的高低4位或8位(字节)数据相交换。循环左移指令ROL循环右移指令ROR将操作数乘以2的CL次。将补码数除以2的CL次。算术左移指令SAL算术右移指令SAR将操作数乘以2的CL次。将操作数除以2的CL次。逻辑左移指令SHL逻辑右移指令SHR主要作用指令保存其它指令移入CF的值2试分析下面的程序段完成什么功能? MOVCL,04H SHLDX,CL
MOVBL,AH SHLAX,CL
SHRBL,CL ORDL,BL;04H→CL;DX逻辑左移4位,相当于DX;低4位清零,DX=×××0H;AH→BL;AX逻辑左移4位,相当于AX低4位;清零,AX=×××0H;BL逻辑右移4位,相当于AH=0×H;现DL的高4位是原来DL的低4位,;现DL的低4位是原AH的高4位所以,完成将DX,AX组成的双字逻辑左移4位。33.8控制转移类指令1、无条件转移指令2、条件转移指令3、循环控制指令4、中断指令4控制转移类指令通过改变IP(和CS)值,实现程序执行顺序的改变用于实现分支、循环、过程等程序结构常用指令重点掌握:JMP/Jcc/LOOPCALL/RET一般了解:INTn/IRETINTO LOOPZ/LOOPNZ51无条件转移指令指令格式:
JMPlabel ;程序转向label标号指定的地址指令功能:使程序转到指定的目标地址处,并从该处开始继续执行,操作数label是要转移到的目标地址(目的地址、转移地址)执行JMP⑴段内转移、直接寻址;⑵段内转移、间接寻址⑶段间转移、直接寻址;⑷段间转移、间接寻址①JMPSHORTHELLO;转移到目标地址是;HELLO,IP被修改了②JMP[NEARPTR]ABC;转移到目标地址ABC,;IP被修改了6(1)段内直接短程转移格式及操作:JMPSHORTLabel;IP←IP+D8其中,SHORT为属性操作符,表明指令代码中的操作数是一个以字节二进制补码形式表示的偏移量,它只能在-128~+127范围内取值。SHORT在指令中可以省略。指令执行时,转移的目标地址由当前的IP值与指令代码中8位偏移量之和决定。9(2)段内直接近程转移
格式及操作:JMPNEARPTRLabel ;IP←IP+D16其中,NEARPTR为近程转移的属性操作符。段内直接近程转移指令控制转移的目标地址由当前IP值与指令代码中16位偏移量之和决定,偏移量的取值范围为-32768~+32767。转移的过程和短程转移过程基本相同(同理,属性运算符NEARPTR在指令中可以省略)。10(3)段内间接转移格式及操作:JMPWORDPTROPD ;IP←(EA)该指令将转移的目标地址预先存放在某寄存器或存储器的两个连续单元中,指令中只需给出该寄存器号或存储单元地址,OPD可为存储器或寄存器操作数。OPD为寄存器时,不加WORDPTR。以上3种转移方式均为段内转移,指令执行时,用指令提供的信息修改指令指针IP的内容,CS的值不变。11(4)段间直接转移格式及操作:JMPFARPTRLabel;IP←目标标号的偏移地址,;CS←目标标号所在段的段基址FARPTR为属性运算符,表示转移是在段间进行。目标标号在其他代码段中,指令中直接给出目标标号的段基址和偏移地址,分别取代当前IP及CS的值,从而转移到另一代码段中相应的位置去执行(同理,FARPTR在指令中也可不写出来)。12(5)段间间接转移
格式及操作:JMPDWORDPTROPD;IP←(EA),CS←(EA+2)该转移指令的执行不影响任何标志位。指令中由操作数OPD的寻址方式确定一个有效地址EA,指向存放转移地址的偏移地址和段基址的单元,根据寻址方式求出EA后,访问相邻的4B单元,低位字单元的16位数据送到IP寄存器,高位字单元中的16位数据送到CS寄存器,得到要转移去的目标地址,实现段间间接转移的目的。其中,OPR只能是存储器操作数。例如:JMP
DWORDPTRLPA[BP][DI]132.条件转移指令格式: Jcclabel功能:条件满足,转移到目的地址label去执行;条件不满足,顺序执行下一条指令,不影响标志位。14相对寻址方式Jcc指令的操作数label是一个标号条件转移指令的目的地址必须在现行的代码段内一个8位位移量,表示Jcc指令后的那条指令的偏移地址,到目标指令的偏移地址的地址位移8位位移量是相对于当前IP的,且距当前IP地址-128~+127个单元的范围之内,属于段内短距离转移Jcc指令为2个字节,条件不满足时的顺序执行就是当前指令偏移指针IP加215Jcc指令的分类Jcc指令不影响标志,但要利用标志位。根据利用的标志位不同,16条指令分成3种情况:(1)判断单个标志位状态(2)比较无符号数高低(3)比较有符号数大小16(1)判断单个标志位状态功能结果有进位(借位)转移结果无进位(借位)转移
CF=1CF=0JCdstJNCdst结果为零转移结果不为零转移
ZF=1ZF=0JZdstJNZdst结果溢出转移
结果不溢出转移OF=1OF=0JOdstJNOdst奇偶校验结果为偶转移奇偶校验结果为奇转移
PF=1PF=0JPdstJNPdst结果为负数转移结果为正数转移
SF=1SF=0JSdstJNSdst转移条件条件转移指令17例:JZ/JNZ指令 testal,80h ;测试AL的最高位 jznext1 ;D7=0(ZF=1),转移 movah,0ffh ;D7=1,顺序执行
jmpdone
;无条件转向next1: movah,0 done: ...
testal,80h ;测试最高位 jnznext2 ;D7=1(ZF=0),转移 movah,0 ;D7=0,顺序执行
jmpdone ;无条件转向next2: movah,0ffhdone: ...18例:JS/JNS指令leasi,Xleadi,Y
movax,[si] subax,[di] jnsnext negax;neg是求补指令:0-axnext: movresult,axX和Y为存放于X单元和Y单元的16位操作数计算|X-Y|(绝对值)结果存入result单元19例:JO/JNO指令
leasi,Xleadi,Ymovax,[si] subax,[di] jo overflow ... ;无溢出,结果正确overflow:... ;有溢出,出错处理;X和Y为存放于X单元和Y单元的字操作数;计算X-Y;若溢出,则转移到overflow处理20例:JP/JNP指令
andal,7fh ;最高位先置“0”,并判断“1”的个数 jnpnext ;个数已为奇数,则转向next oral,80h ;否则,最高位置“1”next: ...;设字符的ASCII码在AL寄存器中;若该字符ASCII码中为“1”的个数已为奇数时;则令其最高位为“0”;否则令最高位为“1”;将字符加上奇校验位21例:JC/JNC指令 xoral,al ;AL=0,CF=0again: cmpbx,0 jznext shlbx,1 ;也可使用shrbx,1 ADCal,0 ;AL=AL+(CF) jmpagainnext: ... ;AL保存1的个数
;记录BX中1的个数——方法122记录BX中“1”的个数——方法2 xoral,al again: testbx,0ffffh jznext shlbx,1 jncagain incal jmpagainnext: ... ;AL=0,CF=0;等价于cmpbx,0;AL保存1的个数;若bx=0,转到next;否则,bx逻辑左移1位;CF=0,转到again;CF=1,al加1;无条件转到again23(2)比较无符号数高低无符号数的大小用高(Above)、低(Below)表示,利用CF确定高低利用ZF标志确定相等(Equal)两数的高低分成:低于(不高于等于):JB(JNAE/JC)不低于(高于等于):JNB(JAE/JNC)低于等于(不高于):JBE(JNA)不低于等于(高于):JNBE(JA)相等(等于零):JE/JZ不相等(不等于零):JNE/JNZ24(3)比较有符号数大小有符号数的大小用
大(Greater)小(Less)表示利用ZF标志确定相等(Equal)两数的大小分成4种关系:⑴小于(不大于等于):JL(JNGE)⑵不小于(大于等于):JNL(JGE)⑶小于等于(不大于):JLE(JNG)⑷不小于等于(大于):JNLE(JG)25JccM,N MN 无符号数(A,B)有符号数(G,L)<(¬>=) JB(JNAE)JL(JNGE)<=(¬>)
JBE(JNA)
JLE(JNG)>(¬<=) JA(JNBE) JG(JNLE)>=(¬<) JNB(JAE)JNL(JGE)= JE/JZ≠ JNE/JNZ26例:比较无符号数
cmpax,bx;比较ax和bx jnbnext ;若ax≥bx,转移 xchgax,bx;若ax<bx,交换next: ...结果:AX保存较大的无符号数27例:比较有符号数
cmpax,bx ;比较ax和bx jnlnext ;若ax≥bx,转移 xchgax,bx ;若ax<bx,交换next: ...结果:AX保存较大的有符号数28例、分析下列程序段,程序如何执行? ADDAX,BX JNOL1 JNCL2L1: SUBAX,BXL2: JMPSHORTL529①AX=B568H,BX=54B7H解:第一条:ADDAX,BXAX=B568H1011010101101000BX=54B7H0101010010110111AX=0A1FH0000101000011111第二条:JNOL1所以,CF=1,OF=0;OF=0,满足条件,转去L1执行30②AX=42C8H,BX=608DH解:第一条:ADDAX,BXAX=42C8H0100001011001000BX=608DH0110000010001101AX=A355H1010001101010101第二条:JNOL1第三条:JNCL2所以,CF=0,OF=1;OF=1,不满足条件,顺序执行;CF=0,满足条件,转去L2执行31
CMPAL,BL
JNGBBB XCHGAL,BLBBB: CMPAL,CL
JNGCCC XCHGAL,CLCCC: HLT;AL和BL比较;若AL≤BL,则转;若AL>BL,则交换;AL和CL比较;若AL≤CL,则转;若AL>CL,则交换举例:比较AL、BL、CL中带符号数的大小,将
最小数放在AL中。32例、找出有符号数的最大值CMPA,BJG 大于(A>B)时转移 JNE不等于(A≠B)时转移33 MOVAX,X CMPAX,50
JGTOO_HIGH SUBAX,Y
JOOVERFLOW
JNSNONNEG NEGAX
NONNEG:MOVRESULT,AX
TOO_HIGH:…
OVERFLOW:…
例:X>50,转到TOO_HIGH;
计算X-Y:溢出转到OVERFLOW,
否则|X-Y|→RESULT
343.循环指令(loop)控制某程序段反复执行的次数。循环指令默认利用CX计数器,方便实现计数循环的程序结构label操作数采用相对寻址方式LOOPlabel ;CX←CX-1,
;CX≠0,循环到标号labelLOOPZlabel ;CX←CX-1,
;CX≠0且ZF=1,循环到标号labelLOOPNZlabel ;CX←CX-1,
;CX≠0且ZF=0,循环到标号labelJCXZlabel ;CX=0,转移到标号label35LOOP格式:LOOP
label操作:(CX)-1→CX;若(CX)≠0,则转至label处执行;否则退出循环,执行LOOP后面的指令。
不影响标志位。实际上,该指令可以等价两条指令:
DECCX;CX-1→CXJNZdst;ZF=0,转向dst执行364.中断指令中断(Interrupt)是又一种改变程序执行顺序的方法中断具有多种中断类型中断的指令有3条:INTnIRETINTO
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2.3 一元二次方程的根与系数的关系(基础达标)(解析版)
- 1.3 用反比例函数解决问题(1)教学课件
- 四年级下册英语星期月份词汇精讲|星期月份 时间表达
- 静脉采血健康指导
- 五级职业发展体系解析
- 九年级全册物理电路分析精讲|串并联 电流电压
- NISP认证就业前景
- 《两难情境解题思路大全|举一反三 吃透同类题型》
- 《生活物理应用课堂|发现身边的超声波应用知识》
- 建筑幕墙工程公司市场总监述职报告
- 2026广东江门市台山海洋发展集团有限公司招聘4人笔试题库含答案详解【夺分金卷】
- 110kV变电站模板安装及拆除施工方案
- 2025年厦门大学生命科学学院工程系列专业技术中初级职务人员招聘备考题库及答案详解一套
- 2026年党的廉政知识测试题及答案
- 腕表鉴定课件
- 2025年昆明市事业单位招聘考试卫生类药学专业试题集
- 固定资产管理标准化操作流程模板
- 供货进度计划一览表
- T/CCMA 0123-2021沥青混凝土摊铺机熨平装置
- CQE工作总结与计划
- DL∕T 707-2014 HS系列环锤式破碎机
评论
0/150
提交评论