2016-10-07 4 views
-1

num1num2num2 두 개의 숫자에 사용자 입력이 있습니다.서명되지 않은 제품 가져 오기 도움이 필요합니다.

나는이 숫자의 부호없는 제품을 표시해야합니다,하지만 난 mul를 사용할 때,이 제품을 서명 제공합니다

mov eax, [num1] 
mov ebx, [num2] 
mul ebx 

내 입력 num1 = 2 num2 = -2 내가이 번호를 저장하고 -4

출력입니다. 그것이 내가 t을 저장하고있는 방법입니다 경우

num1 resd 1 
num2 resd 1 

기지국 어떤 도움은 매우 확실하지 주시면 감사하겠습니다 그는 -2 값 또는 내가 mul으로 잘못하고있는 것을 가치가 있습니다.

+0

어떻게 C에서 하시겠습니까? –

+1

'mul'은 2 개의 부호없는 값의 부호없는 곱을줍니다. unsigned 값으로 취급 할 때 부호있는 -2 값은'0xFFFFFFFE' (상당히 큰 숫자)로,'edx : eax' 결과는'0x00000001 : 0xFFFFFFFC'가되고, 그 하위 32 비트 결과 부분 인'0xFFFFFFFC'를 부호있는 숫자로 표시합니다 , -4입니다. ... 2 * 2를 원한다면 어떻게 든 "복근"을 먼저해야합니다. 예를 들어,'eax'가 32 비트 값이고, 부호가 있거나 부호가 없거나, 숫자가 아니므로, 여러분이 원하는대로 처리 할 수 ​​있다는 것을 알아 두십시오. 따라서 부호없는 10 진수로 취급되는'0xFFFFFFFC'는'4294967292'이지만 서명 된 것으로 취급됩니다. '-4'. – Ped7g

+0

@MargaretBloom 그래서 그가 물어볼 것입니까? ;) – Ped7g

답변

0

모든 것이 맞았 기 때문에 내 문제는 내 인쇄문에 부호없는 값을 표시하고있었습니다. 나는 % u 대신 % d을 사용하고있었습니다.

도움을 주신 모든 분들께