2

簡単なプログラムを Intel 構文から AT&T に変換しようとしています (GAS でコンパイルするため)。アプリケーションの大部分を正常に変換しましたが、int(割り込み) でまだエラーが発生します。私の機能は次のようなものです:

printf:
    mov $0x0e, %ah
    mov $0x07, %bl

    nextchar:
       lodsb
       or %al, %al
       jz return
       int 10
       jmp nextchar

    return:
       ret

msg db "Welcome To Track!", 0Ah

しかし、コンパイルすると、次のようになりました。

hello.S: アセンブラー メッセージ:
hello.S:13: エラー: msg db のオペランド サイズが一致しません "Hello, World!",0Ah'int'
hello.S:19: Error: no such instruction:

私は何をする必要がありますか?

4

1 に答える 1

6

ではGAS、定数には$. その行を次のように変更します。

int $10

メッセージは次のようになります。

msg: .byte "Welcome to Track!", 0x0a

またはさらに良い:

msg: .asciiz "Welcome to Track!\n" 
于 2010-05-28T18:18:46.247 に答える