vineri, 1 iunie 2007

Cum sa modifici un bit folosind Opcoduri

Acest indrumar va va arata cum sa modifici bitii in SEEM. Inainte de a citi in continuare, trebuie sa fi citit acest ghid despre motorola opcode. Dupa cum puteti vedea din ghidul "motorola opcode”, putem doar sa citim/scriem bytes, dar nu biti. Pentru a modifica doar bitii doriti, trebuie sa facem niste calcule.

Cred ca cea mai buna cale de a explica este prin exemple. Sa presupunem ca dorim sa facem urmatoarea modificare in SEEM:

optiunea de modificare a memoriei de stocare (descoperit de Yuet)
SEEM 0032-0001 offset 9F bitul 3:
on = Schimbare la memoria telefonului/cardul de memorie direct din lista, aplicatiile java vor fi instalate pe card cand "instalam aplicatii noi"
off = apasa tasta de meniu pentru a avea optiunea "comutare dispozitiv stocare", te va intreba sa selectezi dispozitivul de stocare cand "instalam aplicatii noi"

Pasi:

1. Pentru a citi valoarea offsetului 9F in SEEM 0032-0001, folosim urmatorul opcode:
32*50*1*159*1

2. Valoarea citita este "c8", care este o valoare hex. Ea este200 in baza zece (dec). Vom folosi urmatoarea formula pentru a decoda "200":
200 = bit0 x 1 + bit1 x 2 + bit2 x 4 + bit3 x 8 + bit4 x 16 + bit5 x 32 + bit6 x 64 + bit7 x 128

Valoarea rezultata este:
200 = 0 x 1 + 0 x 2 + 0 x 4 + 1 x 8 + 0 x 16 + 0 x 32 + 1 x 64 + 1 x 128

Deci putem vedea in acest offset, bit 3, 6 si 7 sunt on. In acest examplu, ne dorim sa oprim bitul 3 pentru a activa optiunea " comutare dispozitiv stocare ", deci putem schimba valoarea bitului 3 in 0 in formula. Rezultatul este:
0 x 1 + 0 x 2 + 0 x 4 + 0 x 8 + 0 x 16 + 0 x 32 + 1 x 64 + 1 x 128 = 192

192 este valoarea pe care o vom scrie in offsetul 9F.

3. Scriem valoarea 192 la offsetul 9F in SEEM 0032-0001 folosind urmatorul opcode:
47*50*1*159*1*192

4. Reinitializati telefonul folosind opcode 34, si ati terminat.

0 comentarii: