我正在尝试编写一个翻转矩阵的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
答案 0 :(得分: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
方括号内的东西并非绝对必要。