db、mov、字符串文字

db, mov, string literals

message:中的以下说明是否正确?具体来说,因为"Hello, World",一共是12个字节,然而,右操作数有“10”。

我想知道这是否有误。如果不是,为什么它指定 10 作为正确的操作数?我从这里得到这段代码:(http://cs.lmu.edu/~ray/notes/x86assembly/)

还有,为什么在mov rdx,13中指定了13个字节而不是message的实际大小?

    global _start

    section .text
_start:
    ; write(1, message, 13)
    mov     rax, 1            ; system call write is 1
    mov     rdi, 1            ; 1 is stdout
    mov     rsi, message      ; address of string
    mov     rdx, 13           ; number of bytes
    syscall           ; invoke operating system call

    ; exit(0)
    mov eax, 60       ; system call 60 is exit
    xor rdi, rdi      ; exit code 0
    syscall           ; invoke exit
message:
    db  "Hello, World", 10

If not, why does it specify 10 as the right operand?

10是字符串后面的换行符。 ASCII 中的 10 是 LF(换行符),在 Unix/Linux 系统上是换行符。 On other systems it's different.

why does it specify 13 bytes and not the actual size of message?

13 字节是消息的大小(12 字节)加上换行符(1 字节)