NASM 如何为每个标签分配内存
How is NASM able to allocate so memory per label
本人新手assembly.I有疑问
code: db 1111
如果我们只分配一个字节,代码如何包含这个数字?据我所知,一个字节最多可以包含。 255 号没有了。
还有第二个问题
variable: dw 100
它是如何存储在内存中的?我知道大多数 64 位架构每个 address.How 使用一个字节,一个地址可以指定两个地址吗?(据我所知,在 nasm 中每个字有 16 位,因为它是排列)。
谢谢你,如果这个问题很愚蠢,我很抱歉。
你的问题并不愚蠢,而是涉及一些基本主题:
声明 code: db 1111
可以表示不同的意思:
- 值
1111
可以是十进制或十六进制类型,或其他类型(如八进制)- 使其 无效.
- 值
1111
可以是二进制类型,等于十进制的 15,因此它适合一个字节。这是最有可能接受此声明的方式。
通常类型由前缀(如 0x...
表示 C 中的十六进制)或后缀(如 1111b
和 b
对于二进制),但这里不是......我不知道你是否可以 set/change NASM 中的默认编号格式,但没有词缀,表达式是 无效/不适合一个字节。
声明variable: dw 100
确实在内存中保留了两个BYTE。第一个字节存储在您访问并用作参考的地址处,WORD 的第二个字节存储在地址+1 处。所以一个WORD确实确实占用了2个BYTE。 16 位值的哪个 8 位部分存储在哪个位置由一个称为 Endianness 的概念设置。在 x86/x64 计算机上,顺序为 Little-endian。
本人新手assembly.I有疑问
code: db 1111
如果我们只分配一个字节,代码如何包含这个数字?据我所知,一个字节最多可以包含。 255 号没有了。 还有第二个问题
variable: dw 100
它是如何存储在内存中的?我知道大多数 64 位架构每个 address.How 使用一个字节,一个地址可以指定两个地址吗?(据我所知,在 nasm 中每个字有 16 位,因为它是排列)。
谢谢你,如果这个问题很愚蠢,我很抱歉。
你的问题并不愚蠢,而是涉及一些基本主题:
声明
code: db 1111
可以表示不同的意思:- 值
1111
可以是十进制或十六进制类型,或其他类型(如八进制)- 使其 无效. - 值
1111
可以是二进制类型,等于十进制的 15,因此它适合一个字节。这是最有可能接受此声明的方式。
通常类型由前缀(如
0x...
表示 C 中的十六进制)或后缀(如1111b
和b
对于二进制),但这里不是......我不知道你是否可以 set/change NASM 中的默认编号格式,但没有词缀,表达式是 无效/不适合一个字节。- 值
声明
variable: dw 100
确实在内存中保留了两个BYTE。第一个字节存储在您访问并用作参考的地址处,WORD 的第二个字节存储在地址+1 处。所以一个WORD确实确实占用了2个BYTE。 16 位值的哪个 8 位部分存储在哪个位置由一个称为 Endianness 的概念设置。在 x86/x64 计算机上,顺序为 Little-endian。