Înainte de a vă spune despre limba de asamblare, vă voi spune cum este structurată memoria pe sistemele Win32. Programarea în asamblare fără să știe cum memoria sistemului este lipsită de sens. Cel mai important avantaj al asamblorului este interacțiunea cu memoria.
Un pic de istorie.
Rețineți că această explicație pentru programele pe 16 biți, despre programe pe 32 de biți, voi vorbi mai târziu, (dar nu treceți peste această parte, este important să înțelegeți ce este capacitatea pe 32 de biți).
Tabelul de mai sus ilustrează memoria partajată, împărțită în segmente de 64kb. Aici un maxim de 65536 segmente. Luați acum unul dintre segmente:
De exemplu: 0030: 4012 (toate hexazecimale)
- Codul CS - Segment
- DS - Segment de date
- SS - Segment de stivă
- ES - Segment suplimentar
- FS - Segment universal
- GS - segment universal
Acum pentru Win32.
În programarea pe 16 biți segmente sunt necesare. Din fericire, această problemă este rezolvată în Windows pe 32 de biți (95 și mai sus). Aveți în continuare segmente, dar nu trebuie să le îngrijiți, deoarece acestea nu mai sunt 64kb (ca în 16 biți), dar 4GB. Windows probabil chiar "se blochează" dacă încercați să schimbați unul dintre registrele segmentului. Acest lucru se numește un model de memorie plat (plat). Aici există numai compensări și ele sunt acum 32 de biți (în intervalul de la 0 la 4 294 967 295). Fiecare celulă din memorie este indicată printr-un decalaj. Acesta este, într-adevăr, unul dintre cele mai bune avantaje ale programării pe 32 biți prin programarea pe 16 biți. Deci, acum puteți să uitați de registrele segmentului și să vă concentrați asupra altor registre.
Aici este schema generală a memoriei în Win32.
Alocarea memoriei.
Nu vă relaxați, citiți următoarea lecție.