为什么db可以接受超过1个字节?

时间:2020-09-05 19:59:16

标签: c assembly x86

如果db代表 Define Byte (定义字节)并且可以容纳8位(1个字节),为什么我们要在db中使用6个字节的字符串?我知道一个字符只有1个字节,db保留1个字节。

section .data
    text db "Yellow"

db在更高级的语言(与asm相比)中像char一样玩,我们可以增加缓冲区,但是汇编会自动进行吗?

#include <stdio.h>

int main(void)
{
    char c = 'Y';
    char string[7] = "Yellow";
    return 42;
}

1 个答案:

答案 0 :(得分:4)

数据定义dbdwdddq等接受多个值,它们被连续存储。例如

db 'Y', 'e', 'l', 'l', 'o', 'w', 0

汇编为

59 65 6C 6C 6F 77 00

由于单独指定所有字符很麻烦,因此将符号表示为字符串,两者是等效的:

db "Yellow", 0

请注意,终止的零字节必须在汇编中单独指定(与C相对)。