cf ) 레지스터 상식
eax 계산용
ebx 주소
ecx 반복
edx 계산용 서브
mul
곱셉의 경우 곱셈후 결과 값이 자리수가 커질 가능성이 높다. 따라서 자릿수 확장이 필요하다.
위 그림에서 ax 16bit 곱셈은 eax 의 ax 와 edx 의 dx 를 사용해서 32bit 로 표현 한다.
eax, edx 32bit 의 곱셈또한 두개의 레지스터를 사용해서 32 bit로 표현한다.
단 : al 8bit 단위의 곱셈은 ah 가 앞의 숫자를 갖는다.
이는 16bit 컴퓨터의 잔제로 16bit 컴퓨터를 만들때 위와 같이 만들었기 때문에 32bit로 넘오 와서도 똑같은 명령어를 가지고 있는것이다.
속도를 보면 32 bit 가 16bit 나 8bit 보다 빠른것을 알수 있다. 이는 32bit cpu 에서 사용할 경우에 16,8 bit 를 사용할때는 나머지 버스를 막아주는 시간이 걸려서 그렇다.
imul
mul 과 동일함 단 , 여러개의 operand 를 사용가능
ex) imul ax, bx ; ax = ax * bx
imul ax, bx ,2 ; ax = bx * 2
'공부,일 > 어셈블리' 카테고리의 다른 글
Branching and Looping (0) | 2021.09.01 |
---|---|
add & sub LargeNumber (0) | 2021.08.31 |
덧셈 뺄셈 숙제 코드 (0) | 2021.08.26 |
여러가지 어셈블리 명령어 (0) | 2021.08.25 |
어셈블리 변수 선언 , 명령어 구조 (0) | 2021.08.25 |
댓글