You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

x86汇编中$-$$代表什么?OS开发新手的汇编疑问

输入图片描述

汇编中$-$$与section的解惑

1. 关于section(段)的本质

就算你没写.section指令,汇编器(比如NASM这类常用工具)也会自动给你的代码分配默认段。最常见的默认段是.text(代码段,存放执行指令)、.data(数据段,存放已初始化的数据)、.bss(未初始化数据段)。你当前写的代码如果没指定段,会自动归到.text段,$$指向的就是这个默认段的起始地址。

2. $-$$的实际作用

  • $代表汇编器当前处理位置的内存地址
  • $$代表当前代码所在段的起始地址
  • 两者相减$-$$,得到的是从当前段开头到当前行的字节数,这个表达式常用来计算段内某段代码/数据的长度,比如写引导扇区时用来确认代码没超过512字节的限制。

简单示例

假设你用org 0x7c00指定了段起始地址:

org 0x7c00
start:
    mov ax, bx       ; 地址0x7c00
    add ax, cx       ; 地址0x7c02
    mov dx, $-$$     ; dx的值为2,即0x7c02 - 0x7c00的结果

内容的提问来源于stack exchange,提问作者audiotore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 17:50:23