将数据推入堆栈,汇编

时间:2013-03-29 15:15:04

标签: variables assembly stack

为什么长度可以直接推送到堆栈,而消息必须复制到寄存器然后推送到堆栈?

为什么字符串被声明为一个字节而11被定义为一个字?

 message:db'hello world'
 length:dw 11


 mov ax, message
 push ax
 push word [length]

1 个答案:

答案 0 :(得分:0)

您应该能够直接执行push message,但确切的语法通常是汇编程序特定的。您可能需要编写push offset message。这会将'h'的地址推到堆栈上。

推送'he'(类似push word [message]push word ptr [message]),OTOH,可能不是你真正想要的。我认为使用堆栈只传递一个字符串的2个字符是没有充分理由的。传递第一个字符的地址更有意义。