【发布时间】:2021-01-14 21:36:49
【问题描述】:
我有以下汇编代码:
section .text
global _start
_start:
mov edx,len2
mov ecx,msg1
mov ebx,1
mov eax,4
int 0x80 ; write(1, msg1, len2)
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg1 db 'Hello '
len1 equ $ - msg1
msg2 db 'world!',0xa
len2 equ $ - msg1
有人告诉我,这段代码应该打印“Hello World!”但我不明白为什么?
当我第一次看到它时,我确信它应该只打印“Hello”。 有人可以帮我理解一下吗?
【问题讨论】:
-
len2被定义为$ - msg1而不是$ - msg2,因此它也包括Hello的长度。 -
@Jester 谢谢!
-
请勿贴代码图片!相反,始终将代码作为文本发布。我对您的问题投了反对票,一旦您edit 您的问题并将您的图片更改为文本,我将撤回反对票。
-
@fuz 我已编辑问题并将代码添加为文本。
-
@none 非常感谢。