0

私が書いた簡単なアセンブリ言語プログラムは次のとおりです。

section .text
    global main     ;must be declared for linker (ld)
main:               ;tells linker entry point
    mov edx,len     ;message length
    mov ecx,msg     ;message to write
    mov ebx,1       ;file descriptor (stdout)
    mov eax,4       ;system call number (sys_write)
    int 0x80        ;call kernel

    mov eax,1       ;system call number (sys_exit)
    int 0x80        ;call kernel

section .data
msg db 'Hello, world!', 0xa  ;our dear string
len equ $ - msg              ;length of our dear string

今、私はこの行で何が起こっているのか分かりmsg db 'Hello, world!', 0xa
ません.msg db 'Hello, world!'0xa

0xaいくつかの調査の後、改行が発生することを知りましたが、なぜそこでコンマが使用されているのかわかりませんか?

それはある種の連結か何かですか?c(++) 構文のように:cout << "asdfsdf" << var; またはおそらく Java 構文:System.out.println("Hello,"+var+"!");または python 構文:print 'Yo '+var

助けてください...

4

2 に答える 2

1

コンマ演算子を とともに使用するとdb、連結になります。

改行 ( 0xa) が末尾に連結されているの'Hello, world!'は、文字列を表示するときに、その後に改行を含めることをお勧めするためです。

それがなければ、このコードをループすると、次のようになります。

Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!Hello, world!

しかし、改行で:

Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
Hello, world!
于 2013-07-28T03:29:20.287 に答える