我读过有关汇编语言的书籍,有关说明的章节。我理解正在做什么指令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位
答案 0 :(得分:1)
您需要rsi
中的地址,而不是值。
这就是它与
mov $message, %rsi
但不是
mov $0x1, %rsi
如果要打印数字,首先需要一个例程将数字转换为ASCII字符串(基本上你需要编写一个简单版本的printf
)。