Ezt hogy lehetne működésre bírni? (assembly) mov eax, 0; mov al, int_tipusu_tomb[eax]; Az al kapja meg az int típusú tömb 0. elemét. A 2. sornál operand size confict-ot ír.
hopp, csak most látom hogy minden a címbe került.
mov eax, 0;
mov al, int_tipusu_tomb[eax];
Az al kapja meg az int típusú tömb 0. elemét. A 2. sornál operand size confict-ot ír.
Az AL regiszter csak 8 bitet tud tárolni, ezért ha a tömb elemei 16, 32 vagy 64 bitesek akkor azok nem fognak elférni benne. Ha mindenképpen csak az adott tömbelem első 8 bitjét akarod és nem az egész számot akkor használhatod a következőt (vagy hasonlót):
MOV AL, BYTE PTR int_tipusu_tomb[EAX];
A MOV EAX,0 helyett pedig használd a XOR EAX,EAX utasítást a nullázásra. Gyorsabb és rövidebb a lefordított gépi kódja is.
És ez miért nem működik sehogy sem? A ciklus változó után teljesen rossz az érték.
xor eax,eax;
xor ebx,ebx;
xor ecx,ecx;
mov eax,t[ebx];
add ecx,eax;
inc ebx;
mov eax,t[ebx];
add ecx,eax;
mov ide,ecx;
Ellenőrizd, hogy a problémásnak tűnő eljárásban/ciklusban alkalmazott adatméretet/adattípus azonos-e a kiíratás helyén alkalmazott adatmérettel/adattípussal (8,16,32,64 bites)!
Nagyon valószínű, hogy a két helyen eltérő adatméretet használsz.
(nem írtad milyen fordítót használsz, de javaslom, hogy kapcsold be a "verbose" módot, sokat segíthet a hibakeresésben)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!