Comenzi pentru sarituri - stadopedia

Comenzile Jump sunt proiectate pentru a organiza tot felul de cicluri, ramuri, apeluri de subprogram etc. adică, acestea încalcă progresul secvențial al programului. Aceste comenzi scriu o valoare nouă pentru contorul de registre al comenzilor și, prin urmare, determină procesorul să sară la următoarea comandă mai degrabă decât următoarea în ordine și la orice altă comandă din memoria programului. Unele echipe de tranziții preconizează o revenire la punctul în care sa făcut tranziția, alții nu au în vedere acest lucru. Dacă este furnizat un retur, parametrii actuali ai procesorului sunt stocați în teanc. Dacă nu este furnizat niciun retur, parametrii actuali ai procesorului nu sunt salvați.







Comenzile de tranziție fără întoarcere sunt împărțite în două grupuri:

Comenzi de tranziție necondiționate;

comenzi subordonate condiționate.

În desemnările acestor comenzi se utilizează cuvintele Branch (branching) și Jump (jump).

Comenzile de ramură condiționată nu provoacă întotdeauna trecerea, ci numai atunci când sunt îndeplinite condițiile specificate. Ca astfel de condiții, valorile steagurilor din registrul de stare al procesorului (PSW) sunt de obicei. Asta este, condiția de tranziție este rezultatul operațiunii anterioare, schimbând valorile steagurilor. Un total de aceste condiții de tranziție pot fi de la 4 la 16. Câteva exemple de comenzi subordonate condiționate:

tranziție dacă este zero;

tranziție dacă nu este egală cu zero;

dacă există o depășire;







tranziție dacă nu există o depășire;

tranziție dacă este mai mare decât zero;

tranziție dacă este mai mică sau egală cu zero.

Dacă condiția de tranziție este îndeplinită, atunci o nouă valoare este încărcată în contorul de registru al comenzilor. Dacă condiția de tranziție nu este îndeplinită, contorul de instrucțiuni este pur și simplu incrementat, iar procesorul selectează și execută următoarea comandă în ordine.

Mai exact, comanda de comparare (CMP) care precede instrucțiunea ramificată condiționată (sau chiar mai multe instrucțiuni ramificate condiționate) este utilizată pentru a verifica condițiile de tranziție. Dar, de asemenea, steagurile pot fi setate de orice altă comandă, cum ar fi o comandă de transfer de date, orice comandă aritmetică sau logică. Rețineți că steagurile în sine nu modifică comenzile de tranziție în sine, ceea ce face posibilă plasarea mai multor comenzi de tranziție unul după altul.

Utilizarea în comun a mai multor comenzi de salturi condiționate și necondiționate permite procesorului să realizeze algoritmi ramificați de orice complexitate.

Comenzile Jump cu revenirea înapoi la punctul de la care sa făcut tranziția sunt folosite pentru a executa subrutine, adică programe auxiliare. Aceste comenzi sunt numite și comenzi de apel subrutine (numele comun este CALL). Folosirea subrutinelor vă permite să simplificați structura programului principal, să îl faceți mai logic, flexibil, ușor de scris și depanat. În același timp, trebuie să țineți cont de faptul că utilizarea largă a subrutinelor, ca regulă, mărește timpul de execuție al programului.

Comenzile de întrerupere sunt, în multe cazuri, mai convenabile decât comenzile normale de retur. Puteți crea o dată o tabelă de vectori de întrerupere și apoi să o aplicați după cum este necesar. Numărul de întrerupere corespunde numărului de subrutine, adică numărul funcției executate de subrutină. Prin urmare, comenzile de întrerupere sunt mai des incluse în sistemele de instruire a procesorului decât comenzile normale de retur.

Pentru a vă întoarce de la subrutina cauzată de comanda de întrerupere, utilizați comanda return din comanda de întrerupere (IRET sau RTI). Această comandă extrage valoarea contorului de instrucțiuni și registrul de stare a procesorului (PSW) stocat acolo din stivă.







Articole similare

Trimiteți-le prietenilor: