如果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;
}
答案 0 :(得分:4)
数据定义db
,dw
,dd
,dq
等接受多个值,它们被连续存储。例如
db 'Y', 'e', 'l', 'l', 'o', 'w', 0
汇编为
59 65 6C 6C 6F 77 00
由于单独指定所有字符很麻烦,因此将符号表示为字符串,两者是等效的:
db "Yellow", 0
请注意,终止的零字节必须在汇编中单独指定(与C相对)。