0

だから基本的に私はアセンブリでハローワールドプログラムを書こうとしています。プログラムは正常に終了しますが、途中で文字列は出力されません。どこにもエラーはありません。どういうわけか間違った文字列を宣言または使用していると思われます。

    .intel_syntax noprefix

.data

msg:
    .ascii "Hello World"

.text

.globl _start

_start:
    mov eax, 4 #call write
    mov ebx, 1 #output into stdout
    mov ecx, msg #what to write
    mov edx, 11 #length of what to write
    int 0x80

    mov eax, 1 #exit
    mov ebx, 0
    int 0x80

私も交換してみました

mov ecx, msg

mov ecx, [msg]

しかし、違いはないようです。

4

1 に答える 1

3

mov ecx, offset msgまたはを使用する必要がありますlea ecx, msg。また、64 ビット システムを使用している場合は、32 ビット コードとしてアセンブルしていることを確認してください。

于 2013-10-15T15:30:45.063 に答える