2016-09-29 16 views
0

私はAssemblyを学んでいます。単なる文字列の代わりに数字を画面に出力できるのはいいことです。私はmov eax, 1を使って文字を印刷する方法を知っていますが、それはDWordsでは機能しません。DWordをアセンブリに印刷するにはどうすればいいですか?

私は64ビットのUbuntuを使用しています。

のMakefile:あなたはDWORDを印刷する方法を求めている

all: 
    nasm -f elf64 asm.s -o asm.o 
    ld asm.o -o asm 
    rm asm.o 
+2

メイクファイルは誰を支援しません。あなたのコードを見ることなく。あなたがすでに書いたことを私たちに示し、あなたが受け取っているエラーとその対処方法を具体的に記述してください。 –

+0

こんにちは、私は実際にコードを持っていない、ちょうどアスキー文字列の代わりにどのように私はdwordを印刷することができたか知りたい。 makefileを投稿して申し訳ありませんが、私はアセンブラと設定を知っておくと便利だと思いました。私の悪い。 –

+3

数字(dword値のような)を文字列に変換し、その文字列をsyscallで印刷する関数/コードを記述する必要があります。より簡単な方法は_GCC_を使用してリンクすることですが、 '_start'の代わりに' main'を使用し、 'printf'のような_C_ライブラリ関数を使って書式付きテキストを出力します。このチュートリアル/コードは、次のように役立ちます。https://www.csee.umbc.edu/portal/help/nasm/sample_64.shtml#printf1_64.asm –

答えて

1

ものを印刷する簡単な方法は、ちょうどprintfを使用されるだろう、それは簡単です:

extern _printf 

SECTION .data 
    msg:  db "Printing a dword: %d",10,0 
    number: dd 123456789 

SECTION .text 
    global start 

start: 
    push dword [number] 
    push dword msg 
    call _printf 
    add esp, 8 
    mov eax, 0 
    ret 
関連する問題