Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: Assembly: Negatiiviset luvut

Alexis [10.02.2024 17:09:40]

#

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

Metabolix [10.02.2024 17:39:46]

#

Olisiko kuitenkin käynyt jokin virhe debuggerin käytössä. Oikea arvo näkyy tuossa heksamuodossa, ja koodissakin vain lasketaan 2 * (-3).

Alexis [11.02.2024 14:36:27]

#

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..

Grez [11.02.2024 15:43:19]

#

Nyt tässä jää jokseenkin epäselväksi miten tuo "kun AL:n sisällön muuttaa debuggerissa desimaaliksi" käytännössä tapahtuu.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta