1

我有以下汇编代码:

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”。有人可以帮我理解这一点吗?

4

1 回答 1

4

正如@Jester 在评论中所说,原因是它len2被定义为$ - msg1$ - msg2包含 Hello 的长度。

于 2021-01-14T21:49:48.687 回答