80X86汇编语言程序设计 第二章⑦.8086 8088指令系统(四)逻辑运算和移位指令.doc

80X86汇编语言程序设计 第二章⑦.8086 8088指令系统(四)逻辑运算和移位指令.doc

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

80X86汇编语言程序设计 第二章 8086/8088寻址方式和指令系统 (四)逻辑运算和移位指令 1.逻辑运算指令 (1)否操作指令NOT 格式:NOT OPRD 这条指令把操作数OPRD取反,然后送回OPRD。操作数OPRD可以是通用寄存器,也可以是存储器操作数,不能是立即数。此指令对标志位没有影响。 例如:MOV AL,03H NOT AL 指令执行后:(AL)=0FCH (2)与操作指令AND 格式:AND OPRD1,OPRD2 这条指令对两个操作数进行按位的逻辑“与”运算,结果送到目的操作数OPRD1。该指令执行以后,标志CF=0,标志OF=0,标志PF、ZF、SF反映运算结果,标志AF未定义。某个操作数自己与自己相“与”,则值不变,但可使进位标志CF清0。与操作指令主要用在使一个操作数中的若干位维持不变,而另外若干位清为0的场合。把要维持不变的这些位于“1”相“与”,而把要清为0的这些位于“0”相“与”就能达到这样的目的 相“与”:两个操作数都是1的,结果为1,其他情况全是0。 例如:MOV AL,23H MOV BL,02H AND AL,BL 指令执行后:(AL)=02H (AL)=23H,将AL寄存器的第一位和第三位清零,其余位不变,则BL是什么时,与AL执行AND指令可完成? (BL)=F5H MOV AL,23H MOV BL,F5H AND AL,BL (3)或操作指令OR 格式:OR OPRD1,OPRD2 这条指令执行以后,标志CF=0,标志OF=0.,标志PF、ZF、SF反映运算结果,标志AF未定义。某个操作数自己与自己相“或”,则值不变,但可使进位标志CF清0。 相“或”:两个操作数中有一个是1的,结果为1,其他情况全是0。 或操作指令主要用于在使一个操作数中的若干位维持不变,而另外若干位置为1的场合。把要维持不变的这些位于“0”相“或”,而把要置为1的这些位与“1”相“或”就能达到这样的目的。 例如:MOV BL,12H OR BL,BL (BL)=12H CF=0 (4)异或操作指令XOR 格式:XOR OPRD1,OPRD2 相“异或”:两个操作数,一个是0,一个是1,则为1;两个都为1,则为0;两个都为0,则为0。 这条指令对两个操作数进行按位的逻辑“异或”运算,结果送到目的操作数OPRD1。该指令执行以后,标志CF=0,标志OF=0,标志PF、ZF、SF反映运算结果,标志AF未定义。某个操作数自己与自己相“异或”,则结果为0,并可使进位标志CF清0。异或操作指令主要用于在使一个操作数中的若干位维持不变,而另外若干位置取反的场合。把要维持不变的这些位于“0”相“异或”,而把要取反的这些位与“1”相“异或”就能达到目的。 例如:MOV BL,56H XOR BL,BL 指令执行后:(BL)=0 CF=0 (5)测试指令TEST 格式:TEST OPRD1,OPRD2 这条指令和指令AND类似,也把两个操作数进行按位“与”,但结果不送到操作数OPRD1。该指令执行以后,标志ZF、PF和SF反映运算结果,标志CF和OF被清0。该指令通常用于检测某些位是否为1,但又不希望改变原操作数值的场合。 例如:要检查AL中的位6或位2是否有一位为1,可使用下面的指令: TEST AL ;符号 B表示二进制 (44H) 如果位6和位2全为0,那么在执行上面的指令后,ZF被置1,否则ZF被清0。 例如:要求屏蔽0、1两位,可用AND指令并设置常数0FCH。 MOV AL,0BFH AND AL,0FCH 这两条指令执行的结果使(AL)0BCH所以AND指令可以使操作数的某些位被屏蔽。 例如:要求第5位置1,可用OR指令 MOV AL,43H OR AL,20H 这两条指令执行后,(AL)=63H,所以用OR指令可以使操作数的某些位置1,其它位则保持不变。 例如:要测试操作数的某位是否为1,则可先把该操作数求反然后用TEST指令测试。如要测试AL寄存器中第二位是否为1,如为1则转移到EXIT去执行,可用下列指令序列: MOV DL,AL NOT DL TEST DL JE EXIT 2.一般移位指令 (1)算术左移或逻辑左移指令SAL/SHL(Shift Aritlunetic Left 或Shift Logic Left) 算术左移和逻辑左移进行相同的动作,尽管为了方便提供有两个助记符,但只有一条机器指令。 格式:SAL OPRD,m SHL OPRD,m 算术左移SAL(有符号数)/逻辑左移S

文档评论(0)

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

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

1亿VIP精品文档

相关文档