1

マトリックスをめくってすべての数値を合計する NASM プログラムを作成しようとしています。

インクリメント操作を機能させようとして、過去 2 時間行き詰まりました。

私は試した

mov DX, 0
inc DX

mov DX, DX+1

mov CX, counter    ; a variable initialized to 0
inc CX

などがありますが、何も機能していません。

私を助けてください !

アップデート

具体的には、次のエラーが発生します。

/usr/bin/ld: warning: i386 architecture of input file `a3.o' is incompatible with i386:x86-64 output
a3.o: In function `main':
a3.asm:(.text+0x18): relocation truncated to fit: R_386_16 against `.bss'
collect2: ld returned 1 exit status
4

1 に答える 1

2

これは 32 ビット / 64 ビットの不一致です。

32 ビットの実行可能ファイルの場合、次のようにします。

nasm -f elf32 -o main.o main.asm
ld -m elf_i386 -o main main.o

64 ビットの実行可能ファイルの場合、次のようにします。

nasm -f elf64 -o main.o main.asm
ld [-m elf_x86_64] -o main main.o

gcc とリンクするには、2 番目のコマンドを次のように置き換えます。

gcc -m32 -o main main.o      # 32 bits
gcc [-m64] -o main main.o    # 64 bits

角括弧内のものは厳密には必要ありません。

于 2013-03-15T21:11:17.150 に答える