微机原理与接口技术09.ppt

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

MMX比较指令MMX比较指令单独比较两个操作数的各个数据元素(字节、字或双字)。如果比较结果为真,目的寄存器中相应的数据元素被置为全1;否则,被置为全0。比较指令并不设置标志位。MMX比较指令表MMX指令功能描述pcmpeqb比较紧缩字节整数值的相等性pcmpeqw比较紧缩字整数值的相等性pcmpeqd比较紧缩双字整数值的相等性pcmpgtb判断目的紧缩字节整数值是否大于源操作数pcmpgtw判断目的紧缩字整数值是否大于源操作数pcmpgtd判断目的紧缩双字整数值是否大于源操作数MMX比较指令举例;数据段valuelword10,15,30,45value2word10,10,30,30resultqword?;代码段movqmm0,valuelmovqmm1,valuepcmpgtwmm0,mm1movqresult,mm0MMX逻辑运算指令MMX指令功能描述pand对源和目的操作数执行按位逻辑与(AND)操作pandn先对目的操作数执行按位逻辑非(NOT)操作,然后再与源操作数执行按位逻辑与操作por对源和目的操作数执行按位逻辑或(OR)操作pxor对源和目的操作数执行按位逻辑异或(XOR)操作MMX移位指令MMX移位指令用源操作数指定的数量,移位MMX寄存器中操作数的每一个数据元素(字、双字或4字)。指定移位个数的源操作数可以是MMX寄存器、存储器数据和8位立即数。目的操作数必须是MMX寄存器。紧缩逻辑左移指令psllw/pslld/psllqdestination,sourcepsllw/pslld/psllq指令分别以字、双字或4字为数据元素单位,按源操作数指定的数值左移目的操作数中的每一个数据元素,低位用零填充。如果指定的移位个数大于15(对字)、31(对双字)或63(对4字),则目的寄存器为全0。例如,对于mm0=0001000200030004h,执行指令psllwmm0,2;执行后mm0=00040008000C0010h紧缩逻辑右移指令psrlw/psrld/psrlqdestination,sourcepsrlw/psrld/psrlq指令分别以字、双字或4字为数据元素单位,按源操作数指定的数值右移目的操作数中的每一个数据元素,高位用零填充。如果指定的移位个数大于15(对字)、31(对双字)或63(对4字),则目的寄存器为全0。例如,对于mm0=0012003400560078h,执行指令psrlwmm0,2;执行后mm0=0004000D0015001Eh紧缩算术右移指令psraw/psraddestination,sourcepsraw/psrad指令分别以字或双字为数据元素单位,按源操作数指定的数值右移目的操作数中的每一个数据元素,高位用该数据元素原来的符号位填充。如果指定的移位个数大于31(对双字)或63(对4字),则目的寄存器中各数据元素全为原符号位。例如,对于mm0=F005800300980076h,执行指令psrawmm0,2;执行后mm0=FC01E0000026001Dh状态清除指令状态清除指令emms没有操作数。MMX寄存器使用浮点数据寄存器64位有效数字部分,任何一条MMX指令(除了emms指令)执行后,整个浮点标记字寄存器将被置为全0。当标记为00,浮点处理单元就认为浮点数据寄存器含有有效的数据;当标记为11,则表示浮点数据寄存器没有数据、为空。因此,在处理器退出MMX指令程序段时,应该使浮点数据寄存器对浮点处理单元可用。emms指令通过设置浮点标记字为全1,由此清除其他MMX指令设置的标记状态,还FPU一个“清白”的浮点数据寄存器栈。MMX汇编语言程序设计总结(1)采用MMX指令的汇编语言程序,与普通汇编语言程序大致相同,但也要注意2个问题。⑴确认支持MMX指令的微处理器为了采用MMX指令,程序必须首先确认处理器支持MMX指令。使eax=1,执行cpuid指令后检测edx寄存器的D23位,当D23=1就表示支持MMX指令。源程序的开始应该指定汇编Pentium和MMX指令,采用.586和.mmx伪指令即可。MMX汇编语言程序设计总结(2)⑵不要在指令集混用MMX指令与浮点指令实际系统中,往往同时存在MMX指令程序和浮点程序。由于MMX寄存器实际上是采用浮点数据寄存器实现的,显然程序不能同时在一个寄存器中既使用浮点数据又使用紧缩数据。另外,浮点指令和MMX指令之间

文档评论(0)

177****7891 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档