为什么长度可以直接推送到堆栈,而消息必须复制到寄存器然后推送到堆栈?
为什么字符串被声明为一个字节而11被定义为一个字?
message:db'hello world'
length:dw 11
mov ax, message
push ax
push word [length]
答案 0 :(得分:0)
您应该能够直接执行push message
,但确切的语法通常是汇编程序特定的。您可能需要编写push offset message
。这会将'h'
的地址推到堆栈上。
推送'he'
(类似push word [message]
或push word ptr [message]
),OTOH,可能不是你真正想要的。我认为使用堆栈只传递一个字符串的2个字符是没有充分理由的。传递第一个字符的地址更有意义。