instrucțiuni de comparație și salturi condiționate
Ciclul de asamblare folosind inline
- Ciclul cu postconditie (echivalent face<>în timp ce)
- Ciclul cu condiție prealabilă (în timp echivalent ()<>)
§ reduce% valoarea registru ECx cu 1;
§ dacă ECX% = 0, pentru a trece de control la următoarea buclă a echipei;
§ dacă% ECx ≠ 0, pentru a controla transferul etichetei.
Scrieți un program pentru a calcula suma numerelor 1 - 10 (desigur, folosind formula pentru suma unei progresii aritmetice, putem rescrie acest cod și fără ciclu - dar asta e doar un exemplu).
instrucțiuni de comparație și salturi condiționate. de transfer necondiționat
comandă în buclă compară implicit registru% ECx cu zero. Este destul de convenabil pentru organizarea de cicluri, dar ciclurile sunt adesea mult mai complexe decât cele care pot fi înregistrate la pomoschiloop. Pe langa am nevoie de o structură echivalentă dacă ()<>. Aici sunt comenzi pentru a executa comparații operanzi arbitrare:
cmp operand_2. operand_1
cmp de comandă efectuează scădere operand_1 - operand_2 și stabilește steagurile. Rezultatul scăderii nu este stocat nicăieri.
Compara, setați un steag - și apoi ce? Și avem o întreagă familie de salt-comandă care transferă controlul la alte echipe. Aceste comenzi sunt numite salt condiționat. Fiecare dintre ele este atribuită o condiție care verifică. sintaxa:
JCC de comandă nu există, în loc este necesar cc pentru a substitui condițiile mnemonice.