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
相关产品推荐
相关产品推荐

