SHLD(双精度左移)指令将目的操作数向左移动指定位数。移动形成的空位由源操作数的高位填充。SHRD(双精度右移)指令将目的操作数向右移动指定位数。移动形成的空位由源操作数的低位填充。源操作数不变,但是符号标志位、零标志位、辅助进位标志位、奇偶标志位和进位标志位会受影响。

下图展示的是 SHLD 执行移动两位的过程。源操作数的最高位复制到目的操作数的最低位上。目的操作数的所有位都向左移动:

下图展示的是 SHRD 执行移动两位的过程:

目标操作数可以是寄存器或内存操作数,源操作数必须是寄存器,移位次数可以是 CL 寄存器或者 8 位立即数,格式如下:

SHLD 16位寄存器,16位寄存器,cl寄存器或者8位立即数
SHLD 16位内存数,16位寄存器,cl寄存器或者8位立即数
SHLD 32位寄存器,32位寄存器,cl寄存器或者8位立即数
SHLD 32位内存数,32位寄存器,cl寄存器或者8位立即数

下面的代码示例展示了用 SHRD 如何将一个双字数组右移 4 位:

.data
array DWORD 648B2165h, 8C943A29h, 6DFA4B86h, 91F76C04h, 8BAF9857h.code
main PROCnopmov esi, OFFSET arraymov ecx, (LENGTHOF array) - 1
L1: mov eax, [esi + TYPE DWORD]shrd [esi], eax, 4add esi, TYPE DWORDloop L1shr DWORD PTR [esi], 4invoke ExitProcess,0
main ENDPend main

x86汇编_SHLD/SHRD双精度左右移指令_笔记49相关推荐

  1. x86汇编_CMP指令_笔记_28

    高级语言常用的比较语句: if A > B ... while X > 0 and X < 200 ... if check_for_error(N) = true x86汇编用cm ...

  2. x86汇编_JE、JNE、JCXZ 和 JECXZ 指令_笔记_34

    基于左右操作数或寄存器值的跳转 助记符 英文翻译 说明 JE Jump if left Equals right 相等跳转 (左操作数=右操作数) JNE Jump if left Not Equal ...

  3. 循环左移和循环右移指令_数控铣床编程中,关于钻孔循环指令G81G82G83G73,分享个人经验...

    从事数控铣床编程加工中,常会遇到钻孔加工.因此,编程人员首先需要了解孔加工类刀具的选择与使用:其次,要根据孔的形状和加工特点选择合适的固定循环指令,本文主要讲解四种钻孔切削循环指令. 首先,对工件孔加 ...

  4. X86汇编---寄存器+指令

    文章目录 X86汇编常见的寄存器 x86汇编指令集大全 X86汇编常见的寄存器 4个数据寄存器(EAX.EBX.ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP ...

  5. x86汇编指令具体解释

    80x86指令系统 80x86指令系统,指令按功能可分为下面七个部分. (1) 数据传送指令. (2) 算术运算指令. (3) 逻辑运算指令. (4) 串操作指令. (5) 控制转移指令. (6) 处 ...

  6. 编译原理—x86汇编指令

    eax, ebx, ecx, edx, esi, edi, ebp, esp寄存器 eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄 ...

  7. 【Android 逆向】x86 汇编 ( 参考资料 | Intel 官方的文档 | x86 汇编中文文档 | 汇编指令查询器 )

    文章目录 一.x86 汇编参考文档 1.Intel 官方的文档 2.常用 x86 汇编文档 3.x86 汇编指令查询器 总结 一.x86 汇编参考文档 下面的所有资料 , 都可以在博客资源 https ...

  8. x86汇编_移位和循环移位指令简介_笔记46

    移位指令与前面介绍的按位操作指令一起形成了汇编语言最显著的特点之一.位移动 (bit shifting) 意味着在操作数内向左或向右移动.x86 处理器在这方面提供了相当丰富的指令集如下表所示,这些指 ...

  9. X86汇编学习小结----cmp 完整版本

    生成汇编代码 比如,一个简单的函数: // hello.c void func(){} 如何得到相应的汇编代码呢? gcc -S hello.c hello.s clang -S hello.c he ...

最新文章

  1. 首次使用批处理框架 Spring Batch ,被震撼到了,太强大...
  2. 基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计
  3. java8编译_为什么在Java7中编译而在Java8中编译?
  4. java lambda 应用场景,Java中Lambda的使用范围
  5. 〔转〕Word域的应用和详解5_索引和目录
  6. Linux下防火墙开放端口
  7. ORA-27101 shared memory realm does not exist 错误处理
  8. speech production model
  9. 微信墙服务器地址,一面微信墙的诞生(3) 用户端界面的创建
  10. 媒体没谈到的企业即时通讯软件
  11. 如何向父母解释什么是爬虫?
  12. 体验SubSonic
  13. RabbitMQ之交换机总结(图文并茂讲解)
  14. 教孩子学编程 python 下载_教孩子学编程 python语言版
  15. 系统同传软件_国外科研大牛的讲座,英语不好别抓瞎,免费同传神器来帮忙
  16. 【数模智能算法】BP神经网络基本算法原理
  17. ps入门第17天_模糊与锐化 案例:基础磨皮效果_ps修图_ps磨皮_ps高低频修图
  18. 家用计算机键盘图,电脑键盘示意图,教您如何正确的使用键盘
  19. python字典怎么获得_python怎样获取字典中前十个
  20. 网易花19亿买地,要在上海建总部大楼,团队至少2000人

热门文章

  1. Laravel 教程:使用Fast Excel解决导出超大 XLSX 文件(千万级)带来的内存问题
  2. mbp网速很慢_macbook无线上网很慢怎么办 macbook无线上网很慢解决方法
  3. Visio如何把形状置于底层
  4. eap wifi 证书_如何以编程方式在Android中安装CA证书(用于EAP WiFi配置)?
  5. idea中的.iml和.idea能删除么——可以
  6. word统计纯汉字字数
  7. 微信返利机器人开发制作
  8. 三星对韩国意味着什么?假如三星破产了,韩国会受到什么影响?
  9. 一个U盘安装多个iso引导
  10. 【RAC】RAC相关基础知识