[x86 ASSEMBLY] Hogyan tudom elérni az AL,8 bites regiszter alsó 4 bitjét?





Direktben sehogy.
A legkisebb egység a Byte, ami adott 16 bites regiszter alsó vagy felső fele, ahogy írod is.
Bitmanipulációra van lehetőség, de csak byte szinten.
Or, xor, and, not, stb..
Köszönöm a segítséget, így rájöttem, hogyan lehetne megoldani... Posztolom a megoldást, ha más is elakadna ebben... :-)
Elmentem az EAX eredeti tartalmát az EBX regiszterbe, és a verembe is:
XOR EBX, EBX
MOV EBX, EAX
PUSH EAX
Átmásolom az AL tartalmát az előzőlegesen lenullázott EDX-be:
XOR EDX, EDX
MOV DL, AL
Egy ÉS művelettel lenullázom a felső biteket (az alsó 4 bitnek, mivel 1-essel ÉS-elem, megmarad az eredeti értéke):
AND EDX, 00000000000000000000000000001111b
(Biztosra megyek az egész EDX-el...)
Átmásolom az EDX tartalmát (az eredeti AL alsó 4 bitje) az EAX-be:
MOV EAX, EDX
És ezzel már lehet dolgozni.
Amikor a következő 4 bit kell, akkor kiveszem a veremből EAX eredeti értékét, és jobbra shiftelem a biteket néggyel, majd megismétlem a fentebb leírt felső bitek törlését (közben EAX legelső értéke ott van az EBX-ben):
POP EAX
SHR EAX, 4
Ismétlés...





"tudom, semmi praktikai haszna nincs"
Van annak haszna. Nem is kevés.
Kapcsolódó kérdések:
Minden jog fenntartva © 2025, 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!