- 1、本文档共54页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
6_条件处理
汇编语言 lybliu@cuit.edu.cn, QQ (学校主页?教学平台) 第6章 条件处理 布尔运算和比较指令 条件跳转 条件循环指令 条件结构 决策伪指令 6.1 简介 条件分支是体现计算机智能的重要方面 高级语言中采用if语句,switch语句等来实现条件分支 汇编语言中同样提供了相应的支持 6.2 布尔和比较指令 布尔运算包括四种基本操作: AND OR XOR NOT IA-32指令集中也包括上述四种基本操作,助记符与上相同,除此以外,还有TEST指令 AND指令:把源操作数和目的操作数对各二进制位按位与,结果存到目的操作数中。OR,XOR指令:提供或、异或功能。 NOT指令:对目的操作数各位按位取反,结果存到目的操作数中 TEST 指令:与AND指令类似,把源操作数和目的操作数对各二进制位按位相与,但结果不存到目的操作数中 要注意上述指令对标志位的影响 BTop类指令能够对目的操作数中某一位作操作,共包括如下四条 BT BTC BTR BTS 6.2.1 CPU的状态标志 指令AND, OR, XOR均对进位标志(CF)和溢出标志(OF)清0,另三种标志位(即零标志ZF、符号标志SF、奇偶标志PF)按运算结果设置 TEST指令与AND指令对标志位的影响相同。 NOT指令不影响标志位 6.2.2 AND指令 功能:对两个操作数中的每个位执行“与”运算,结果存到目的操作数中 支持的格式: AND reg , reg AND reg , mem AND reg , imm AND mem , reg AND mem , imm 两个操作数可以是8位,16位,32位,尺寸必须相同。 运算规则为两个数据位均为1,结果为1,否则结果为0 影响的标志:清除CF和OF,依据目的操作数设置SF,ZF,PF AND指令的用途举例: 清除选定的位,并同时保留其他位: 如要对某个数中的某几位清0,其他位不变,则可以让这个数跟某个数相与:要清零的位设置为0,不变的位设置为1。 如要获取某字节里的低四位值,就可以将这个字节这个数相与,相与的结果就是原数的高四位清0,低四位保持不变 将小写字母转换成大写字母 同一字母的大写字母和小写字母的ASCII码的区别只在第5位不同,其他各位相同,小写字母第5位为1,大写字母第5位为0 如要把小写转大写,则可将小写的ASCII码相与 小写转大写的代码 .data aName byte “Abraham” , 0 nameSize=($-aName) - 1 .code Main proc mov ecx , nameSize mov esi , 0 L1:AND aName[esi] , inc esi loop L1 Main endp End Main 6.2.3 OR 指令 功能:把两个操作数按位相“或”,结果存到目的操作数中。 指令格式与AND指令相同 运算规则:两个运算的位中只要有一位为1,结果就为1,两位全为0,结果为0 对标志位的影响与AND指令相同 通过OR指令可以对特定位置1 将0-9之间的整数转换为对应数字符号的ASCII码 .data aNum byte 1,3,2 , 0 numSize=($-aNum) - 1 .code Main proc mov ecx , numSize mov esi , 0 L1:OR aNum[esi] , 110000B inc esi loop L1 exit Main endp End Main 6.2.5 XOR 指令 功能:对操作数的每位作“异或”运算,结果存到目的操作数中 指令格式与AND指令相同。 运算规则:参与运算的两位相同,结果为0,两位不同,结果为1 对标志位的影响与AND指令相同 异或运算的一个特点:某个操作数与同一个操作数异或两次,其值保持不变。利用这个特性可以实现加密。 异或指令应用举例 检查一个数的奇偶性 将此数与0相异或,此数值保持不变,而标志寄存器中的PF位反映这个数的奇偶性(为偶数个时PF为置1) 16位值的奇偶性 可以把这个16位值分成高低8位,让这高低8位异或,其8位结果的奇偶性与16位值的奇偶性相同 6.2.6 NOT 指令 功能:一个操作数,对这个操作数中的各位取反,结果再存到这个操作数中。 指令格式 NOT reg NOT mem 注意: 不影响标志位。 6.2.7 TEST指令 功能:将两操作数按位执行相“与”操作,结果不存到目的操作数,但标志寄存器中的标志位体现结果的属性。 指令格式与AND指令相同,对标志
文档评论(0)