0

3 つの 32 ビット整数を作成および減算するプログラムを MASM で作成しています。私の問題は、9000から減算すると、が予想されるとき30000に、 になるように見えることです。ソースは次のとおりです。2700021000

TITLE Add and Subtract

; This program adds and subtracts 32-bit integers.

.386
.model flat,stdcall
.stack 4096
ExitProcess PROTO, dwExitCode:DWORD
DumpRegs PROTO

.code
main PROC

    mov eax,50000h          ; EAX = 50000h
    mov ebx,30000h          ; EBX = 30000h
    mov ecx,43h             ; ECX = 43h

    sub eax,10000h          ; EAX = 40000h
    sub ebx,9000h           ; EBX = 21000h
    sub ecx,1h              ; ECX = 42h

    call DumpRegs

    INVOKE ExitProcess,0
main ENDP
END main

DumpRegs の結果は次のとおりです。

予期せぬ結果

示されているように、EBXの値はが期待される00027000場合です。0021000何が起きてる?

4

1 に答える 1

2

16 進数を 10 進数と間違えています。

30000h= 196608d.

9000h= 36864d.

196608d- 36864d= 159744d.

30000h- 9000h= 27000h= 159744d.

于 2013-02-23T10:30:27.730 に答える