X86 , 80386

곱셈과 , 나눗셈의 경우 값의 변동이 크기 떄문에,
0xFFFFFFFF X 0x2 =
32비트가 넘죠;;;

MOV EAX, 0xFFFF : 하위 32비트
MOV EDX, 0x0 : 상위 32비트
MOV EBX, 10 :10으로 나눌 작정 입니다 ^^
DIV EBX : 계산
EAX 에 0xFFF : 으로 몫이 나오고,
EDX 에 0xF 의 나머지가 남습니다.

기억을 돌려 볼까요?;;
1234 / 10 = 123.4
프로그래밍을 하면 이런 값이 나올꺼라고 예상 합니다.
4321 / 9 = 480 어엇!!... 이건 좀..
소숫점 자리가 너무 복잡해졌고,, 암산 안될 것 같고...
나머지는 1 나오는건 알겠는데, 복잡하다...

그럼 1234 / 10 = 123 이고 나머지는 4
라는 계산을 Div 가 해줍니다.
그리고 부호가 붙은 값을 나눌때는 IDIV 를 씁니다.

반대로 MUL 계산은,
MOV EAX,0xFFFF
MOV EBX,0x10
MUL EBX : EAX 값을 10(EBX)으로 곱합니다.
EAX : 하위 32비트
EDX : 상위 32비트
에 값이 담겨집니다.

그러므로 윈도우즈 계산기가 QWORD 값을 낼 수 있던것이죠 ^^
Posted by Nightly Luna
,
® © Tanny Tales
/ rss