목록★☆★ 481
LuvSea
MOV 명령 소스 피연산자로부터 도착점 피연산자로 데이터를 이동시킨다. 데이터 전송 명령으로 알려진 이 명령은 실질적으로 모든 프로그램에서 사용된다. 이 명령의 기본 포멧은 첫 번째 피연산자가 도착점이고 두 번째 피연산자가 소스이다. MOV destination,source 오른쪽에서 왼쪽으로의 데이터 이동은 C++ 이나 자바에서의 할당 문과 유사하다 dest=source; [거의 모든 어셈블리 언어 명령에서, 왼쪽 피연산자는 도착점이고, 오른쪽 피연산자는 소스이다.] MOV는 피연산자의 사용에 있어서 다음의 규칙만을 따르면 된다. 1. 피연산자는 같은 크기여야 한다. 2. 피연산자는 모두 메모리 피연산자일 수 없다. 3. CS, EIP, IP는 도착점 피연산자가 될 수 없다. 4. 즉시값은 세그먼트 레..
mul source mul(부호없는 곱셈) source 자리에는 레지스터나 주소가 올 수 있으며, 즉시값(상수)은 올 수 없다. source에 1바이트가 오면 AL(1바이트)과 곱해서 AX(2바이트)에 저장된다. source에 2바이트가 오면 AX와 곱해서 DX:AX에 저장한다. source가 4바이트라면, EAX와 곱해서 EDX:EAX에 저장된다. (1자리의 숫자 두개를 곱하면 최고 2자리의 숫자가 나올 수 있다. 따라서 1바이트를 2개 곱하면 2바이트의 저장공간이 필요하다.) imul dest, source1 imul dest, source1, source2 imul(부호있는 곱셈) dest source1 source2 Action reg/mem8 AX = AL*source1 reg/mem16 DX:..
1. 나눗셈 연산의 피젯수는(32bit의 나눗셈을 가정) 항상 edx:eax 이다. 2. cdq 는 나눗셈을 위해 피젯수의 사이즈를 확장하는 것이다. 나눗셈연산(div, idiv)은 eax와 edx에 의해서만 이루어집니다. - 피젯수(나눔을 당하는 수) 는 eax, edx에만 들어갈 수 있다는 얘기에요 16 / 5 연산을 한다고 가정해 봅시다. 16과 5 둘다 32bit data라고 가정하구요 그럼 일단 eax에 16을 넣습니다. 그 다음 ebx(다른레지스터나 메모리도 상관없음)에 5를 넣습니다. 그 다음 div 연산을 하면.........될것 같지만 안됩니다.. 일반적으로 제수(여기서는 5)가 32bit이면 피젯수(여기서는 16) 는 64bit가 되어야 32bit 값을 가지는 몫을 얻을 수 있습니다. ..