




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、四、逻辑运算和移位指令四、逻辑运算和移位指令逻辑指令逻辑指令指令分类指令分类逻逻辑辑运运算算AND、OR、XOR、NOT、TEST移移 位位 SHL、SAL、SHR、SAR 循循环环移移位位 ROL、ROR、RCL、RCR逻辑运算逻辑运算 :与、或、非、异或与、或、非、异或 特点:二进制数运算特点:二进制数运算 ,按位进行按位进行 与与 运算:运算:有有0则则0,全,全1则则1 或或 运算:运算:有有1则则1,全,全0则则0AB00011011AB0001 A B00011011AB0111例例: 1101 1100 1011 1010 1001 1000例例: 1010 1100 0011
2、1001 1011 1101 非非 运算:运算: 0则则1,1则则0 异或异或 运算:运算:异则异则1,同则,同则0A0 1A1 0 A B00011011A B0110例例: 1011 1010 0100 0101例例: 1010 1100 0011 1001 1001 0101指指令令格格式式执执行行操操作作 AND dst,src (dst) (dst)(src) OR dst,src (dst) (dst)(src) NOT oprd (oprd) (oprd) XOR dst,src (dst) (dst)(src) TEST oprd1,oprd2 (oprd1)(oprd2)1.
3、 逻辑运算指令逻辑运算指令AND AL , 0000 1111BOR BX , 00FFHNOT CLXOR DL, ALTEST AL, 0000 0001Bl 除除NOT指令单操作数外,其它均为双操作数指令单操作数外,其它均为双操作数l 可进行字节或字操作可进行字节或字操作l NOT指令不影响标志指令不影响标志l TEST只影响标志位,不影响操作数。只影响标志位,不影响操作数。其他指令其他指令置置CF、OF为为0,AF不定不定 ( 无意义无意义 )SF、ZF、PF据结果置位据结果置位 逻辑运算常用于使操作数的某位为逻辑运算常用于使操作数的某位为0或或1, 或测试某位为或测试某位为0还是还是
4、1。l使某位为使某位为1 用该位与用该位与1 相或相或,不变的位与,不变的位与0或。或。l使某位为使某位为0 用该位与用该位与0 相与相与,不变的位与,不变的位与1与。与。l使某位求反使某位求反 用该位与用该位与1 异或异或,不变的位与,不变的位与0异或。异或。l测试某位的值测试某位的值 用用TEST指令,据标志判断指令,据标志判断2. 移位指令移位指令SHL oprd, 1CLSAL oprd, 1CLSHR oprd, 1CLSAR oprd, 1CL0CF0CFCF0CF执行操作执行操作指令格式指令格式l 移位规则移位规则 左移:左移: 高位高位 低位低位 右移:右移: 高位高位 低位低
5、位 移出位进入移出位进入CF标志标志 对移位指令,移出对移位指令,移出CF标志后丢失标志后丢失 逻辑左移、算术左移的结果相同逻辑左移、算术左移的结果相同 逻辑右移,新移入的信息以逻辑右移,新移入的信息以0填入填入 算术右移,保持最高有效位原来的值(符号位不变)算术右移,保持最高有效位原来的值(符号位不变)0CF0CFSHLSALCF0CFSHRSAR例例 若(若(AL)=96H, CF=0 执行执行 SHL AL, 1执行前执行前:(AL)=96H ,CF=010010110执行后:执行后:( (AL)=2CH ,CF=100101100执行前执行前:(AL)=96H ,CF=01001011
6、0执行后执行后:(AL)=E5H ,CF=111100101CF例例 若(若(AL)=96H, CF=0, (CL) =2 执行执行 SAR AL, CL3. 循环移位指令循环移位指令指令格式指令格式执行操作执行操作CFCFCFCFROL oprd, 1CLROR oprd, 1CLRCL oprd, 1CLRCR oprd, 1CLl 移位规则移位规则 左移:左移: 高位高位 低位低位 右移:右移: 高位高位 低位低位 移出位进入移出位进入CF标志标志 对循环移位指令,改变各位的位置,信息不丢失对循环移位指令,改变各位的位置,信息不丢失 带进位循环移位,带进位循环移位,CF标志参加循环移位标
7、志参加循环移位ROLCFCFCFCFRORRCLRCR例例 若(若(AL)= 96H, CF=0 执行执行 ROL AL, 1执行前执行前:1001010CF=0 , (AL)=96h1执行后执行后:0010101CF=1, (AL)=2Dh1例例 若(若(AL)= 96H, CF=0, (CL)=2 执行执行 RCR AL, CL1001010执行前:执行前:1CF=0 , (AL)=96H0100111右移右移1位位:0CF=0 , (AL)=4BH0010001再右移再右移1位位:1CF=1 , (AL)=25H注意事项:注意事项: SHL AL, 1 SHR AL, CL ROL BX
8、, 1 RCR AL, CLl源操作数为移位的次数源操作数为移位的次数 为为1可在指令中直接给出可在指令中直接给出 大于大于1时,移位次数需由时,移位次数需由CL给出给出 RCR AX,5 SHL BL, ALl 目的操作数类型决定操作类型目的操作数类型决定操作类型SAL BL,CL 字节操作字节操作ROL BX,CL 字操作字操作当移位次数当移位次数l oprd可以是可以是reg/meml 可进行字节或字操作可进行字节或字操作l 对标志位的影响对标志位的影响移位指令移位指令:据结果设置据结果设置CF、SF、ZF、PF,对,对AF无定义无定义OF只在移位次数为只在移位次数为1时有效,其他无定义
9、时有效,其他无定义 移位后,最高有效位发生变化,则移位后,最高有效位发生变化,则OF=1,否则为,否则为0 (SAL,SHL最高位最高位 CF, 则:则: OF = 1, 否则:无变化时,否则:无变化时,OF = 0) (SAR,SHR, 对循环移位指令对循环移位指令:据移位结果设置据移位结果设置CF,对其他标志无影响,对其他标志无影响OF标志标志 ROL、 RCL影响标志影响标志OF、CF情况相同情况相同 ;移位后,移位后, ROR 、 RCR影响标志影响标志OF、CF情况相同情况相同 。移位后,移位后, 逻辑移位可用于无符号数乘除逻辑移位可用于无符号数乘除 算术移位可用于算术移位可用于 带
10、符号数乘除带符号数乘除左移一次,相当于乘左移一次,相当于乘2右移一次,相当于除右移一次,相当于除2例例 将将AL中的带符号数乘中的带符号数乘10 , 若若(AL)=X SAL AL ,1 ; (AL)=2X MOV BL ,AL ; (BL)=2X SAL AL ,1 ; (AL)=4X SAL AL ,1 ; (AL)=8X ADD AL ,BL ; (AL)=(8X+2X)=10X用用SAR指令与用指令与用IDIV指令做除法的区别指令做除法的区别 用用SAR指令做除法指令做除法(对负数向下舍入)(对负数向下舍入):MOV AX , 81H; (AX) = -127SAR AX , 1; (
11、AX)= - 64用用IDIV指令做除法指令做除法(IDIV指令对负数向上舍入)指令对负数向上舍入) :MOV AX , 81H;(AX)= -127MOV CL , 2IDIV CL;(AL)= -63 ,(AH)= -1五五. 控制转移和中断指令控制转移和中断指令在在8086/8088中,中,指令的地址指令的地址固定由固定由CS和和IP两个寄存器决定。两个寄存器决定。CPUDSESSSCSIP数据暂存器数据暂存器PSW标志标志寄存器寄存器执行部件控制电路执行部件控制电路指令译码器指令译码器AXBXCXDXAHBHCHDHSIDIBPSPALBLCLDL寄存器组寄存器组指指令令队队列列总线总
12、线接口接口控制控制电路电路运运算算器器地地址址加加法法器器、指令指令1指令指令2指令指令3指令指令4、数据数据1数据数据2数据数据3、地址总线地址总线AB数据总线数据总线DB控制总线控制总线CB地地址址译译码码器器内存内存总线总线l CS和和IP两寄存器的内容决定了程序的流程两寄存器的内容决定了程序的流程 改变改变CS和和IP寄存器的值,寄存器的值, 就改变了程序执行的流程。就改变了程序执行的流程。BB0001B12090 指令指令1指令指令2指令指令3指令指令n指令指令n+1指令指令n+3CS:IPCS:IP2、非控制转移指令、非控制转移指令,指令本身对,指令本身对CS和和IP均无操作,均无
13、操作, 形成顺序执行结构。形成顺序执行结构。CS:IPBB0001B12090指令指令1指令指令2指令指令3顺序执行结构顺序执行结构: 顺序存放,顺序执行顺序存放,顺序执行 (此时此时IP的变化由的变化由CPU内部的硬件自动完成内部的硬件自动完成)3、 控制转移指令控制转移指令以以CS和和IP为主要操作对象,为主要操作对象, 改变改变CS和和IP的值,的值,使程序产生分支、调用结构。使程序产生分支、调用结构。分支结构、调用结构分支结构、调用结构: 顺序存放,非顺序执行顺序存放,非顺序执行指指令令类类型型助助记记符符无无条条件件转转移移 JMP条条件件转转移移JE/JZ, JNE/JNZ, JS
14、, JNS, JO, JNOJP, JNP, JC, JNC, JCXZJA/JNBE, JAE/JNB, JB/JNAE, JBE/JNAJG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG循循环环控控制制LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ过过程程调调用用CALL, RET中中断断指指令令INT, INTO, IRETl 控制转移指令分类控制转移指令分类掌握:掌握:JMP, JZ, JNZ, JC, LOOP CALL, RET, INT N, IRETl 控制转移指令(控制转移指令(JMP、Jcc、LOOPxx、CALL)概述)概述例例 JMP
15、 exit JZ zero LOOP next CALL display指令格式:指令格式: 助记符助记符 操作数操作数 助记符助记符 JMP、Jcc、LOOPxx、CALL 操作数操作数 给出要转移到的目的地址给出要转移到的目的地址目的地址在目的地址在reg、mem中,中,取来指令后间接得到目的地址取来指令后间接得到目的地址操作数操作数(目的地址目的地址)的三种表示方法:的三种表示方法:目的地址在指令中目的地址在指令中,取来指令后直接得到目的地址取来指令后直接得到目的地址例例 JMP AX JMP WORD PTR BX 符号地址符号地址 (标号或过程名标号或过程名)寄存器寄存器reg 存储
16、器存储器mem 符号地址符号地址 : 在汇编格式指令中用符号来表示地址在汇编格式指令中用符号来表示地址 可以是可以是标号、过程名标号、过程名(子程名子程名) 例例 CMP AX, BX JGE great XCHG AX, BX great: MOV max, AX根据标号与控制转移指令所在位置,根据标号与控制转移指令所在位置,标号有三种类型:标号有三种类型:SHORT 短属性短属性 NEAR 近属性近属性 FAR 远属性远属性 过程名过程名 ( 子程名子程名 ) :过程指示过程过程指示过程(子程子程)第一条指令的地址。第一条指令的地址。例例 display PROC near 、 、 、 d
17、isplay ENDP按过程与调用语句间的位置,过程有两种类型:按过程与调用语句间的位置,过程有两种类型:NEAR类型类型:调用指令与过程:调用指令与过程在在同一个段中同一个段中FAR类型类型:调用指令与过程:调用指令与过程在不在不同段中同段中过程定义方法:过程定义方法:符号名符号名 PROC 类型类型 、 、 、符号名符号名 ENDP 转转移移方方式式CS操操作作数数跳跳转转范范围围段段内内直直接接短短 方方 式式不不变变符符号号地地址址(SHORT)-128 127即即 0FFH段段内内直直接接近近 方方 式式不不变变符符号号地地址址(NEAR 属属性性)一一个个段段内内0FFFFH段段
18、内内间间接接方方式式不不变变regmem (DW 类类型型)一一个个段段内内0FFFFH段段 间间直直接接方方式式变变符符号号地地址址(FAR 属属性性)整整个个内内存存0FFFFFH段段 间间间间接接方方式式变变mem(DD 类类型型)整整个个内内存存0FFFFFHl 转移方式:转移方式:由由CS是否变化、以及操作数类型决定是否变化、以及操作数类型决定 转转移移方方式式 无无条条件件转转移移 JMP 条条件件转转移移 Jcc 循循环环转转移移 LOOPxx 子子程程调调用用 CALL 段段内内直直接接 短短 方方 式式 段段内内直直接接 近近 方方 式式 段段 内内 间间接接方方式式 段段
19、间间 直直接接方方式式 段段 间间 间间接接方方式式 l 各控制转移指令允许使用的转移方式各控制转移指令允许使用的转移方式1、无条件转移指令无条件转移指令 2、条件转移指令条件转移指令3、循环控制指令循环控制指令4、过程调用指令过程调用指令5、中断指令中断指令 (1) 无条件转移指令无条件转移指令JMP 格式格式 JMP 目标地址目标地址 执行操作执行操作 无条件转移到目标地址处无条件转移到目标地址处 转移方式转移方式 5种方式均可种方式均可例例 、 、 JMP next 、 、next: MOV AX, BX 、段内直接短方式段内直接短方式段内直接近方式段内直接近方式段内间接方式段内间接方式
20、段间直接方式段间直接方式段间间接方式段间间接方式(2) 条件转移指令条件转移指令 格式格式: Jcc 符号地址符号地址 测试条件的助记符测试条件的助记符 执行执行: 当转移条件满足,转向目标地址去执行。当转移条件满足,转向目标地址去执行。 当、不满足,执行当、不满足,执行Jcc后的下一条指令。后的下一条指令。 转移方式转移方式: 只允许段内直接短方式,跳转范围在只允许段内直接短方式,跳转范围在-128127 例例 、 CMP AX, BX JZ zero ; ZF =1 ? 、 、 zero: MOV flag,0 、按转移条件不同,条件转移指令可以分为四大类按转移条件不同,条件转移指令可以分
21、为四大类: 以单个状态标志作为转移条件以单个状态标志作为转移条件 以以CX的值为的值为0作为转移条件作为转移条件助助记记符符转转移移条条件件JZZF=1JSSF=1JOOF=1JPPF=1JCCF=1助助记记符符转转移移条条件件JNZZF=0JNSSF=0JNOOF=0JNPPF=0JNCCF=0助助记记符符转转移移条条件件JCXZCX=0 以两个无符号数比较的结果作为转移条件以两个无符号数比较的结果作为转移条件 以两个带符号数比较的结果作为转移条件以两个带符号数比较的结果作为转移条件助助记记符符转转移移条条件件JA/ /JNBECFZF=0高高于于/ /不不低低于于等等于于JAE/ /JNB
22、/ /JNCCF=0高高于于等等于于/ /不不低低于于/ /无无进进位位JB/ /JNAE/ /JCCF=1低低于于/ /不不高高于于等等于于/ /有有进进位位JBE/ /JNACFZF=1低低于于等等于于/ /不不高高于于助记符助记符转移条件转移条件JG/ / JNLE(SFOF ) ZF=0大于大于/ / 不小于等于不小于等于JGE/ / JNLSF OF=0大于等于大于等于/ / 不小于不小于JL/ / JNGESF OF=1小于小于/ / 不大于等于不大于等于JLE/ /JNG(SFOF ) ZF=1小于等于小于等于/ / 不大于不大于 (3) 循环指令循环指令 格式格式 LOOPxx符号地址符号地址 执行执行 (CX) (CX)- - 1 此操作不影响标志此操作不影响标志 检查转移条件,满足,转向目标地址去执行检查转移条件,满足,转向目标地址去执行; 不满足,执行不满足,执行LOOPxx后一条指令后一条指令转移方式转移方式 只允许段内直接短方式,跳转范围只允许段内直接短方式,跳转范围-128127助助记记符符转转移移条条件件不不转转移移条条件件LOOPCX0 0CX=0LOOPZCX0 0 且且 ZF= =1 1CX=0 或或 ZF=0LOOPNZCX0 且且 ZF=0CX=0 或或 ZF=1 与条件转移指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江诸暨市牌头中学2026届化学高一第一学期期中监测模拟试题含解析
- 2025年环境艺术设计师招聘考试模拟题及解析
- 2025年题库音乐教师招聘考试音乐鉴赏方向预测题
- 2025年福彩中心招聘面试题及面试技巧
- 2025年互联网科技客服团队负责人面试宝典面试技巧与问题解析
- 2025年一级注册消防工程师预测试题及专家解读
- 清平乐闲云750字15篇范文
- 农业种植项目与物流配送合作协议
- 2025年公务员遴选考试模拟试题解析文旅局篇
- 2025年娱乐行业艺人经纪公司面试笔试题目及答案解析
- 2025年注册测绘师测绘综合能力的真题卷(附答案)
- 2025-2030中国移动卫星终端设备行业发展分析及发展趋势与投资前景预测研究报告
- 智慧公交可行性研究报告
- 项目城市轨道交通风险管理与安全评估刘连珂
- 音乐演出活动场地使用协议
- 道路施工机械设备安全知识培训
- 销售人员廉洁自律心得体会
- 鲜奶运输规范管理制度
- AI在护理查房中的应用
- 2025版安全生产法培训
- 机动车环检试题及答案
评论
0/150
提交评论