2010-07-18 3 views
3

제곱 레지스터의 값을 제곱은 어렵지 않다 매우 높았다. 단 한 줄의 차이라도 5 점까지 가치가있을 수 있습니다.인텔 8086 조립, 원칙적으로 레지스터

나는이 마이크로 최적화 실감하지만, 다음과 같은 코드가 같은 방법?

mov ax, [var] 
mul ax   // is answer still in DX:AX ? 

내 질문을 표현하는 매우 간단한 방법을 생각을 수행 할 것은 : AX (또는 AL/AH)입니다 8030 어셈블리에서 mulimul 명령에 유효한 매개 변수는 무엇입니까?

+0

코드 서식을 보내 주셔서 감사합니다. GregS. 내 마음을 미끄러 져. –

답변

3

예, mul axax*axdx:ax으로 지정합니다.

1

당신은 DX를 할 수있는 도끼를 사용할 수 있습니다 : AX = AX * AX 그러나이 경우에 당신은 AX에서 가지고 있던 가치를 잃을 것입니다. 그래서이 값을 다시 사용해야 할 때가 있습니다. BX 옵션이 그대로 유지됩니다. 만약 MUL Al 또는 (MUL 아)를 사용하는 경우

또한은 (= AL * AH 또는 AX) 따라서 AX의 값인 경우보다 더 큰 (255)는 때로 믿을 AX = AX AX하지만 AX = AL AL을하지 않을 AX의 곱셈을하는 것은 값의 상위 부분을 완전히 무시하고 덮어 쓰기 때문입니다 (AH 무시).