#linux #ubuntu #nasm
#linux #ubuntu #nasm
Вопрос:
Вот моя текущая проблема с NASM. Я продолжаю компилировать этот код прямо здесь, но он просто показывает ошибку:
carry.asm:10: error: instruction not supported in 64-bit mode
Вот мой код для этого:
section .text
global main
main:
mov rsi, 4
mov rcx, 5
clc
add_loop:
mov al, [num1 rsi]
mov al, [num2 rsi]
aaa
pushf
or al, 30h
popf
mov [sum rsi], al
dec rsi
loop add_loop
mov rdx, len
mov rcx, msg
mov rbx, 1
mov rax, 4
int 0x80
mov rdx, 5
mov rcx, sum
mov rbx, 1
mov rax, 4
int 0x80
mov rax, 1
int 0x80
section .data
msg db 'The sum is:', 0xa
len equ $- msg
num1 db '12345'
num2 db '23456'
sum db ' '
Кажется, я не могу понять, что с этим делать.
Комментарии:
1. Вы пробовали компилировать его как 32-разрядный?
2.
aaa
недоступен в 64-разрядном режиме felixcloutier.com/x86/AAA.html . При использовании он должен вызвать исключение.3. @IgnacioVazquez-Abrams У меня есть. Это показывает, что «архитектура i386 входного файла `carry.o’ несовместима с i386: выводом x86-64».
4. @MichaelPetch Что мне делать?
5. Вам пришлось бы закодировать это вручную. Используемый алгоритм находится в разделе » Операции » по ссылке, которую я предоставил в своем первом комментарии.