汇编:Syscall被跳过

时间:2019-03-22 15:58:42

标签: linux assembly x86 newline carriage-return

我这里有以下汇编代码。基本上,我想两次执行sys_write syscall来向stdout写入内容。

section     .text
global      _start

_start:

    ;write hello world
    mov     eax, 4
    mov     ebx, 1
    mov     edx, len_hello_world
    mov     ecx, hello_world
    int     0x80

    ;write my name
    mov    eax, 4
    mov    ebx, 1
    mov    edx, len_my_name
    mov    ecx, my_name
    int    0x80

    ;exit program
    mov     eax, 1    ; sys_exit
    int     0x80

section     .data

    hello_world         db  "Hello, World!", 0xd
    len_hello_world     equ $ - hello_world
    my_name             db  " My name is Moritz!", 0x13
    len_my_name         equ $ - my_name

预期输出:

Hello, World! My name is Moritz!

实际输出:

My name is Moritz!

我的问题是:为什么第一个sys_call会“跳过”(抱歉,对于外行而言,我完全是菜鸟)

0 个答案:

没有答案