文档章节

双精度移位指令SHLD,SHRD

我爱睡觉
 我爱睡觉
发布于 2017/06/24 17:37
字数 619
阅读 95
收藏 0

转:http://www.feiesoft.com/asm/05-2-053.html

双精度移位指令

此组指令有:双精度左移SHLD(Shift Left Double)和双精度右移SHRD(Shift Right Double)。它们都是具有三个操作数的指令,其指令的格式如下:

SHLD/SHRD  Reg/Mem, Reg, CL/Imm ;80386+

其中:第一操作数是一个16位/32位的寄存器或存储单元;第二操作数(与前者具有相同位数)一定是寄存器;第三操作数是移动的位数,它可由CL或一个立即数来确定。

在执行SHLD指令时,第一操作数向左移n位,其“空出”的低位由第二操作数的高n位来填补,但第二操作数自己不移动、不改变。

在执行SHRD指令时,第一操作数向右移n位,其“空出”的高位由第二操作数的低n位来填补,但第二操作数自己也不移动、不改变。

SHLD和SHRD指令的移位功能示意图如图5.8所示。

受影响的标志位:CF、OF、PF、SF和ZF(AF无定义)

(a)、SHLD

(b)、SHRD

图5.8 双精度移位指令操作示意图

下面是几个双精度移位的例子及其执行结果。

双精度移位指令

指令操作数的初值

指令执行后的结果

SHLD  AX, BX, 1

(AX)=1234H,(BX)=8765H

(AX)=2469H

SHLD  AX, BX, 3

(AX)=1234H,(BX)=8765H

(AX)=91A4H

SHRD  AX, BX, 2

(AX)=1234H,(BX)=8765H

(AX)=448DH

SHRD  AX, BX, 4

(AX)=1234H,(BX)=8765H

(AX)=5123H

学习和理解双精度移位指令的控件。


SHL/SAL一样:逻辑/算术左移,最高位进到CF,最低位补0;
SHR:逻辑右移,最低位进到CF,最高位补0;
SAR:算术右移,最低位进到CF,最高位不变;
ROL:循环左移,最高位进到CF的同时补到最低位;
ROR:循环右移,最低位进到CF的同时补到最高位;
RCL:带进位循环左移,最高位进到CF的,同时CF值补到最低位;
RCR:带进位循环右移,最低位进到CF的,同时CF值补到最高位;
SHLD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑左移类似,低位移到高位;
SHRD:双精度左移,第二个操作数移位到第一个操作数,第一操作数进到CF,和逻辑由移类似,高位移到低位;



本文转载自:http://blog.csdn.net/zhangmiaoping23/article/details/44649987

我爱睡觉
粉丝 3
博文 2120
码字总数 0
作品 0
南昌
私信 提问
CUDA实践指南(二十五)

指令优化: 对指令执行方式的了解通常允许进行低级别的优化,尤其是在频繁运行的代码(程序中所谓的热点)中尤其有用。 最佳实践表明,在完成所有更高级别的优化之后执行此优化。 算术指令:...

night李
2018/02/28
0
0
NVIDIA GPU架构与原理分析(二)——Fermi 架构 GPU 功能特性

1. Fermi架构GPU概述 上图是 Fermi 架构的 GPU 的核心架构图。第一代Fermi 架构的 GPU 拥有30 亿个晶体管,512 个 CUDA Core。一个 CUDA Core 在一个时钟周期内执行一个线程(或kernel)中的...

club111
2014/11/14
0
0
x64处理器超标量特性初探

这是处理器相关信息 这是初始汇编程序 要测试的指令位于两行注释之间: 初始程序编译后执行耗时为0.85秒 测试1-1:在初始测试指令基础上添加1到3条nop指令 编译后执行耗时为0.85秒 测试1-1:...

safedead
2015/09/20
93
0
彩色转灰度算法 RGB to Gray

一、基础   而对于彩色转灰度,有一个著名的心理学公式: Gray = R0.299 + G0.587 + B0.114 二、整数算法   而实际应用时,希望避免低速的浮点运算,所以需要整数算法。   注意到系数都...

卓尔
2013/03/01
1K
0
CUDA学习(六十七)

数学函数: 参考手册列表及其说明列出了设备代码支持的C / C ++标准库数学函数的所有功能,以及所有固有功能(仅在设备代码中支持) 标准函数: 本节中的功能可用于主机和设备代码。 本节规定...

night李
2018/02/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

mysql-connector-java升级到8.0后保存时间到数据库出现了时差

在一个新项目中用到了新版的mysql jdbc 驱动 <dependency>     <groupId>mysql</groupId>     <artifactId>mysql-connector-java</artifactId>     <version>8.0.18</version> ......

ValSong
今天
5
0
Spring Boot 如何部署到 Linux 中的服务

打包完成后的 Spring Boot 程序如何部署到 Linux 上的服务? 你可以参考官方的有关部署 Spring Boot 为 Linux 服务的文档。 文档链接如下: https://docs.ossez.com/spring-boot-docs/docs/r...

honeymoose
今天
6
0
Spring Boot 2 实战:使用 Spring Boot Admin 监控你的应用

1. 前言 生产上对 Web 应用 的监控是十分必要的。我们可以近乎实时来对应用的健康、性能等其他指标进行监控来及时应对一些突发情况。避免一些故障的发生。对于 Spring Boot 应用来说我们可以...

码农小胖哥
今天
9
0
ZetCode 教程翻译计划正式启动 | ApacheCN

原文:ZetCode 协议:CC BY-NC-SA 4.0 欢迎任何人参与和完善:一个人可以走的很快,但是一群人却可以走的更远。 ApacheCN 学习资源 贡献指南 本项目需要校对,欢迎大家提交 Pull Request。 ...

ApacheCN_飞龙
今天
5
0
CSS定位

CSS定位 relative相对定位 absolute绝对定位 fixed和sticky及zIndex relative相对定位 position特性:css position属性用于指定一个元素在文档中的定位方式。top、right、bottom、left属性则...

studywin
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部