80x86 中 SHL 和 SAL 的区别

2023-12-10

我已经学会了如何使用 80x86 汇编器,因此在按位移位操作中,我遇到了 SAL 和 SHL 使用的问题。我的意思是代码行之间的区别如下:

MOV X, 0AAH
SAL X, 4

MOV X, 0AAH
SHL X, 4

什么时候应该使用SHL,什么时候应该使用SAL?它们有什么区别呢?


根据this, 他们是一样的:

算术左移(SAL)和逻辑左移(SHL) 指令执行相同的操作;他们移动位 目标操作数向左(向更高有效位 地点)。对于每个移位计数,最高有效位 目标操作数被移入 CF 标志,并且最少 有效位被清除(参见 Intel®64 和 IA-32 中的图 7-7 架构软件开发人员手册,第 1 卷)。

两者可能只是为了完整性而包含在内,因为is右移的区别。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

80x86 中 SHL 和 SAL 的区别 的相关文章

  • AVX-512 指令编码 - {er} 含义

    在 Intel x86 指令集参考中 有许多 AVX 512 指令在指令中具有可选的 er 例如 VADDPD 的一种形式定义为 EVEX NDS 512 66 0F W1 58 r VADDPD zmm1 k1 z zmm2 zmm3 m
  • 如何仅使用单个数组在 JavaScript 中模拟调用堆栈

    我正在看维基百科页面 https en wikipedia org wiki Call stack在调用堆栈上 并尝试理解这个图像 据我所知 哈哈 const memory memory 0 3 top of stack pointer m
  • 是否可以在Linux上将C转换为asm而不链接libc?

    测试平台为Linux 32位 但也欢迎 Windows 32 位上的某些解决方案 这是一个c代码片段 int a 0 printf d n a 如果我使用 gcc 生成汇编代码 gcc S test c 然后我会得到 movl 0 28 e
  • 如何使用 Bochs 运行汇编代码?

    我想使用 Bochs 作为 8086 模拟器 是否有捷径可寻 我想要的是类似 emu8086 的东西 http www emu8086 com http www emu8086 com 如果程序的初始部分适合 512 字节 并且您不介意将自
  • 在 x86 汇编中将 64 位常量移至内存

    我正在使用 Intel x64 程序集 NASM 编译器 尝试将 0x4000000000000000 常量移至内存 该常量在 ieee 754 标准双精度中应等于 2 0 我正在使用的代码是 define two 0x4000000000
  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 添加冗余赋值可以在未经优化的情况下编译时加快代码速度

    我发现一个有趣的现象 include
  • 使用按位运算符相乘

    我想知道如何使用按位运算符将一系列二进制位相乘 但是 我有兴趣这样做来查找二进制值的十进制小数值 这是我正在尝试做的一个例子 假设 1010010 我想使用每个单独的位 以便将其计算为 1 2 1 0 2 2 1 2 3 0 2 4 虽然我
  • 使用 Gas 生成与位置无关的代码 (-fPIC)

    我尝试在 x86 64 上创建共享库但失败 问题归结为以下代码 请不要介意 它没有多大意义 section data newline ascii n section text globl write newline type write n
  • 如何在 GCC C++ 中编写多行内联汇编代码?

    这看起来不太友好 asm command 1 command 2 command 3 我真的必须在每一行加上双引号吗 另外 由于多行字符串文字在 GCC 中不起作用 我也无法欺骗它 我总是在互联网上找到一些例子 该人手动插入制表符和换行符而
  • 从 DX:AX 寄存器转移到单个 32 位寄存器

    我在添加 16 位乘法的乘积时遇到问题 我想将一年 例如 2015 年 乘以 365 为此 我 mov dx 0 to clear the register mov ax cx cx holds the year such as 2015
  • 在 x86 程序集中打印寄存器值的简单方法

    我需要在 8086 Assembly 中编写一个程序 接收来自用户的数据 进行一些数学计算并在屏幕上打印答案 我已经编写了程序的所有部分并且一切正常 但我不知道如何打印号码显示到屏幕上 在我所有计算结束时 答案是 AX 它被视为无符号 16
  • 从c调用汇编函数

    我试图从 c 调用汇编函数 但我不断收到错误 text globl integrate type integrate function integrate push ebp mov esp ebp mov 0 edi start loop
  • 16 位模式下的操作数大小前缀

    我试图理解 GAS 的行为 code16 从手册上看 在16位部分 对于32位操作数或指令 会产生66H操作数覆盖前缀用于指令编码 这是否意味着 code16 movw eax ebx 这种模式合法吗 那么代码不能在16位处理器上运行吗 这
  • 68000 汇编语言 - CMPI.B

    What are the contents of the CCR and D3 after the following instructions sequence executes Perform the calculation by ha
  • 字节数组的快速位移 - CMAC 子键

    我需要尽可能快地实现 16 字节数组的左移JavaCard 我尝试了这段代码 private static final void rotateLeft final byte output final byte input short car
  • 将以下机器语言代码(0x2237FFF1)翻译成MIPS汇编

    到目前为止我已经翻译了这段代码 但我不明白的是如何计算 计算 16 位立即地址的数量 0x2237FFF1 转为二进制 0010 0010 0011 0111 1111 1111 1111 0001 现在我正在读取操作码 001000 并知
  • 在 qemu 中将扇区加载到 RAM

    我编写了一个简单的程序 将扇区 扇区编号 2 加载到 RAM 但什么也没打印 首先 我尝试了以下引导扇区代码 org 0x7c00 mov ax 0x1000 ES BX 1000 0000 mov es ax mov bx 0x00 Lo
  • NASM:如何正确访问SSD驱动器?

    我需要使用 NASM 16 位代码访问 SSD 驱动器 访问普通硬盘时 需要设置寄存器AX DX CX来选择柱面 磁道 扇区 扇区数 AH 选择读扇区功能 DL 选择驱动器号 CH 选择气缸 DH 选择磁盘上的一侧 CL 选择步入正轨的部门
  • 微软怎么能说WinAPI中一个字的大小是16位呢?

    我刚刚开始学习WinAPI 在MSDN中 对WORD数据类型提供了以下解释 WORD16 位无符号整数 范围是十进制 0 到 65535 该类型在 WinDef h 中声明如下 typedef 无符号短 WORD 很简单 而且它与我一直在使

随机推荐

  • Ubuntu 无法找到包

    我已经在ubuntu系统上安装了openstack的devstack 我正在尝试安装quantum lbaas agent 我收到错误Unable to locate package 我尝试更改中的源列表 etc apt sources l
  • 如何根据公钥的指数和模数创建 SeckeyRef 并在 SecKeyEncrypt 方法中使用

    任何人请帮忙创建SecKeyRef从指数和模数是我的Public exponent 010001 and Public Modulus 008903fb6d15f352ed3b45add3216f632f7139954a5631337aba
  • Python Pandas:计算数据帧每行中特定值的频率?

    我有一个数据框 df domain country out1 out2 out3 oranjeslag nl NL 1 0 NaN pietervaartjes nl NL 1 1 0 andreaputting com au AU NaN
  • 在多维数组中搜索键并返回其路径

    我需要在数组中找到特定的键 然后返回它的值和找到该键的路径 例子 array array fs1 gt array id1 gt 0 foo gt 1 fs2 gt array id2 gt 1 foo2 gt 2 fs3 gt array
  • (Android) 为什么 invalidate() 不会立即更新我的按钮?

    我已经阅读了几个关于使用 invalidate 以便立即更新视图的论坛和示例 但我仍然不明白为什么我所做的不起作用 下面的代码使用由 红色 蓝色 绿色 和 黄色 定义的图像按钮 我在每次尝试更改按钮外观之间设置了 1 秒的延迟 请有人告诉我
  • 使用 ListView:如何添加标题视图?

    我在看列表视图 API我看到了这个方法 addHeaderView 视图 v 我想做的是在列表上方有一个布局 这可能吗 我尝试做类似的事情 EditText et new EditText this et setLayoutParams n
  • 附加具有不同列名称的数据框 - Pandas

    我有 3 个数据框 可以从下面所示的代码生成 df1 pd DataFrame person id 1 2 3 gender Male Female Not disclosed ethn Chinese Indian European df
  • 集群中节点不健康

    集群上的节点处于不健康状态的原因有哪些 根据我有限的理解 当给定节点上的 HDFS 利用率超过阈值时 通常会发生这种情况 此阈值是使用 max disk utilization per disk percentage 属性定义的 我有时观察
  • 为什么我的标头未在重定向时设置?

    我有一个express路线 我设置了一个header and a cookie然后我重定向 router get callback async req res gt res cookie token token maxAge COOKIE
  • CSS动画在元素隐藏时暂停

    我正在努力向我正在从事的项目中的按钮添加点击 触摸动画 并且遇到了一个关于显示和隐藏元素的动画按钮的令人沮丧的问题 该项目是一个单页移动网络应用程序 上面有一些按钮 我正在使用 jQuery 在按下按钮时在按钮上设置 css 关键帧动画 该
  • CSS 变换倾斜[重复]

    这个问题在这里已经有答案了 有谁知道如何实现这样的倾斜 使用 CSS 的新转换属性 正如你所看到的 我正在尝试倾斜两个角 有人知道这是否可能吗 red box background color red transform perspecti
  • Bootstrap 模态在文档加载时可见

    我有一个引导模型工作正常 除了在文档加载时它是可见的 而且我不知道如何使初始状态不可见 a href myModal class btn Launch demo modal a div class modal div class modal
  • 在同一视图方法中在渲染器之间切换的简单方法

    我这样设置我的功能 view config route name route name permissions permissions renderer r mako def r request stuff goes here 现在 我想添
  • 从 java 代码在 MAC OS 上运行 .pkg

    我正在尝试从我的 java 代码运行 mpkg 应用程序 public void runNewPkg try String command sudo installer pkg Snip mpkg target Applications P
  • 在 C 中将浮点数打印为整数并将整数打印为浮点数时出现奇怪的输出[重复]

    这个问题在这里已经有答案了 下面的代码没有显示预期的输出 这是垃圾值 奇怪的是这些值被交换了 include
  • iOS 内部应用程序分发

    我的客户想要控制哪个设备正在运行应用程序 但还需要将应用程序分发到 100 多个设备 如果有人设法获得 ipa 他不希望他能够在未经授权的设备上运行它 我不确定以下内容 在企业开发计划下 应用程序可以 如果可以的话如何 绑定到设备 UUID
  • 如何在 Unix 中查找文件的大小并将其分配给变量

    我正在编写一个 Unix 脚本 它读取文本文件的大小 如果文件有一定大小 它应该打印文本文件 如果它不是一个else 执行一个循环并继续该过程 我正在使用以下命令来查找该文本文件的大小 ls l filepath filename lst
  • 使用 RAISERROR 终止 SQL 语句

    SQL 2005 raiserror 是否可以终止存储过程 例如 在大型系统中 我们得到了一个不希望输入到特定列中的值 在更新触发器中 如果您编写 如果存在 从插入中选择 其中 testcol 7 开始 raiseerror 我的自定义错误
  • Chart.js 画布调整大小

    In Android WebView HTML5 画布错误 我发布了一个有关使用 Graph js 库绘制图表的问题 我现在遇到的问题是 如果我多次调用该函数来绘制图形 则画布每次都会调整大小 每次将图形重新绘制到同一画布时 其大小也会发生
  • 80x86 中 SHL 和 SAL 的区别

    我已经学会了如何使用 80x86 汇编器 因此在按位移位操作中 我遇到了 SAL 和 SHL 使用的问题 我的意思是代码行之间的区别如下 MOV X 0AAH SAL X 4 MOV X 0AAH SHL X 4 什么时候应该使用SHL 什