Instrucțiuni de asamblare

  • Offshore outsourcing Rusia. outsourcing de software, outsourcing IT. anvision.com
  • Șabloane web gratuite. anvisionwebtemplates.com
  • Compania de web design: anvisionwebdesign.com
  • Compania de gazduire web: anvisionwebhosting.com
  • Serviciul online de dating. just-dating.net
  • Anunturi imobiliare. realestatehawk.net
  • Scripturi de software PHP: softwareguys.net
  • Căutarea de locuri de muncă online. jobsearch4.com
  • Director web designeri: web-page-design.info
  • Directorul firmelor de publicitate: advertisingfinders.net
  • Adresă avocați: attorneysfinders.net
  • Directorii dealeri auto: autodealerfinders.net
  • Dental director: dentistfinders.net
  • Catalogul inspectorilor casnici: inspectionfinders.net
  • Director de fotografi: photographerfinders.net
  • Agenții imobiliari director: realtorfinders.net
  • Directorul firmelor din Seo: seofinders.net
  • Director web de design: webdesignfinders.net
  • Web hosters director. webhostingfinders.net

Instrucțiuni de asamblare







Totul despre acvarii și locuitorii lor

Operații aritmetice - ADD, SUB, MUL, DIV.

Multe opcode fac calcule. Puteți afla multe dintre ele prin numele lor: adăugați (adăugați), sub (substracție - scădere), mul (multiplicați), div (divizare - divizare).

Adăugarea unui opcode are următoarea sintaxă:

adăugați receptor, sursă

Efectuează calculul: receptor = receptor + sursă.

Există și alte forme:

adăugați ecx, dword ptr [104h] / adăugați ecx, [edx]

adăugați dword ptr [401231h], 80

adăugați dword ptr [401231h], edx

Această comandă este foarte simplă. Acesta adaugă valoarea sursei la valoarea receptorului și plasează rezultatul în receptor. Alte echipe de matematica:

sub receptor, sursa (receptor = receptor - sursa)
mul multiplicator, multiplicator (multiplicator = multiplicator * factor)






Div divider (eax = eax / divizor, edx = restul)

Deoarece registrele pot conține numai valori întregi (adică un număr, nu a, cu o virgulă plutitoare), rezultatul împărțirii este împărțit într-un coeficient și un rest. Acum, în funcție de mărimea sursei, coeficientul este stocat în eax, iar restul în edx:

ȘI (logic AND) setează bitul rezultat la 1 dacă ambii biți, bitul sursă și bitul receptor sunt setați la 1.
OR (logică OR) setează bitul rezultat la 1 dacă unul dintre biți, bitul sursă sau bitul receptor este setat la 1.
XOR (NOT) stabilește bitul rezultat la 1 dacă bitul sursă este diferit de bitul receptorului.
NU inversează bitul sursă.

mov ax, 3406d
mov dx, 13EAh
xor ax, dx

ax = 3406 (zecimal), în binar - 0000110101001110.

dx = 13EA (hexazecimal), în binar - 0001001111101010.

Efectuarea unei operații XOR pe acești biți:

Sursă = 0001001111101010 (dx)

Receiver = 0000110101001110 (ax)

Rezultat = 0001111010100101 (valoare nouă în ax)

Noua valoare în secțiune, după executarea comenzii - 0001111010100101 (7845 - în zecimal, 1EA5 - în hexazecimal).

mov ecx, FFFF0000h
nu ecx

FFFF0000 în binar este 1111111111111111110000000000000000
Dacă efectuați o inversare a fiecărui bit, primiți:
00000000000000001111111111111111. În Hexadecimal, acesta este 0000FFFF
Deci, după operația NOT, ecx va conține 0000FFFFh.

Există 2 comenzi foarte simple, DEC și INC. Aceste comenzi măresc sau scad conținutul memoriei sau înregistrează cu unul. Doar pune:

înregistrare inc; registru = registru + 1
dec înregistrează; registru = registru - 1
inc dword ptr [103405]; Valoarea din [103405] va fi mărită cu 1.
dec dword ptr [103405]; Valoarea din [103405] va fi redusă cu 1.

O altă comandă de comparație este testul.

Comanda Test efectuează o operație AND (logică AND) cu două operanzi și, în funcție de rezultat, stabilește sau șterge steagurile corespunzătoare. Rezultatul nu este salvat. Testul este folosit pentru verificarea biților, de exemplu în registru:

test eax, 100b
jnz offset

Comanda jnz va sari daca al treilea bit din dreapta este setat in registrul eax. Foarte des, comanda de test este folosită pentru a verifica dacă registrul este egal cu zero:

test ecx, ecx
jz offset

Comanda jz va efectua tranziția dacă ecx = 0.

Nu face nimic - nop.

Această comandă nu are absolut nimic (o comandă goală). E nevoie doar de spațiu și timp. Folosit pentru a rezerva un loc în segmentul de cod sau organizarea întârzierii programului.

Schimbul de valori este XCHG. Echipa XCHG este de asemenea foarte simplă. Scop: schimbul a două valori între registre sau între registre și memorie:

mov eax. 237h
mov ecx, 978h
xchg eax, ecx
ca urmare:
eax = 978h
ecx = 237h

Acesta este sfârșitul lecției. Sper că acest lucru nu a fost plictisitor. Următoarea lecție vă va spune despre subrutine.







Articole similare

Trimiteți-le prietenilor: