1

我正在尝试编写一个 NASM 程序来翻转矩阵并将所有数字相加。

在过去的两个小时里,我一直在试图让增量操作起作用。

我试过

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 链接,请将第二个命令替换为:

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

方括号中的内容不是绝对必要的。

于 2013-03-15T21:11:17.150 回答