두 개의 큰 숫자를 추가하는 데 도움이 필요합니다. 예를 들어 eax
에 맞지 않습니다. 나는 adc
을 사용해야 만한다는 것을 알고 있지만 좋은 결과를주지는 않습니다.x86 어셈블리에 두 개의 큰 숫자를 추가하십시오.
SYSCALL = 0X80
STDIN = 0
STDOUT = 1
SYSREAD = 3
SYSWRITE = 4
SYSEXIT = 1
.section .data
a1: .long 4000000000
a2: .long 4000000000
equals: .long 0
.section .text
.globl _start
_start:
xor %edx, %edx
movl a1, %eax
movl a2, %ebx
adc a2, %eax
movl %eax, equals
mov $SYSEXIT, %eax
int $SYSCALL
인쇄 결과가 gdb로 표시되는지 확인합니다.
EAX에 맞지 않으면 32 비트'.long'에 맞지 않습니다. 어떤 형식으로 출력물을 얻으려고합니까? –
a1 및 a2는 범위가 지정된 레지스터에 적합하지만 출력은 그렇지 않습니다. 단어 크기에 숫자 두 개를 추가하는 것이 어떻게 든 이루어져야한다는 것을 알고 있습니다. 나는 방법을 모른다. –
큰 숫자에 대해 구조체를 사용하여 marco 어셈블리를 작성하고 배열에 숫자를 저장합니다. D –