Két 8 bites regiszter tartalmát, hogyan lehet egybefűzni, hogy legyen egy 16 bites szám?
Figyelt kérdés
Én így próbáltam:
res1 = ADRESH << 8| ADRESL;
ADRESH és ADRESL a két regiszter.
Valahol a típusokkal lehet gond, mert kipróbáltam konkrét értékekkel és azzal működött. Pl adtam hogy 0b001-et rakja össze 0b010-val, és működött.
2012. jún. 26. 16:16
1/5 anonim válasza:
az ADRESH változónak mi a típusa? Mert ha az is csak 8 bites, akkor a shifteléskor "lecsúsznak" róla a bitek.
2/5 A kérdező kommentje:
unsigned char, és igen, 8 bites az is.
2012. jún. 26. 19:54
3/5 _Jessy_ válasza:
mov [res + 0],ADRESH
mov [res + 1],ADRESL
vagy
mov [res + 1],ADRESH
mov [res + 0],ADRESL
byteordertől függően.
4/5 iostream válasza:
Töltsd bele mindkettőt egy unsigned shortba (vagy bármibe, ami legalább 16 bit, és unsigned), és úgy végezd el a művelet. Persze elvileg elég, ha magát a kifejezést veszed magasabb fokra, tehát pl
(int)(ADRESH) << 8| ADRESL;
5/5 A kérdező kommentje:
köszönöm...
2012. jún. 26. 20:36
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
A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!