NASM x86 16 位寻址模式[重复]

2024-01-07

我在指向地址并在我的情况下写入字节大小的变量时遇到问题。这给了我错误“错误:无效的有效地址”:

mov byte[AX], byte 0x0

经过一番尝试和错误后,我测试了相同的结果,但使用的是 EAX。这编译得很好:

mov byte[EAX], byte 0x0

我在这里缺少什么?


[AX]是无效的内存操作数规范。

有效的 16 位是 https://en.wikipedia.org/wiki/X86#Addressing_modes:

[constant]  
[BX]  
[SI]  
[DI]  
[BX+constant]  
[BP+constant]  
[SI+constant]  
[DI+constant]  
[BX+SI]  
[BX+DI]  
[BP+SI]  
[BP+DI]  
[BX+SI+constant]  
[BX+DI+constant]  
[BP+SI+constant]  
[BP+DI+constant]  

[BP]在形式上是无效的,但许多汇编器会悄悄地将其转换为[BP+0]。

有关内存操作数编码以及 ModR/M 和 SIB 字节的信息,请参阅 CPU 手册。

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

NASM x86 16 位寻址模式[重复] 的相关文章

  • 从类模板参数为 asm 生成唯一的字符串文字

    我有一个非常特殊的情况 我需要为类模板中声明的变量生成唯一的汇编程序名称 我需要该名称对于类模板的每个实例都是唯一的 并且我需要将其传递给asm关键字 see here https gcc gnu org onlinedocs gcc 12
  • 避免 gcc 函数序言开销?

    我最近遇到了很多 gcc 在 x86 上生成非常糟糕的代码的函数 它们都符合以下模式 if some condition do something really simple and return else something comple
  • 为什么X86中没有NAND、NOR和XNOR指令?

    它们是您可以在计算机上执行的最简单的 指令 之一 它们是我亲自实施的第一个指令 执行 NOT AND x y 会使执行时间和依赖链长度和代码大小加倍 BMI1 引入了 andnot 这是一个有意义的补充 是一个独特的操作 为什么不是这个问题
  • movzbl(%rdi, %rcx, 1), %ecx 在 x86-64 汇编中意味着什么?

    我想我明白 movzbl rdi rcx 1 ecx 意思是 将零扩展字节移至长整型 并表示将 ecx 扩展为 32 位 但我不完全确定语法 rdi rcx 1 指的是什么 我在某处看到该语法指的是 Base Index Scale 但我找
  • 将字段中的位扩展到掩码中所有(重叠+相邻)集位的最快方法?

    假设我有 2 个名为 IN 和 MASK 的二进制输入 实际字段大小可能是 32 到 256 位 具体取决于用于完成任务的指令集 每次调用时两个输入都会改变 Inputs IN 1100010010010100 MASK 000111101
  • 如何在 GCC C++ 中编写多行内联汇编代码?

    这看起来不太友好 asm command 1 command 2 command 3 我真的必须在每一行加上双引号吗 另外 由于多行字符串文字在 GCC 中不起作用 我也无法欺骗它 我总是在互联网上找到一些例子 该人手动插入制表符和换行符而
  • Core i3/5/7 CPU 是否提供测量 IPC 的机制?

    至少 过去十年中的所有英特尔 CPU 都包含一组对各种事件进行计数的性能监视器 最新的 Intel CPU Core i3 i5 和 i7 又名 Nehalem 是否提供了计算每时钟指令 IPC 的机制 如果有 它们是如何使用的 如果可能的
  • PAE(物理地址扩展)如何实现大于4GB的地址空间?

    维基百科文章的摘录物理地址扩展 http en wikipedia org wiki Physical Address Extension x86 处理器硬件架构通过用于选择附加内存的附加地址线进行了增强 因此物理地址大小从 32 位增加到
  • _mm_max_ss 在 clang 和 gcc 之间有不同的行为

    我正在尝试使用 clang 和 gcc 交叉编译一个项目 但在使用时发现一些奇怪的差异 mm max ss e g m128 a mm set ss std numeric limits
  • 在 Intel x86 架构上使用非 AVX 指令移动 xmm 整数寄存器值

    我有以下问题 需要使用 AVX2 以外的任何工具来解决 我有 3 个值存储在 m128i 变量中 不需要第四个值 需要将这些值移动 4 3 5 我需要两个功能 一个用于按这些值进行右逻辑移位 另一个用于左逻辑移位 有谁知道使用 SSE AV
  • 学习 (N)ASM 的最佳资源是什么? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我想学习汇编已经有一段时间了 尽管我之前尝试过几次 但我还没有真正能够超越 Hello world 有
  • 64 位 Windows 汇编器

    我想对 64 位 Windows 程序集进行编程 最好使用 NASM 我在 google 上查了一下 但似乎找不到 64 位 Windows 编译器 有些网站提到了ml64 但它似乎不再包含在VC 中 我尝试过 32 位程序集 但显然它在我
  • 如何在 MacOS 上使用 nasm 进行编译

    我正在尝试在汇编器上编译并链接我的第一个程序 我尝试编译以下代码 include stud io inc global main section text main xor eax eax again PRINT Hello PUTCHAR
  • 使用 ACPI 在 MS-DOS 中关闭计算机

    我在基于 Pentium 的计算机上运行 MS DOS 6 22 主板支持 ACPI 并且想知道是否有一个可以用来关闭计算机的汇编语言例程 或者它是否比那个更难 即主板 具体的 基本上 我想创建一个小程序来从命令行关闭计算机 这是专门为此编
  • 为什么 mov %ax, %ds 汇编+反汇编为 mov %eax,%ds,与原来不一致?

    test S text global start start xor ax ax mov ax ds mov ax ss mov ax es mov ax fs mov ax gs 我通过这样做得到了反汇编代码文件 x86 64 elf g
  • 如何反汇编、修改然后重新组装 Linux 可执行文件?

    无论如何 这可以做到吗 我使用过 objdump 但它不会产生我所知道的任何汇编器都可以接受的汇编输出 我希望能够更改可执行文件中的指令 然后对其进行测试 我认为没有任何可靠的方法可以做到这一点 机器代码格式非常复杂 比汇编文件还要复杂 实
  • x86 程序集 Pushl/popl 不适用于“错误:后缀或操作数无效”

    我是汇编编程的新手 正在努力解决编程基础 http savannah nongnu org projects pgubook 在带有 GNU 汇编器 v2 20 1 的 Ubuntu x86 64 桌面上 我已经能够汇编 链接执行我的代码
  • 如何将 asm 着色器编译为 fxo 文件?

    我有一个已编译的 fxo 着色器 我正在尝试对其进行稍微编辑 仅调整一些常量 使用 fxdis https code google com archive p fxdis d3d1x https code google com archiv
  • 将以下机器语言代码(0x2237FFF1)翻译成MIPS汇编

    到目前为止我已经翻译了这段代码 但我不明白的是如何计算 计算 16 位立即地址的数量 0x2237FFF1 转为二进制 0010 0010 0011 0111 1111 1111 1111 0001 现在我正在读取操作码 001000 并知
  • movsbl指令的作用是什么? [复制]

    这个问题在这里已经有答案了 我在网上搜索过 但找不到明确的示例来理解该指令的作用 因此 如果有人可以举一个例子 这对我来说将会非常有帮助 用符号从字节扩展到长字移动 在Intel语法中 该指令的助记符是MOVSX 当变量类型为 C 时 C

随机推荐

  • 在 Angular 7 中刷新 datatables.net 表数据会保留表首次加载时的旧数据副本

    我正在尝试使用 Angular 7 中的 datatables net 库根据 REST API 请求生成实时报告 如果我对数据库进行数据更新 表中的数据就会更新 但是 如果我触摸表 即重新排序 搜索某些内容 更改页面等 则在数据重新加载
  • 将解析后的 xml 数据存储到 sqlite 中?安卓

    我想将 setListAdapter 显示的数据存储到 sqlite 我该怎么办 请帮我 XML文件http p xr com xml http p xr com xml package com pxr tutorial xmltest i
  • 前面加上“!”到文件第一行的开头

    我有几个文件需要添加 到开头 就在第一行 我仍然需要保留第一行的内容 只需添加一个 作为第一个字符 任何帮助将非常感激 Thanks 编辑 到目前为止我唯一能想到的就是执行以下操作 a Get Content hh Regulars3 cs
  • 通过线程中的处理程序更新主活动中的 UI (Android)

    我尝试在一个类中建立多个连接并更新主屏幕中的多个进度条 但我在尝试在 android 中使用线程时遇到以下错误 代码 05 06 13 13 11 092 错误 ConnectionManager 22854 错误 无法在未调用 Loope
  • APL 中扫描算子的时空复杂度是多少?

    通常scan 左变体和右变体 在空间和时间上都是 O n 不过 APL 似乎 运算符就像scanl但似乎表现不同 因为它是右关联的并且每次都在数组上运行 使其成为 O n 2 例如 nums 10 10 1 7 4 5 10 3 9 6 2
  • 什么时候 os.environ['foo'] 与 os.getenv('foo') 不匹配?

    我有一个小型 Python 应用程序 通过以下方式启动subprocess Popen 它采用环境变量形式的一些参数 我通过将环境结构传递到Popen称呼 然后程序通过读取变量os getenv 或者更确切地说 它过去是这样阅读的 在 Wi
  • iOS 推送通知优先级

    我已设置推送通知并正常工作 但是 有时我会在终端设备上遇到传输延迟 有没有办法可以将推送的 优先级 键设置为 10 以便立即发送推送 我不相信我可以将它与其他键 例如 alert 一起放入字典中 因为苹果的文档说它应该与有效负载分开 你应该
  • 使用 dd/mm/yyyy 访问日期查询返回零

    我的 Access 数据库显示日期DD MM YYYY格式 一行包含日期为07 06 2014 但我的查询显示 未找到 这是我的选择查询 strSql SELECT FROM Tbl WHERE MyDate Me fldFindWhat
  • 采用什么策略来监控后台用户位置?

    我想要在后台跟踪用户位置 目的是当他靠近他的一位朋友时向他发出警报 所以我从CLLocationManager 据我所知 即使用户重新启动 Iphone 或终止应用程序 这也是让应用程序了解位置更新的唯一可靠方法 startMonitori
  • 确定 swf 是否处于“调试”播放器或模式

    有没有办法使用 Flash CS3 AS3 来确定发布的 swf 是在调试播放器中运行还是在 Flash 的调试模式下运行 我知道 Flex 提供了设置不同构建目标 发布 调试 的能力 并且您可以使用类似的东西CONFIG debug fo
  • setApplicationContext(ApplicationContext applicationContext) 从未调用过

    我试图获取 Spring 应用程序上下文 然后调用其方法 getBean beanName 来获取特定的 bean 但出现空指针异常 表明上下文为空 当我在 setApplicationContext 方法中放置一个断点时 我发现这个方法永
  • webpack 和 django 找不到静态文件

    问题是我可以在浏览器上访问应用程序 但不能访问静态资产 js jsx 和图像 我正在使用的技术 django webpack loader 0 2 4 React 0 14 Django 1 8 5 Python 2 7 Django 静态
  • 在无选项卡模式下将一个选项卡打开为浮动窗口

    我看过03 无鼠标驱动开发 作者 Hadi Hariri http vimeo com 98922030并关闭选项卡 总的来说 它工作得很好 但我发现了一个问题 我正在使用 2 个外部显示器 我想在 IntelliJ 中打开一个类进行编辑
  • Microsoft ReportViewer 2012 参考

    我在 WINDIR Assembly 中有 Microsoft ReportViewer WinForms 版本 11 0 0 0 publickeytoken 89845dcd8080cc91 实际文件版本是11 0 3412 0 我安装
  • 是否有一个*非常*轻量级的 .net IDE? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 有谁知道 net 有一个好的轻量级 IDE 吗 很多时候 我打开 VS 并创建一个新项目 只是为了看看某行代码是否可以编译 测试一个快速方
  • 为什么 myInstance = nil 而不是 self.myInstance = nil?

    我为什么要使用 在我的 dealloc 方法中 myInstance release 代替 self myInstance release myInstance nil代替self myInstance nil 虽然我们使用self myI
  • 在 Java 中执行简单异步任务的最佳方法?

    我想异步调用一个与主线程分开执行某些操作的函数 我是 Java 并发方面的新手 所以我问执行这样的操作的最佳方法是什么 for File myFile files MyFileService resize myfile lt this sh
  • 使用 Cache.Add 时,如果键已存在,是否会引发异常,还是会静默失败?

    我到处都读到 如果 Add 方法已经存在 它就会失败 但它会抛出异常还是会默默失败 我正在编写一个多线程 Web 应用程序 它不应该存在 如果我覆盖缓存 将会导致问题 因此我无法使用 Insert 方法 这是我可以做的事情吗 try Htt
  • 使用 Java 的 HttpUrlConnection PATCH 请求

    我正在尝试执行 http PATCH 请求 但总是收到 404 错误 所以可能我的连接设置不正确 URL url new URL MyPath HttpURLConnection conn HttpURLConnection url ope
  • NASM x86 16 位寻址模式[重复]

    这个问题在这里已经有答案了 我在指向地址并在我的情况下写入字节大小的变量时遇到问题 这给了我错误 错误 无效的有效地址 mov byte AX byte 0x0 经过一番尝试和错误后 我测试了相同的结果 但使用的是 EAX 这编译得很好 m