Busan IT/Assembly2015. 9. 22. 17:42

==================================Outline====================================

 기본 명령어

- 증감 명령어 inc, dec

- 부호 변경 neg

- 곱셈 mul, imul

----------------------------------------------------------------------------

증감 명령어 inc, dec


 

최상위 비트는 부호 비트로 보기 때문에 맨 아래의 연산에서 SF1이 된다.


부호 변경 neg


 

neg2의 보수를 취해주는 연산이다.

 

곱셈 mul, imul


곱셉의 연산은 multiplication의 약자인 ‘mul'이다.

 


 

‘mul’ 명령어를 사용하면 accumulatoreax가 사용되게 된다.

 

곱하기를 하게 되면 곱셈을 사용한 연산레지스터의 두 배의 용량이 필요하기 때문에 (e)dx를 빌려오게 된다.

 

 

 

1byte 곱셈이기 때문에 AL에 있는 값과 곱하기가 된다. 때문에 dx레지스터를 빌려오지 않고 AH를 사용하여 2byte를 확보하게 된다.

 



 

2번을 작성하여 결과 값을 windbg로 확인해보자.


 

imul은 곱셈 때 양수만 취급한다. mul은 형식이 한가지이지만 imul은 세가지이다.

 

 

1. imul source

mul과 동일하다.

 

2. imul register, source

Opcode2byte임을 알 수 있다.

 

 

3. register, source, immediate

소스와 상수가 곱해진 값이 레지스터에 입력된다.

imul은 양수만 취급하기 때문에 싸인플래그(SF)가 변하지 않는다.

 

imul은 확장 레지스터가 없기 때문에 레지스터를 넘어가는 값은 버려진다.

 

mul보다 add가 클럭 사이클이 적게 소모되기 때문에 곱하는 수가 낮을 경우 add연산을 사용하는 것이 효율적이다.

 

pdf/127쳐보기

숙제 pdf p/130 exercise 4.3 2

반응형
Posted by newind2000