第三章5-7讲指令系统.ppt

  1. 1、本文档共97页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章5-7讲指令系统

三、逻辑运算和移位类 逻辑运算 移位操作 1.逻辑运算 逻辑运算指令对操作数的要求大多与MOV指令相同。 “非”运算指令要求操作数不能是立即数 除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0 “与”指令: 格式: AND OPRD1,OPRD2 操作: 两操作数相“与”,结果送目标地址 “与”指令的应用 实现两操作数相与的运算 AND指令典型用法:用于屏蔽某些位,即使某些位为0. AND指令执行后,将使CF=0,OF=0,AF位无定义,指令执行结果影响SF,ZF和PF标志位. MOV AL , 39H???? //AL= 0011 1001B[39H] ADD AL , 0FH??? // AL= 0000 1001B[09H]? 即0011 1001B[39H]? ? 0000 1111B[0FH] = 0000 1001B[09H] “与”指令应用例 MOV AL,06H MOV BL,07H MOV BH,08H AND BL,[BX] AND AL,0FH AND AX,AX “或”运算指令 格式: OR OPRD1,OPRD2 操作: 两操作数相“或”,结果送目标地 址 “或”指令的应用 实现两操作数相“或”的运算 使某些位不变,某些位置“1” OR指令执行后,将使CF=0, OF=0, AF位无定义,指令执行结果影响SF, ZF和PF标志位. “或”指令的应用例 OR AX,[DI] OR CL,0FH OR AX,AX “非”运算指令 格式:NOT OPRD 操作:操作数按位取反再送回原地址 指令中的操作数不能是立即数 指令的执行对标志位无影响 例:NOT BYTE PTR[BX] MOV BL,55H NOT BL “异或”运算指令 格式: XOR OPRD1,OPRD2 操作: 两操作数相“异或”,结果送目标地址 两操作数自身相异或,结果 XOR AX,AX 1.XOR指令常用于使某个操作数清零, 2.同时,XOR指令执行后,将使CF=0, OF=0, AF位无定义,指令执行结果影响SF, ZF和PF标志位. 3.XOR指令使某些位维持不变则与 0 相异或,若要使某些位取反则与 1相异或. 将AL的高4位维持不变,低4位取反: MOV AL, B8H??? //AL=1011 1000B[B8H] XOR? AL, 0FH??? //AL=1011 0111B[B7H] 即1011 1000B[B8H] 与0000 1111[0FH]进行异或运算得到:1011 0111B[B7H] 测试某一个操作数是否与另一确定操作数相等: XOR??? AX , 042EH JZ?????? ....?? //如果AX==042EH, 则ZF=TRUE(1), 执行JZ... “测试”指令 格式: TEST OPRD1,OPRD2 操作: 执行“与”运算,但运算的结果不 送回目标地址。 应用:常用于测试某些位的状态 1.两个操作数相与的结果不保存,结果影响标志位PF,SF和ZF,使CF=0, OF=0,而AF位无定义. 2.TEST指令常用于在不改变原有的操作数的情况下,检测某一位或某几位的条件是否满足.只要令用来测试的操作数对应检测位为1,其余位为0,相与后判断零标志ZF值的真假. “测试”指令例 从地址为38F0H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FEH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。 编写相应的程序段。 检测某位是否为1: 令用来测试的操作数对应检测位为1,其余位为0,TEST指令后,若该位为1则 JNZ... TEST AL , 0000 00001B???;测试AL最低位是否为1: 令用来测试的操作数对应检测位为1,其余位为0,执行TEST指令。? JNZ?? THER ?? ;最低位若为1, 则ZF=FALSE(0), 执行JNZ THER, 否则执行下一条指令。 “测试”指令例 “测试”指令例 2. 移位指令 非循环移位指令 循环移位指令 移动一位时由指令直接给出;移动两位及以上,则移位次数由CL指定。 非循环移位指令 逻辑左移SHL(shift logical left) 算术左移SAL(shift arithmetic left) 逻辑右移 算术右移 算术左移和逻辑左移 格式: SAL OPRD,1 SAL OPRD,CL SHL OPRD,1 SHL

文档评论(0)

xy88118 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档