Comanda div

Comanda div

Cum să înveți limba engleză

În timpul nostru, orice persoană ar trebui să cunoască limba engleză. Și mai mult un programator. Deoarece o mulțime de documentație există numai în limba engleză. Un profesionist nu poate aștepta ca cineva să-i traducă documentația. Trebuie să fie capabil să obțină rapid informațiile corecte și să le folosească, indiferent de limba în care se vorbește - în limba engleză sau în limba rusă. Link-uri către cursuri în limba engleză.







Instrucțiunea DIV din Assembler efectuează divizarea fără semn. Utilizarea acestei instrucțiuni este similară cu cea a comenzii MUL. deși, desigur, are unele particularități, deoarece împărțirea nu este înmulțirea)))

Deci, sintaxa comenzii DIV este:

NUMBER poate fi una dintre următoarele:

  • Zona de memorie (MEM)
  • Scopul general al înregistrării (REG)

Această comandă nu funcționează cu registrele segmentului și nu funcționează direct cu numere. Asta este așa

DIV 200; greșit

Și acum algoritmul echipei DIV:

  • Dacă NUMERUL este BYTE, atunci AL = AX / NUMBER
  • Dacă NUMERUL este o WORD, atunci AX = (DX AX) / NUMBER

Dacă ați învățat deja instrucțiunea MUL. atunci nimic special nu este nou pentru tine aici. Ei bine, dacă nu ați studiat, atunci vă voi aminti puțin.

Rețineți că instrucțiunea DIV funcționează fie cu registrul AX, fie cu o pereche de registre DX AX. Asta este, înainte de a executa această comandă, trebuie să scriem în registrul AX sau o pereche de registre DX AX o valoare care trebuie împărțită. Puteți face acest lucru, de exemplu, cu ajutorul comenzii deja cunoscute MOV.







Apoi trebuie să scriem un divizor în zona de memorie sau în registrul general, adică numărul pe care îl vom împărți.

Apoi, efectuăm diviziunea și obțineți rezultatul fie în registrul AL (dacă NUMERUL este un octet), fie în registrul AX (dacă NUM este un cuvânt).

Restul diviziei

După cum înțelegeți, instrucțiunea DIV efectuează diviziunea întreg. În acest caz, restul diviziunii, dacă este cazul, va fi scris:

  • În registrul AN, dacă NUMBER este un octet
  • În registrul DX, dacă NUM este un cuvânt

Nu se schimbă niciun steag. Și dacă se schimbă, atunci nu se spune nimic despre acest lucru în documentație, prin urmare, nu este necesar să se verifice steagurile.

Pur și simplu dacă există îndoieli că divizarea se face fără un rest, trebuie să verificați conținutul registrelor AL sau DX, în funcție de dimensiunea NUMERULUI.

Exemplu de diviziune în Assembler

Deci, de exemplu, avem nevoie de 250 împărțit la 150. Apoi facem acest lucru:

Rețineți că trebuie să folosim comanda MOV de două ori, deoarece comanda DIV nu funcționează direct cu numere, ci numai cu registre de uz general sau cu memorie.

După executarea acestui cod în registrul AL este un rezultat al diviziunii întreg cu numărul 250 150, adică numărul 1 și în AH registru este restul diviziunii - numărul de 100 (64 în hexazecimal).

Acum încercați numărul de 50.000.000 împărțit la 60.000.

Pentru a înregistra un divizor în perechea de registre DX și AX utilizează două instrucțiuni MOV. În exemplul nostru, numărul de registru DX 762 (02FA - în hexazecimal) este înregistrat, și în registru AX - numărul 61568 (F080 - hex). Și dacă îi tratăm ca pe un singur număr (cuvânt dublu), în cazul în care cuvântul ridicat 762 și junior - 61568, va fi 50000000 (2FAF080 - în hexazecimal).

În cele din urmă, ca de obicei, vă voi spune de ce această comandă de asamblare este numită DIV. Aceasta este o abreviere pentru cuvântul englez DIV IDE, care poate fi tradus ca "split".







Articole similare

Trimiteți-le prietenilor: