【发布时间】:2021-10-15 14:40:39
【问题描述】:
据我所知,当我想保留内存(变量)时,我会执行以下操作:
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模式下预留内存。
【问题讨论】:
-
msg、num和str都是标签。我相信 NASM 允许您在某些情况下省略:。 -
NASM 没有“变量”的概念,它只是发出字节(在 progbits 部分中)或保留空间(在 nobits 部分中)并允许在两者之间的任何位置放置标签。
-
str的困惑在于它也是一条 x86 指令。尝试使用另一个未知指令的标签。 -
@MichaelPetch:你是对的,问题正如你所说。谢谢。
标签: variables assembly memory nasm