如何在注册中看到值?

时间:2013-03-23 15:04:05

标签: assembly x86-64 gas

我读过有关汇编语言的书籍,有关说明的章节。我理解正在做什么指令mov,但我不明白如何检查和查看结果。我写了一个问候世界。

.global _start
.data
some_var:
    .long 0x000721
.text
_start:
mov  $1, %rax         # system call 1 is write
mov  $1, %rdi         # file handle 1 is stdout
#  mov  $message, %rsi  # address of string to output
mov $0x1, %rsi
mov  $2, %rdx # number of bytes
syscall               # invoke operating system to do the write
                    # exit(0)
mov  $60, %rax        # system call 60 is exit
xor  %rdi, %rdi       # we want return code 0
syscall               # invoke operating system to exit
message:
.ascii  "Hello, Universe)\n"

但为什么它不起作用。如何查看内存中的值并注册?

os:linux(debian)。英特尔64位

1 个答案:

答案 0 :(得分:1)

您需要rsi中的地址,而不是值。 这就是它与

一起工作的原因
mov  $message, %rsi

但不是

mov $0x1, %rsi

如果要打印数字,首先需要一个例程将数字转换为ASCII字符串(基本上你需要编写一个简单版本的printf)。