სანამ დავიწყებთ მეხსიერებიდან ან რეგისტრებიდან მნიშვნელობის გამოტანას რა თქმა უნდა ჯერ უნდა შევიტანოთ ეს მნიშვნელობები.
ბრძანება MOV კი შედგება სიტყვისგან move (გადატანა), მაგრამ სინამდვილეში არ გადააქვს, არამედ აკოპირებს მნიშვნელობას ცვლადებში.
განვიხილოთ ბრძანება MOV ის რამდენიმე მაგალითი:
MOV AX, [number] ; შევიტანოთ number ცვლადის მნიშვნელობა AX რეგისტრში.
MOV [number], BX ; რეგისტრ BX ს მნიშვნელობა შევიტანოთ ცვლად number ში.
MOV BX. EX ; შევიტანოთ რეგისტრ BX ში EX რეგისტრის მნიშვნელობა.
MOV AL, 1 ; შევიტანოთ რეგისტრ AL ში მნიშვნელობა 1.
MOV DH, CL ; შევიტანოთ CL რეგისტრის მნიშვნელობა რეგისტრ DH ში.
MOV ESI, EDI ; გადავაკოპიროთ EDI ს მნიშვნელობა რეგისტრ ESI ში.
MOV word [number] ; შევინახოთერთი 16 განყოფილებიანი მნიშვნელობა number ცვლადში.
მეხსიერების ერთი მისამართიდან მეორეში მნიშვნელობას პირდაპირ ვერ გადავიტანთ :
MOV [number_one] , [number_two] ; მცდარი პროცედურა!
ამისთვის საჭიროა ის ჯერ რომელიმე რეგისტრში შევინახოთ ხოლო შემდეგ მეორე ნაწილიც
შევიტანოთ იმ რეგისტში:
mov ax, [number_one] ; შევიტანოთ რეგისტრ AX ში number_one ის 16 განყოფილებიანი მნიშვნელობა.
mov [number_two], ах ; და ამის შემდეგ ვაკოპირებთ მეორე მნიშვნელობას რეგისტრა AX ში.
ბრძანება MOV ის ორივე ოპერანდი უნდა იყოს ერთი და იგივე ზომის
MOV AX, BL ; მცდარი პროცედურა!
იმისთვის, რომ გადავაკოპიროთ BL რეგისტრის მნიშვნელობა AX რეგისტრში ჯერ უნდა გავაფართოვოთ AX რეგისტრის დიაპაზონი, გადავაკოპიროთ BX ს მნიშვნელობა AX ში ხოლო შემდეგ AX ში შევიტანოთ მნიშვნელობა 0:
MOV AX, BX ; გადაგვაქვს BX რეგისტრის მნიშვნელობა რეგისტრ AX-ში.
MOV AH, 0 ; შეგვაქვს AH რეგისტრში მნიშვნელობა 0-ის ტოლი.
ალბათ ვერ გაიგეთ რა შუაშია რეგისტრი AH. რეგისტრი EX იყოფა 2 ნაწილად AH და EH , გავიხსენოთ რეგისტების სტატის AX არის 16 ბიტიანი, ხოლო ზედა მაგალითში მოცემული BL არის 8 ბიტიანი. ახლა განვმარტოთ MOV AX, BX. ალბათ უკვე მიხვდით, რომ AX-ში შეგვაქვს BX-ს მნიშვნელობა და ახლა AH-ში იქნება BH მნიშვნელობა, მაგრამ ჩვენ არ ვართ დარწმუნებულები, რომ AH-ს მნიშვნელობა 0-ის ტოლია და ამიტომაც ვწერთ MOV AH, 0; ამგვარად ჩვენ ვაფართოებთ BL-ს 16 ბიტამდე რადგან მისი მეორე ნაწილი 0-ის ტოლია და არანაირი მნიშვნელობა არ გააჩნია.
იგივენაირად შეგვიძლია გადავაკოპიროთ 16 ბიტიანი მნიშვნელობა 32 ბიტიანში.
სურათის სისრულეში მოსაყვანად ჩამოვწერთ ბრძანება MOV-ის შესაძლებელი ფორმატების სრულ სიას:
MOV r/m8,reg8
MOV r / m l 6 , r e g l 6
MOV r/m32,reg32
MOV reg8,r/m8
MOV r e g l 6 , r / m l 6
MOV reg32,r/m32
MOV reg8,imm8
MOV regl6,imml6
MOV reg32,imm32
MOV r/m8,imm8
MOV r/ml6,imml6
MOV r/m32,imm32