在程序集中定义数据

时间:2013-12-14 15:34:04

标签: assembly

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

SECTION .data
    value EQU 10
SECTION .text
    global main

main:
    mov eax, value
    ret

这很好用(运行echo $?时显示10)。但我真正想做的是用第二行代替:

value DD 10

我认为应该工作,但不是吗?它给了我废话作为回报值。

1 个答案:

答案 0 :(得分:1)

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

mov eax,[value]

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

根据您使用的汇编程序,语法略有不同。在MASM / TASM中,语法mov eax,valuemov eax,[value]表示相同的内容(它们都获得value的值)。