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 的区别 的相关文章

  • 优化算术编码器

    我正在优化名为的 C 库的编码步骤PackJPG http www elektronik htw aalen de packjpg 我使用 Intel VTune 对代码进行了分析 发现当前的瓶颈是 PackJPG 使用的算术编码器中的以下
  • 在 AT&T x86 程序集中查找转义字符

    问题一 我有以下汇编代码 其目的是循环输入字符串 并计算它遇到的转义字符 的数量 globl sprinter data escape string string num escape long 0 num characters long
  • GCC 内联 asm NOP 循环在编译时未展开

    走出我通常的 VC 领域 进入 GCC 的世界 通过 MINGW32 尝试创建一个主要由 NOP 组成的 Windows PE ala for i 0 i lt 1000 i asm nop 但要么我使用了错误的语法 要么编译器正在通过它们
  • 编写一个新的 jit

    我有兴趣用 C 启动我自己的 JIT 项目 我对汇编或编译器设计等并不熟悉 但是 我对生成的机器代码格式非常不熟悉 比如 当一切都说了和完成后 mov 指令实际上是什么样子 是时候调用它了函数指针 那么 创建这样的东西的最佳资源是什么 编辑
  • MAC-1 汇编递归

    如何在 MAC 1 汇编器中调用递归函数 在 C 中你会做类似的事情 int func int num if num 0 return 1 return num func num 1 我知道如何使用调用函数 CALL 以及如何将参数加载到堆
  • 两个 16 位数字相乘 - 为什么结果是 32 位长? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如果我将两个 16 位数字相乘 结果将是 32 位长 但为什么会这样呢 对此有何明确解释 为了我的正确理解 其计算方法是 n 位数字乘以
  • 如果我有一个 8 位值,那么使用 8 位寄存器而不是 16、32 或 64 位寄存器有什么优势吗?

    我读到的 x86 asm 介绍性文献似乎在所有实际场景中都坚持使用 32 位寄存器 eax ebx 等 除了证明 64 位寄存器也存在之外 如果确实提到 16 位寄存器 那也是作为历史注释来解释为什么 32 位寄存器的名称前面有一个 e 编
  • 用于计算三角函数、对数或类似函数的算法。仅限加减法

    我正在修复 Ascota 170 古董机械可编程计算机 它已经开始工作了 现在我正在寻找一种算法来展示其功能 例如计算三角或对数表 或类似的东西 不幸的是 从数学运算来看 计算机只能进行整数的加减法 从 1E12到1E12的55个寄存器 甚
  • 段错误...关于你好世界

    这段代码非常简单 但我在 x86 64 Linux 系统上遇到了段错误 这让我很烦恼 刚开始接触asm 请耐心等待 与 NASM 组装nasm f elf64 test asm 与连接ld o test test o SECTION tex
  • 在LPC2148 ARM处理器上创建中断向量的汇编代码

    我最近刚刚开始使用 LPC2148 ARM 处理器 我试图理解一些有关创建中断向量的汇编代码 这是代码 Runtime Interrupt Vectors Vectors b start reset start ldr pc undf un
  • GCC 从 C++ 程序生成的汇编代码中的 .cfi 和 .LFE 是什么?

    我有以下 C 代码 int factorial int n if n 0 return 1 return n factorial n 1 int main void factorial 5 return 0 当我使用 g S Factori
  • 在汇编中使用 printf 会导致管道传输时输出为空,但可以在终端上使用

    无输出 https stackoverflow com questions 54507957 printf call from assembly do not print to stdout即使在终端上 当输出不包含换行符时也有相同的原因
  • 查找用户输入中的第一个和最后一个大写字母

    输入将从 a z 或 A Z 中获取 并且输入以星号结束 我们需要将输入字符的第一个和最后一个大写字母作为输出 另外 我们应该显示每次输入的内容 注意 我们逐个字符地获取输入 而不是作为字符串 测试用例1 输入 aAbCcP 输出 AP 测
  • 一个好的8086模拟器[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 mac 有没有 8086 模拟器 如果是 哪个是最好的 除非您需要真正的原始 8086 带有自定义操作系统 否则您应该尝试 DosBox
  • 为什么 -1 >> 1 和 0xFFFFFFFF >> 1 会产生不同的结果?

    我正在尝试做一个测试来判断我的电脑是否通过右移十六进制执行算术右移或逻辑右移FFFFFFFF by 1 我知道一个整数 1读作FFFFFFFF十六进制 因为它是二进制补码1 右移 1 by 1结果是FFFFFFFF并显示 PC 执行算术右移
  • 如何从内存加载值而不污染缓存?

    我想读取内存位置而不污染缓存 我正在 X86 Linux 机器上工作 我尝试使用 MOVNTDQA 汇编指令 asm movntdqa source dest n t dest x my var source m my mem 0 memo
  • 使用非规范地址检索内存数据会导致 SIGSEGV 而不是 SIGBUS

    我无法使用以下汇编代码产生 总线错误 这里我使用的内存地址不是合法的 规范地址 那么 我怎样才能触发该错误呢 我在带有 NASM 2 14 02 的 Ubuntu 20 04 LTS 下运行这段代码 但它会导致负载出现 SIGSEGV 分段
  • 汇编PC相对寻址模式

    我正在研究数据路径 并一直在尝试理解分支指令 这就是我的理解 在 MIPS 中 每条指令都是 32 位 这是 4 个字节 所以下一条指令将是四个字节之外 举个例子 我说PC地址是128 我的第一个问题是理解这个128意味着什么 我目前的信念
  • 函数地址不是实际代码地址

    在 Visual Studio 2008 C 中调试一些代码时 我注意到函数指针变量中的地址不是函数本身的实际地址 这是一个外部 C 函数 int main void printaddr const char print debug sho
  • 在汇编中初始化字符串数组

    我想创建一个数据数组 在初始化数据部分保存 5 个字符串 每个字符串正好有 4 个字符 每个字符串都有一些初始数据 例如第一个字符串的 abcd 第二个字符串的 efgh 等等 无效的 0任何字符串都不需要字符 如何用汇编语言初始化字符串数

随机推荐

  • 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 什