-4
A
답변
0
솔직히, 난 그냥 this answer했다 및 조립에 번역 레지스터 cx
및 dx
중간 결과를 얻기 위해 사용하는 동안, 합계의 숫자, ax
및 bx
에, 최종 결과는 dx
에 있습니다
mov ax, 12801 ;◄■■ FIRST NUMBER.
mov bx, 2017 ;◄■■ SECOND NUMBER.
l1:
mov cx, ax
and cx, bx
mov dx, ax
xor dx, bx
mov ax, cx
shl ax, 1
mov bx, dx
cmp ax, 0 ;◄■■ IF AX != 0 REPEAT.
jne l1
;RESULT IN DX = 14818
+1
멋지게 복잡합니다. 어때?'mov si, ax; lea dx, [bx + si]'(아무도 말하지 않은 16 비트를 고수한다면). – Jester
+3
나는 여기에 제시된 코드를 최적화하고자하는 불타는 열망을 갖고있다. 그러나 실제로는 최적의 코드를 원한다면'add'를 사용하기 때문에 완전히 어리석은 점만 제외하면! –
아키텍처에 대해 언급하는 것을 잊었습니다. x86의 경우 'LEA'를 사용할 수 있습니다. – Jester
@Jester x86의 경우 –
@Jester 어때?'movd mm0, eax; movd mm0, ecx; paddd mm0, mm1; movd eax, mm0'? – fuz