Gas .org 与 nasm 中的 ORG 不同吗?

2024-02-19

我使用 gnu 作为简单的启动。是这样的:

.text
.org 0x7c00
start:
    movw $0x7c0, %ax
    movw %ax, %ds
    movw %ax, %es
    leaw greeting_msg, %si
    call prtstr
....

end:
    .fill 510-(end - start), 1, 0
    .word 0xAA55

而输出的十六进制转储是:

○ → hexdump bare.o 
0000000 0000 0000 0000 0000 0000 0000 0000 0000
*
0007c00 c0b8 8e07 8ed8 8dc0 7f36 e87c 0046 02b8
0007c10 bb4f 4115 10cd f883 754f a133 4f01 3e8d
0007c20 7c97 15b9 cd41 8310 4ff8 2275 8b66 9b16

其行为与 nasm 中的 ORG 不同?如果我使用 NASM,它会输出类似以下内容:

 ○ → hexdump test_org
0000000 c031 d88e 14be ac7c c008 0674 0eb4 10cd
0000010 f5eb feeb 6557 636c 6d6f 2065 6f74 4d20
0000020 6361 6e69 6f74 6873 0a0d 0000 0000 0000
0000030 0000 0000 0000 0000 0000 0000 0000 0000

这是怎么回事?谢谢。


没有什么问题,简单.org在气体中不是.org在 NASM 中。.orgGAS 中表示当前位置计数器前进多少,如下所示:

.org expr, fill

其中 fill 是用来填充的内容,如果没有指定则默认为零(更多信息在这里 http://tigcc.ticalc.org/doc/gnuasm.html#SEC112)

.org在 NASM 中表示内存地址该模块将被放置在哪里(从而生成正确的分支和跳转指令)(更多信息在这里 http://www.nasm.us/doc/nasmdoc7.html#section-7.1.1)

我建议您对此类平面二进制文件使用 NASM,这对我来说总是很有魅力。

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

Gas .org 与 nasm 中的 ORG 不同吗? 的相关文章

  • 早期的BIOS怎么能使用CALL呢?

    我纯粹是出于爱好原因 试图理解 PC 中的一些低级代码 我为随机的旧千兆字节 MB 下载了一个过时的 BIOS ROM 映像 https www gigabyte com Motherboard GA 8I845GE775 G rev 10
  • 内联汇编中的内存偏移

    在 A64 汇编器中 有不同的方法来指定地址 base 0 Simple register exclusive Immediate Offset base imm Offset Immediate Offset base Xm LSL im
  • 什么是微编码指令?

    我看过很多参考微编码指令的文献 这些是什么以及为什么使用它们 CPU 读取机器代码并将其解码为内部控制信号 将正确的数据发送到正确的执行单元 大多数指令映射到一个内部操作 并且可以直接解码 例如 在 x86 上 add eax edx只是将
  • 内联汇编 - cdecl 和准备堆栈

    我最近一直在尝试通过使用缓冲区和不同汇编运算符的原始十六进制等效项来实现 C 中的动态函数 为了说明一个简单的跳转 byte buffer new buffer 5 buffer 0xE9 Hex for jump uint buffer
  • 在 DLL 中,函数表的结构如何?

    我一直在研究不明确支持我的操作系统的设备库的实现 特别是 我有一个反汇编的 DLL 以及大量的支持源代码 现在 功能表 导出表是如何构造的 我的理解是 第一个结构 data部分是 RVA 表 接下来是通过索引链接到第一个地址表的字符串表 这
  • 将 C 转换为 MIPS - 嵌套数组

    我正在学习 MIPS 汇编语言 在书中看到了这个例子 对我来说这似乎是不正确的 如果是的话 这将不是我在本书中发现的第一个错误 变量f and g被分配寄存器 s0 and s1分别是数组的基地址A and B are s6 and s7分
  • 我试图在 AAM 指令之后使用 AX 中存储的值将其除以 2,为什么它不适用于 2 位数字输出?

    英语不是我的母语 请原谅输入错误 我将在此处显示的代码是一项作业 我真的需要了解发生了什么事 我在 DosBox 0 74 和 TASM 汇编器中使用 Intel 8086 语法 当我必须除以 2 时 代码的问题在于三角形的面积 注意 程序
  • elf .rel.text 部分中 R_386_32/R_386_PC32 的含义

    为了理解重定位的概念 我编写了一个简单的 chk c 程序 如下所示 1 include
  • 汇编语言中的全局_start是什么?

    这是我的汇编级代码 section text global start start mov eax 4 mov ebx 1 mov ecx mesg mov edx size int 0x80 exit mov eax 1 int 0x80
  • MASM 字符串反转

    好吧 我正在讨论这个问题 可能是一个非常复杂的解决方案 但这是我脑海中浮现的第一件事 我需要编写一个汇编语言程序来反转 源 字符串 而不使用 目标 字符串 临时变量 这是我的尝试 INCLUDE Irvine32 inc data sour
  • 汇编中如何计算负数

    我是汇编新手 我有一个关于如何表示负数的问题 我有三个 DWORDS 变量 比方说 result DWORD 0 i DWORD 3 j DWORD 5 我想计算这个公式 结果 i j 8 但是 当我执行 i j 时 由于符号 结果将是一个
  • 在汇编中显示两位数? [复制]

    这个问题在这里已经有答案了 我对汇编编程完全陌生 在课堂作业的示例中 需要将两个数字相加并显示总和 我发现神秘的是当其是两位数时显示总和 这是我的代码 mov al num1 mov bl num2 add al bl add ax 303
  • 在 REP MOVSW 之前 PUSH CS / POP DS 的目的是什么?

    为什么在下面的代码中我们压入代码段 PUSH CS 然后将其弹出到数据段 POP DS 我将这些行明确指定为 line1 和 line2 请告诉我 MOVSW 在这里是如何工作的 IF HIGHMEMORY PUSH DS MOV BX D
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • 为什么 Solaris 汇编器生成的机器代码与 GNU 汇编器在这里不同?

    我为 amd64 编写了这个小汇编文件 对于这个问题来说 代码的作用并不重要 globl fib fib mov edi ecx xor eax eax jrcxz 1f lea 1 rax ebx 0 add rbx rax xchg r
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • 在linux x86平台上学习ARM所需的工具[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我有一个 x86 linux 机器 在阅读一些关于 ARM 的各种信息时 我很好奇 现在我想花一些时间学
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L

随机推荐

  • R中多个变量的线图

    我有以下格式的输入数据 x y z 0 2 2 4 5 5 3 8 6 8 10 4 6 9 3 15 7 6 10 5 我如何在R中像Excel 如下所示 一样绘制xy散点图 至少有四种方法可以做到这一点 1 此处使用名为 df 的 水平
  • 获取没有函数参数的二叉树的高度

    import java util Scanner public class BinaryTree private int info private BinaryTree left private BinaryTree right priva
  • 在 dplyr 中使用字符串作为过滤器?

    有没有办法在 dplyr 中使用字符串变量作为过滤器参数 例如 filter iris Sepal Length gt 6 将被替换为 string lt Sepal Length gt 6 filter iris string 基本上 我
  • 管理中的 AbstractController::DoubleRenderError

    我正在从事疯狂商务工作 我正在尝试调整 active sale controller 中的几个操作 我有一些条件 如果条件失败 我将重定向到 返回 否则我将继续下一步 我现在面临的问题是我在同一个操作中使用了两次redirected to
  • 无法安装 Visual Studio 2013 更新 5 (RTM); Apache Cordova 工具

    我正在尝试安装 VS2013 更新 5 但它不会安装 因为它被阻止 我必须 通过控制面板卸载旧版本的 Visual Studio Tools for Apache Cordova 多设备混合应用程序 我已经按照要求卸载了它 尽管与 VS20
  • Node js Express 中的环境变量(.env)

    是否可以为所有不同的部署环境 例如开发 生产等 提供一个 env 文件 根据环境 需要加载相应的环境变量文件 是的 您可以使用dotenv https github com motdotla dotenv module例如 env DB H
  • 在没有 JavaScript 的情况下将 HTML 元素与父元素的中间对齐

    我想在元素中间放置一个 水平对齐很容易 当然垂直对齐也可以用JS来完成 但我确信用CSS有更好的方法 有什么窍门呢 附 我需要这个用于具有 HTML5 元素的应用程序 因此我不介意该解决方案是否仅适用于支持画布的浏览器和 IE 7 8 使用
  • 使用 Typescript 时如何更新 Next-auth 中会话回调中的会话类型

    我正在使用打字稿 我的 next auth tsx 文件如下所示 import NextAuth Awaitable Session User from next auth import GithubProvider from next a
  • 如何使用try catch语句抛出错误?

    Utility const readUserUtility id a gt const currentstore store getState const returnedArray currentstore users filter us
  • 使用多个跟踪侦听器

    我有 2 个 WCF 服务 它们是从单个 Windows 主机托管的 我使用跟踪侦听器将数据记录到应用程序日志中 我已将以下代码添加到配置文件中
  • 插入符号训练的公式和非公式结果不同

    我注意到在训练时使用插入符中的公式和非公式方法会产生不同的结果 此外 公式方法所需的时间几乎是非公式方法所需时间的 10 倍 这是预期的吗 gt z lt data table c1 sample 1 1000 1000 replace T
  • 在 TeamCity 中全局禁用 FxCop 错误

    好的 今天还有一个 FxCop 问题 我已经阅读了有关 IdentifiersShouldBeCasedCorrectly 规则的争论 以及它是否应该是 XML 或 Xml 嗯 我是一个 XML 人 并且我想保持这种状态 因此 我做not希
  • 使用集束搜索实现 seq2seq

    我现在正在实施seq2seq基于示例代码的模型tensorflow提供 我想得到一个top 5解码器进行强化学习的输出 然而 他们用注意力解码器实现了翻译模型 所以我应该实现波束搜索来获取top k结果 现在有一部分代码已实现 该代码被添加
  • 无内存屏障的乱序写入:数据争用的唯一可能原因?

    在经历的同时Java 并发实践 作者 Brian Goetz我遇到了以下行 当一个变量被多个线程读取时 就会发生数据竞争 并由至少一个线程写入 但读取和写入不是按发生之前排序 正确同步的程序之一是 没有数据竞争 正确同步的程序表现出顺序 一
  • 这是 Xamarin Forms 中的内存泄漏吗?

    我遇到了一个问题 页面对象一旦被导航离开 就不会被垃圾收集 我整理了一个非常基本的示例 演示了使用 NavigationPage 和 PushAsync 方法时出现的问题 该页面使用弱引用列表显示 活动 页面的数量 public class
  • tar:错误不可恢复:现在退出

    当我解开教义时 rw r r 1 root root 660252 2010 10 16 23 06 Doctrine 1 2 0 tgz 我总是收到此错误消息 root X100e usr local lib Doctrine stabl
  • 何时在带有react-dom的jest单元测试中使用act()

    根据反应单元测试文档 act 要为断言准备组件 请包装代码渲染 它并在 act 调用中执行更新 这使得你的测试 运行起来更接近 React 在浏览器中的工作方式 但测试在这两种情况下都运行得很好 没有 act it Should retur
  • Linux堆栈的动态扩展

    我注意到 Linux 堆栈开始时很小 然后由于递归 推送 vlas 达到大小而导致页面错误而扩展getrlimit RLIMIT STACK 给予或接受 在我的系统上默认为 8MiB 但奇怪的是 如果我通过直接寻址字节来导致页面错误 在限制
  • 如何将 Web 服务绑定到特定 glassfish 端口?

    I have Glassfish 3 1 1 Metro JAX WS stack 在我的域的虚拟服务器中安装多个 http 侦听器 当我部署 EAR 时 Web 应用程序和肥皂服务都绑定到所有可用的 http 侦听器 而我希望它们由不同的
  • Gas .org 与 nasm 中的 ORG 不同吗?

    我使用 gnu 作为简单的启动 是这样的 text org 0x7c00 start movw 0x7c0 ax movw ax ds movw ax es leaw greeting msg si call prtstr end fill