- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Intel汇编_hapter_06_条件处理
复合表达式—OR If ((albl) || (blcl)) { X = 1; } cmp al, bl ja L1 cmp bl, cl jbe L2 L1: mov x, 1 L2: WHILE循环 while (ab) { a++; b-- ; } mov eax, a While: cmp eax, b jnl EndWhile inc eax dec b jmp While EndWhile: WHILE循环 while(op1op2) { op1++; if(op2==op3) x=2; else x=3; } 练习 if(bxcx) x=1; if(dx=cx) x=1; else x=2; if(val1cx and cxdx) x=1; else x=2; if(bxcx or bxval1) x=1; else x=2; if(bxcx and bxdx) or (dxax) x=1; else x=2; 以表格驱动的分支选择 .data CaseTable byte ‘A’ dword Process_A byte ‘B’ dword Process_B byte ‘C’ dword Process_C 6. 应用:有限状态机 有限状态机(FSM,finite-state machine) 依据某些输入而改变状态的机器或程序; 图中方块或圆表示节点,之间带箭头的连线成为边或弧; 有向图(directed graph 或diagraph)的一个特殊实例; A B C Start 输入字符串的验证 假设字符串有效性规则为: 字符串必须以字母‘x’开头,以字母‘z’结尾; 中间可以有{‘a’,…,’y’}之间的0个或多个字符; A B C Start ‘x’ ‘z’ ‘a’,…‘y’ 有符号整数的验证 A C B Start +,- digit digit digit 7. 使用.IF伪指令 格式: .IF 条件 语句 [.ELSEIF 条件 语句 ] [.ELSE 语句 ] .ENDIF 使用与C++/JAVA相同的布尔表达式:,,==,!=,,|| 详见P165表6.6 mov eax, 6 .IF eax val1 mov result, 1 .ENDIF CPU如何判断比较的是有符号还是无符号 .data val1 dword 5 result dword ? .code mov eax, 6 .IF eax val1 mov result, 1 .ENDIF .data val1 dword - 5 result dword ? .code mov eax, 6 .IF eax val1 mov result, 1 .ENDIF .REPEAT和.WHILE伪指令 格式: .REPEAT 语句 .UNTIL 条件 .WHILE 条件 语句 .ENDW mov eax, 0 .REPEAT inc eax val1 call WriteDec call Crlf .UNTIL eax==10 mov eax, 0 .WHILE eax 10 inc eax val1 call WriteDec call Crlf .ENDW * 计算机科学系-汇编课件 第6章 条件处理 要点: 简介 布尔和比较指令 条件跳转 条件循环指令 条件结构 应用:有限状态机 使用.IF伪指令 1. 简介 如何使用布尔运算符(AND、OR和NOT)? 在汇编语言中如何写一条IF语句? 编译器是如何将嵌套的IF语句翻译成机器语言的? 如何设置和清除二进制数字中的单个位? 如何对数据进行简单的加密? 如何通知计算机正在比较的是有符号数还是无符号数? 什么是有限状态机? 难道没有什么方法可以在汇编语言中创建我们在C++和Java中已经习惯使用了的IF-ELSE-ENDIF结构吗? GOTO语句真的有害吗? 1. 简介 2. 布尔和比较指令 布尔指令 AND、OR、XOR、NOT TEST BT、BTC、BTR、BTS 比较指令 CMP CPU的状态标志 ZF、SF、CF、OF、PF、AF AND指令在每对操作数的对应数据位之间执行布尔位“与”操作,并将结果存放在目的操作数中: AND 目的操作数,源操作数 AND reg,reg/mem/imm AND mem, reg/
文档评论(0)