这是一种声明变量的方法还是只是一个标签 (Nasm)?

Is that a way to declare a variable or it just a label (Nasm)?

据我所知,当我想保留内存(变量)时,我会执行以下操作:

msg db 'Hello world!',0
num db 10

但是这个呢:

str: db "Welcome to my OS", 0

我的代码(非常简单的引导程序):

org 0x7c00
mov bp, 0x7c00
mov sp, bp 

mov ax, str
call printString

jmp $

printString:
    mov al, [str]
    mov ah, 0eh
    int 10h
  
str db 'W', 0 ; <-- str must to be str:

times 510-($-$$) db 0
dw 0xaa55

: 也是用来声明变量还是那只是一个标签?

因为我用这种方式str:在bios模式下预留内存

这是 MASM/TASM 功能的雏形,NASM 中不存在。基本原理是在使用某些指令时可以在标签名称后省略冒号。

在MASM/TASM中曾经有放置冒号和不放置冒号的区别,但在NASM中没有这种区别。