==================================Outline====================================
기본 명령어
- 증감 명령어 inc, dec
- 부호 변경 neg
- 곱셈 mul, imul
----------------------------------------------------------------------------
증감 명령어 inc, dec
최상위 비트는 부호 비트로 보기 때문에 맨 아래의 연산에서 SF가 1이 된다.
부호 변경 neg
neg는 2의 보수를 취해주는 연산이다.
곱셈 mul, imul
곱셉의 연산은 multiplication의 약자인 ‘mul'이다.
‘mul’ 명령어를 사용하면 accumulator인 eax가 사용되게 된다.
곱하기를 하게 되면 곱셈을 사용한 연산레지스터의 두 배의 용량이 필요하기 때문에 (e)dx를 빌려오게 된다.
1byte 곱셈이기 때문에 AL에 있는 값과 곱하기가 된다. 때문에 dx레지스터를 빌려오지 않고 AH를 사용하여 2byte를 확보하게 된다.
2번을 작성하여 결과 값을 windbg로 확인해보자.
imul은 곱셈 때 양수만 취급한다. mul은 형식이 한가지이지만 imul은 세가지이다.
1. imul source
mul과 동일하다.
2. imul register, source
Opcode가 2byte임을 알 수 있다.
3. register, source, immediate
소스와 상수가 곱해진 값이 레지스터에 입력된다.
imul은 양수만 취급하기 때문에 싸인플래그(SF)가 변하지 않는다.
imul은 확장 레지스터가 없기 때문에 레지스터를 넘어가는 값은 버려진다.
mul보다 add가 클럭 사이클이 적게 소모되기 때문에 곱하는 수가 낮을 경우 add연산을 사용하는 것이 효율적이다.
pdf/127쳐보기
숙제 pdf p/130 exercise 4.3 2번
'Busan IT > Assembly' 카테고리의 다른 글
div 명령어 숙제, 큰 수의 덧셈과 뺄셈, 분기와 순환 (0) | 2015.09.24 |
---|---|
기본 명령어(나눗셈, 나눗셈 연산 준비, 레지스터 확장) (1) | 2015.09.24 |
mov 명령어 (0) | 2015.09.21 |
디버깅, 명령어의 표현과 구조 (0) | 2015.08.21 |
어셈블리어의 구성요소 (0) | 2015.08.20 |