MOV - copy right operand into left operand
Formatul instructiunii este:
MOV dest, sursa
Evalueaza expresia:
(dest):=(sursa)
Lungimea operandului sursa, exprimata ca numar de baiti, trebuie sa fie egala cu lungimea operandului destinatie.
ceea ce revine la a copia continutul zonei de memorie referita prin sursa in zona de memorie referita prin dest.
Formele corecte de utilizare ale instructiunii MOV sunt:
Instructiune | Semnificatie |
MOV rd8,rs8 | Copiaza continutul registrului sursa de un bait rs8 in registrul destinatie de un bait rd8 |
| MOV AL,BH
| | MOV AH,BH
| | MOV AL,BL
| | MOV AH,CH
| MOV rd16,rs16 | Copiaza continutul registrului sursa de un cuvant rs16 in registrul destinatie de un cuvant rd16 |
| MOV AX,BX
| | MOV CX,SI
| | MOV DX,AX
| | MOV BP,SP
| | MOV SI,DI
| | MOV AX,AX
| | MOV SI,AX
| | MOV DI,CX
| MOV rd8,ms8 | Copiaza continutul zonei de memorie sursa de un bait ms8 in registrul destinatie de un bait rd8 |
| MOV AL,x
| | MOV AH,x+7
| | MOV AL,[SI]
| | MOV AH,y[DI]
| MOV rd8,i8 | Copiaza constanta definita imediat pe un bait i8 in registrul destinatie de un bait rd8 |
| MOV AL,0
| | MOV AH,09H
| | MOV AL,4Ch
| | MOV AH,0CH
| MOV rd8,i16 | Copiaza constanta definita imediat pe un cuvant i16 in registrul destinatie de un cuvant rd16 |
| MOV AX,1
| | MOV CX,0
| | MOV DX,-1000
| | MOV BP,0101010101111b
| | MOV SI,0
| | MOV AX,0FFFFh
| | MOV SI,034O ; incarcare constanta octala
| | MOV DI,CX
| MOV md8,i8 | Copiaza constanta definita imediat pe un bait i8 in zona de memorie destinatie definita pe un cuvant md16 |
| MOV x,10
| | MOV x+5,07H
| | MOV x[SI],222
| | MOV [DI],-1
| MOV md16,rs16 | Copiaza continutul redistrului sursa definit pe un cuvant rs16 in zona de memorie destinatie de un cuvant md16 |
| MOV x,AX
| | MOV x+0Ah,BX
| | MOV x[SI],CX
| | MOV [DI],DX
| | MOV alfa,DI
| | MOV x,SP
| | MOV x+8,BP
| | MOV x[BX],BX
| | MOV [DI],DI
| | MOV alfa,SP
| MOV md16,i16 | Copiaza constanta definita imediat pe cuvat i16 in zona de memorie destinatie md16 definita pe cuvat |
| MOV x,10000
| | MOV x+08o,07FABH
| | MOV x[SI],280
| | MOV [DI],-1
| | MOV [BX][DI],-1
| | MOV [BP],-1
| | MOV [SP][DI],-1
| | MOV [BP][DI],-1
| | MOV [SP][SI],-1
| | MOV [BP][SI],-1
| | MOV alfa+0111000B,0
| | MOV [BX],-1
| | MOV [BP],-1
| MOV rseg,rs16 | Copiaza continutul registrului sursa rs16definit pe cuvant in registrul segment rseg CS sau DS sau SS sau ES |
| MOV SS,BX
| | MOV DS,AX
| | MOV ES,DX
| | MOV CS,BX
| MOV rseg,ms16 | Copiaza continutul unei zone de memoriere definita pe un cuvant ms16 in registrul segment rseg CS sau DS sau SS sau ES |
| MOV SS,x[SI]
| | MOV DS,alfa-4
| | MOV ES,[SI]
| | MOV CS,[SI+alfa]
| MOV rd8,op msxx | Copiaza rezultatul returnat de operator privind zona de memorie msxx in registrul destinatie de un bait rd8 |
| MOV AA,TYPE ALFA
| | MOV AH,LENGTH BETA
| | MOV AL,SIZE GAMA
|
Programatorul trebuie sa nu utilizeze incorect instructiunile MOV, folosind operanzi neadecvat ia in tabelul:
Instructiune | Semnificatie |
MOV 17,10 | Numai unul dintre operanzi poate fi constanta imediata, operandul destinatie trebuie sa fie ori un registru ori o zona de memorie |
MOV 117,AX | Numai operandul sursa poate fi constanta imediata, operandul destinatie trebuie sa fie un registru sau o zona de memorie
|
MOV AX,BH | Operandul sursa si operandul destinatie trebuie sa fie de aceeasi lungime; aici operandul destinatie are 2 baiti, iar operandul sursa are un bait |
MOV CH,DX | Operandul sursa si operandul destinatie trebuie sa fie de aceeasi lungime; aici operandul sursa DX are 2 baiti, iar operandul destinatie CH are un bait |
MOV [DI],[SI] | Instructiunea nu poate avea doi operanzi definiti in memorie; daca operandul sursa este referit indirect, trebuie ca celalat operand sa fie un registru
|
MOV [BX],[DI] | Instructiunea nu poate avea doi operanzi definiti in memorie; daca operandul destinatie este referit indirect, operandul sursa poate fi ori un registru ori o constanta imediata
|
MOV 127,31 | Numai operandul sursa poate fi o constanta imediata; operandul destinatie trebuie sa fie o zona de memorie sau un registru
|
MOV AX,CX:[DI] | Registrul CX nu este registru de referire a segmentelor |
MOV DS,CS | Numai un operand poate fi registru segment
|
MOV ES,0AFF0H | Registrul segment nu poate fi initializat cu o constanta imediata
|
MOV SI,[SS] | Registrul segment SS nu poate referi o zona de memorie intr-o expresie de adrtesare
|
Dupa cum se vede din tabel, instructiunea MOV nu pozitioneaza indicatorii de conditie.
Pozitionare
| Overlow flag
| Direction flag
| Interrupt flag
| Trap flag
| Sign flag
| Zero flag
| Aux carry flag
| Parity flag
| Carry flag
|
 
| OF | DF | IF | TF | SF | ZF | AF | PF | CF |
NU | NU | NU | NU | NU | NU | NU | NU | NU |
|