Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 在程序集中定义数据_Assembly - Fatal编程技术网

Assembly 在程序集中定义数据

Assembly 在程序集中定义数据,assembly,Assembly,我有一个简单的程序,它向shell返回一个值: SECTION .data value EQU 10 SECTION .text global main main: mov eax, value ret 这工作正常(当我运行echo$?时显示10)。但我真正想做的是将第二行替换为: value DD 10 我想这应该行得通,但不行吗?它给了我一个无意义的返回值。我假设您使用的是NASM。因此,如果您已将value声明为value DD 10,则应使用: mo

我有一个简单的程序,它向shell返回一个值:

SECTION .data
    value EQU 10
SECTION .text
    global main

main:
    mov eax, value
    ret
这工作正常(当我运行
echo$?
时显示10)。但我真正想做的是将第二行替换为:

value DD 10

我想这应该行得通,但不行吗?它给了我一个无意义的返回值。

我假设您使用的是NASM。因此,如果您已将
value
声明为
value DD 10
,则应使用:

mov eax,[value]
获取
值的值
(即10)。指令
mov eax,value
将为您提供
value
的地址


根据所使用的汇编程序,语法略有不同。在MASM/TASM语法
mov eax中,value
mov eax,[value]
的意思是相同的(它们都得到
value
的值)。

这很奇怪。为什么它们的意思是一样的?谁知道呢。也许他们认为程序员不必使用括号会更容易。当然,在许多情况下您仍然需要它们(例如,
mov-ebx,[esi]
)。