Mul comanda

Mul comanda

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 MUL din Asamblare efectuează multiplicarea nesemnată. Pentru a înțelege activitatea comenzii MUL este ceva mai complicat decât a fost pentru echipe. considerată mai devreme. Dar, sper că vă voi ajuta să înțelegeți acest lucru.

Deci, sintaxa comenzii MUL este:

Arată foarte simplu. Cu toate acestea, această simplitate este înșelătoare.

Înainte de a înțelege detaliile acestei instrucțiuni, să vedem ce poate fi NUMER.

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

MUL 200; greșit

Și acum algoritmul pentru comanda MUL:

  • Dacă NUMERUL este un BYTE, atunci AX = AL * NUMBER
  • Dacă NUMERUL este un cuvânt, atunci (DX AX) = AX * NUMBER

Iată o echipă puțin complicată. Deși este dificil cu cei neobișnuiți. Acum vom analiza totul "de pietre" și totul va deveni clar.







Mai întâi, rețineți că instrucțiunea MUL funcționează fie cu registrul AX, fie cu registrul AL. Aceasta este, înainte de a executa această comandă, trebuie să scriem în registrul AX sau în registrul AL o valoare care va participa la multiplicare. Puteți face acest lucru, de exemplu, cu ajutorul comenzii deja cunoscute MOV.

Apoi vom efectua multiplicarea și vom obține rezultatul fie în registrul AX (dacă NUMBER este un octet), fie într-o pereche de registre DX și AX (dacă NUMBER este un cuvânt). În ultimul caz, registrul DX va avea cuvântul cel mai înalt, iar în registrul AX cuvântul inferior.

Și acum, pentru a face totul clar, să aruncăm o privire la câteva exemple - cu un octet și un cuvânt.

Exemplul de multiplicare în Assembler

Deci, de exemplu, trebuie să înmulțim 150 cu 250. Apoi, facem acest lucru:

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

După executarea acestui cod, registrul AX va avea ca rezultat multiplicarea numerelor 150 și 250, adică numărul 37500 (927C în hexazecimal).

Acum încercați să multiplicați 10.000 la 5000.

Ca rezultat, am obținut un număr destul de mare, care, desigur, nu se încadrează în cuvânt. Prin urmare, rezultatul folosește două registre - DX și AX. În exemplul nostru, în registrul DX, va exista un număr de 762 (02FA în hexazecimal), iar în registrul AC există un număr de 61568 (F080 în hexazecimal). Și dacă le considerăm un număr (cuvânt dublu), în cuvântul senior 762 și în cuvântul mai mic - 61568, atunci acesta va fi 50000000 (2FAF080 - în sistemul hexazecimal).

Dacă nu credeți, puteți traduce toate acestea într-un număr binar și verificați.

După executarea instrucțiunii MUL, stările de pavilion ZF, SF, PF, AF nu sunt definite și pot fi oricare.

Și dacă cea mai mare secțiune de rezultate (registrul AH cu octeți înmulțiți sau registrul DX când se multiplică cuvintele) este zero, atunci

În caz contrar, aceste steaguri nu sunt egale sau egale cu 1.

În cele din urmă, ca de obicei, vă voi spune de ce această comandă de asamblare se numește MUL. Aceasta este o abreviere pentru cuvântul englez MUL TIPLY, care poate fi tradus prin "multiplicare, multiplicare".







Articole similare

Trimiteți-le prietenilor: