background image

Ograniczenia instrukcji MOV 
 
Instrukcja MOV może przenosić zawartość prawie każdego rejestru do 
dowolnego innego. Jednak prawdopodobnie ze względu na ograniczoną liczbę 
tranzystorów w kostkach układów scalonych 8086 oraz 8088 MOV nie może 
dokonać wszelkich możliwych przeniesień. Poniżej podana jest lista ograniczeń: 
 

1.  MOV nie może przenosić danych z jednej komórki pamięci do innej. 

Innymi słowy instrukcja typu MOV [SI], [BX] jest nielegalna. Oba 
operandy mogą określać dane pamięciowe, ale nie mogą tego robić 
jednocześnie. 

2.  MOV nie może przenosić zawartości jednego rejestru segmentowego do 

innego. Instrukcja typu MOV CS, SS jest nielegalna, mimo iż taka 
instrukcja mogłaby się przydać - po prostu czynność taka nie może być 
wykonana. 

3.  MOV nie może przenosić danych natychmiastowych do rejestru 

segmentowego. Nie możesz napisać MOV CS, OB800H. Taka instrukcja 
byłaby również przydatna, ale niestety jest również niewykonalna. 

4.  MOV nie może przenosić jednej z 8-bitowych polówek rejestru do 

rejestrów 16-bitowych, i odwrotnie. Jeśli będziesz pamiętał o pilnowaniu 
zgodności rozmiarów operandów źródła i przeznaczenia, unikniesz wielu 
różnych kłopotów. 

 
 
Przedstawione ograniczenia oczywiście dotyczą sytuacji całkiem logicznych. 
Nie mówię tu o posunięciach całkowicie bez sensu, jak np. przenoszenie 
zawartości rejestru czy pamięci do danych natychmiastowych, przenoszenie 
danych natychmiastowych do danych natychmiastowych, określanie rejestru 
ogólnego przeznaczenia jako przechowującego adres segmentu, czy też 
określanie rejestru segmentowego jako zawierającego przesunięcie adresu. Na 
rysunku 6.3 przedstawiono rozmaite niedopuszczalne warianty instrukcji MOV 
ilustrujące podane ograniczenia, a także sytuacje nonsensowne.