- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
chapter6条件处理
第6章 条件处理 1. 简介 如何使用布尔运算符(AND、OR和NOT)? 在汇编语言中如何写一条IF语句? 编译器是如何将嵌套的IF语句翻译成机器语言的? 如何设置和清除二进制数字中的单个位? 如何对数据进行简单的加密? 1. 简介 如何通知计算机正在比较的是有符号数还是无符号数? 什么是有限状态机? 难道没有什么方法可以在汇编语言中创建我们在C++和Java中已经习惯使用了的IF-ELSE-ENDIF结构吗? GOTO语句真的有害吗? 2. 布尔和比较指令 布尔指令 AND、OR、XOR、NOT TEST BT、BTC、BTR、BTS 比较指令 CMP CPU的状态标志 ZF、SF、CF、OF、PF、AF AND指令 AND指令在每对操作数的对应数据位之间执行布尔位“与”操作,并将结果存放在目的操作数中: AND 目的操作数,源操作数 AND reg,reg/mem/imm AND mem, reg/imm AND指令 AND指令 具体应用举例——字符大小写转换 分析: ‘a’(61h) ‘A’(41h) OR指令 OR指令在每对操作数的对应数据位之间执行布尔位“或”操作,并将结果存放在目的操作数中: OR 目的操作数,源操作数 OR reg,reg/mem/imm OR mem, reg/imm OR指令 XOR指令 XOR指令在每对操作数的对应数据位之间执行布尔位“异或”操作,并将结果存放在目的操作数中: XOR 目的操作数,源操作数 XOR reg,reg/mem/imm XOR mem, reg/imm XOR指令 XOR指令 利用XOR指令的特性实现简单的数据加密 特性:对数值进行两次“异或”操作后其操作效果将被抵消; (X⊕Y)⊕ Y = X NOT指令 NOT指令将一个操作数的所有数据位取反: NOT reg NOT mem NOT指令不修改任何状态标志 练习 mov al, and al, mov al, 6dh and al, 4ah mov al, or al, 61h mov al, 94h xor al, 37h TEST指令 TEST指令在每对操作数的对应数据位之间执行隐含的“与”操作,并相应设置标志位。 TEST指令不修改目的操作数; 指令格式和AND指令相同,但该指令在测试操作数某位或某几位是否被设置时特别有用! 当所有测试位都为0时,ZF=1 CMP指令 CMP指令在源操作数和目的操作数之间执行隐含的减法操作,两个操作数都不会被修改: CMP 目的操作数,源操作数 CMP指令 mov ax, 5 cmp ax, 10 mov ax, 1000 mov cx, 1000 cmp cx, ax mov si, 105 cmp si, 0 关于单个CPU指令 and al, 0 ;ZF=1 or al, 1 ;ZF=0 or al, 80h ;SF=1 and al, 7fh ;SF=0 stc ;CF=1 clc ;CF=0 3. 条件跳转 根据特定的标志值 根据操作数之间是否相等,或根据ECX的值 根据无符号操作数的比较结果 根据有符号操作数的比较结果 根据特定标志跳转 JZ/JNZ JC/JNC JS/JNS JO/JNO JP/JNP 根据相等比较的跳转指令 JE/JNE JCXZ JECXZ 无符号数比较 JA/JNA JAE/JNAE JB/JNB JBE/JNBE 有符号数比较 JG/JNG JGE/JNGE JL/JNL JLE/JNLE 条件跳转的应用 两个数的较大值 三个数的最小值 扫描数组查找特定值 字符串加密 位测试指令 BT(bit test)指令 选择第一个操作数的第n位并将其拷贝到进位标志中 BT 位基,n BT r/m16,r16/imm8 BT r/m32,r32/imm8 位测试指令 BTC 选择第一个操作数的第n位并将其拷贝到进位标志中,同时将这个数据取反 BTR 选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位清零 BTS 选择第一个操作数的第n位并将其拷贝到进位标志中,同时将第n位置位 4. 条件循环指令 LOOPZ / LOOPE 在ZF=1并且ECX ≠ 0时循环 目标标号据LOOPZ的下一条指令的距离应该在-128到+127字节范围内 LOOPNZ / LOOPNE 在ZF=0并且ECX ≠ 0时循环 目标
您可能关注的文档
最近下载
- 遗体表面防腐操作擦拭涂抹法现代遗体防腐技术.pptx VIP
- 遗体防腐整容操作废液收集方法现代遗体防腐技术.pptx VIP
- unit1Financialsystem金融英语第一课省公开课金奖全国赛课一等奖微课获奖PPT课件.pptx VIP
- 2024版冠心病诊断与治疗指南ppt课件[1] .pdf VIP
- 教学课件 管理学基础(刘璇 张永良).ppt
- 教学楼、教学楼水电施工组织计划.docx VIP
- 41水平五 篮球单元18课时计划-《篮球:交叉步持球突破》说课稿.docx VIP
- 遗体防腐操作废液排放的监测及控制现代遗体防腐技术.pptx VIP
- 我的梦中国梦——共筑中国梦PPT课件.pptx VIP
- 中国天眼完整版本.ppt VIP
文档评论(0)