Tervehdys.
Eikö seuraavan koodinpätkän jälkeen pitäisi AL:ssä olla -6? Debuggerin mukaan (Visual Studio masm) näin onkin. Siis bittimuodossa 11111010. Mutta kun AL:n sisällön muuttaa debuggerissa desimaaliksi luku onkin -15430 ?
INCLUDELIB kernel32.lib ExitProcess PROTO .DATA var QWORD 4 .CODE main PROC XOR RAX, RAX XOR RBX, RBX MOV RAX, 10 MOV RBX, 2 IMUL RBX IMUL RAX, var IMUL RAX, RBX, -3 CALL ExitProcess main ENDP END
RAX = FFFFFFFFFFFFFFFA RBX = 0000000000000002 RCX = 000000915EDDE000 RDX = 0000000000000000 RSI = 0000000000000000 RDI = 0000000000000000 R8 = 000000915EDDE000 R9 = 00007FF60E371005 R10 = 0000000000000000 R11 = 0000000000000000 R12 = 0000000000000000 R13 = 0000000000000000 R14 = 0000000000000000 R15 = 0000000000000000 RIP = 00007FF60E371033 RSP = 000000915EB2FBE8 RBP = 0000000000000000 EFL = 00000284
OV = 0 UP = 0 EI = 1 PL = 1 ZR = 0 AC = 0 PE = 1 CY = 0
Olisiko kuitenkin käynyt jokin virhe debuggerin käytössä. Oikea arvo näkyy tuossa heksamuodossa, ja koodissakin vain lasketaan 2 * (-3).
Niin, en tiedä. Jotain hämärää tässä on sillä kokeilin myös
2 * (-4) ---> -15432
2 * (-5) ---> -15434
2 * (-6) ---> -15436
Jokin logiikka debuggerilla tuntuu olevan mutta ei aukene..
Nyt tässä jää jokseenkin epäselväksi miten tuo "kun AL:n sisällön muuttaa debuggerissa desimaaliksi" käytännössä tapahtuu.
Aihe on jo aika vanha, joten et voi enää vastata siihen.