Programarea în asamblare (masm32) sub ferestre

debugger customizare softice

nbsp Fereastra de sus arată starea registrelor procesorului. Dimensiunea sa nu poate fi schimbată, dar o puteți ascunde cu comanda WR. Puteți să o scoateți din nou folosind aceeași comandă. Sub el este o fereastră de memorie. A treia fereastră din partea de sus este o fereastră de cod care arată fie codul sub formă de informații despre caractere, fie în formă dezasamblată sau mixtă. Înălțimea ferestrei este setată de comanda WC X, unde X este numărul de linii. Puteți să-l ascundeți și să îl afișați din nou cu comanda WC fără parametri. Rețineți că bara de stare vă arată întotdeauna o solicitare când introduceți comenzi. Puteți obține ajutor în legătură cu comanda dând comanda H X, unde X este numele comenzii. Dacă dați comanda H fără parametri, SoftICE afișează informații despre toate comenzile.






nbsp Experimentați cu echipe diferite, nu vă fie frică să stricați ceva. Salvați toate fișierele care nu au fost salvate înainte. Este foarte important să te simți confortabil cu SoftICE, să depășești frica de asta. Știu oameni care, cu o singură mențiune despre el, își mișcă părul, ca și când își aminteau de un coșmar. Cu toate acestea, SoftICE este un instrument foarte puternic, comod și plăcut de programator. Cred că până la sfârșitul cursului o veți iubi atât de mult încât orice mașină fără ea vă va părea inferioară.
nbsp Probabil că te gândești acum cum să salvezi schimbările din setările pe care le-am produs acum? Acesta este absolut modul corect de gândire. Ieșiți din SoftICE apăsând din nou CTRL + D sau F5 și mergeți la directorul unde este instalat SoftICE (sper că deja utilizați FAR?). Acolo găsim fișierul winice.dat. Deschideți-l și căutați linia nbsp Acesta este șirul de inițializare, care specifică setările inițiale ale depanatorului. Iată ce arată această linie pentru mine: nbsp Specificați în setările dvs., pe care le considerați confortabile. Apropo, despre echipa FANTE OFF. Specificați-o obligatoriu, deoarece împiedică apariția debuggerului când apare GPF - General Protected Fault, când sistemul afișează o fereastră de mesaj de tipul:







documentație și literatură

primul program din asamblare

structura generală a programelor de asamblare

nbsp Până vom trece adânc în analiza programului first.asm pe care l-am scris. Cu toate acestea, voi spune că în ansamblu reflectă structura generală a programelor scrise în macroasembler.
Programul nbsp, după cum puteți vedea, este format dintr-un, variabilele globale (secțiunea de date inițializată, linii 7-9), codul actual (linii de secțiune de cod 10-17) și la sfârșitul programului (linia 18) antet (liniile 1-6).
nbsp Prima linie spune asamblorului că este necesar să se permită comenzile procesorului 386. De obicei, este suficient, dar puteți scrie .486 și .586. De fapt, am scris ceva de genul .386 pentru a defini un model de memorie plat în al doilea rând. De asemenea, în al doilea rând, este declarat un acord privind chemarea procedurilor STDCALL. Vom vorbi despre un model de memorie plat în următorul articol, când vom analiza arhitectura procesorului, dar despre acordul STDCALL din articolul "Lucrul cu stivă". Linile 4-5 includ fișiere antet. Aproape întotdeauna în programele scrise folosind pachetul MASM32, fișierul windows.inc trebuie să fie primul care se conectează. Definește constantele, structurile și prototipurile necesare ale unor funcții. De exemplu, constantele MB_OK și NULL (liniile 12 și 15) sunt definite în acest fișier.
nbsp În ceea ce privește liniile 5 și 6, pentru moment va fi de ajuns dacă spun că ele definesc numele funcției MessageBoxA cu numărul de argumente care trebuie transmise și se spune că ar trebui căutat în modulul user32.dll. Cele de mai sus seamănă foarte mult cu ceea ce se întâmplă de fapt, dar vom discuta în detaliu problemele de a apela funcții din DLL mai târziu. În secțiunea de date inițializate (liniile 7-9) sunt declarate două variabile globale ale tipului de octet. Apoi pornește secțiunea de cod (linia 10). Mai jos este punctul de intrare la program (linia 11). În rândurile 12-16, se numește funcția MessageBoxA, drept rezultat care apare pe ecran o casetă de mesaj cu inscripția corespunzătoare. Instrucțiunea ret (linia 17) readuce controlul la sistemul de operare atunci când rulează programul nostru.
nbsp Sfârșitul programului este definit în rândul 18. De fapt, această instrucțiune efectuează o altă lucrare foarte importantă: spune linker-ului că începutul offset este punctul de intrare la program.







Trimiteți-le prietenilor: