თარიღი
/   ავტორიSCSA

MOV ბრძანება Assembly-ში

 რუბრიკა:  კომპიუტერები და სისტემები

სანამ დავიწყებთ მეხსიერებიდან ან რეგისტრებიდან მნიშვნელობის გამოტანას რა თქმა უნდა ჯერ უნდა შევიტანოთ ეს მნიშვნელობები.

ბრძანება 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

 ტეგები:  assembly ,  MOV ბრძანება

პუბლიკაციის გაზიარება

Facebook
Twitter
LinkedIn
Telegram

მოგეწონათ სტატია ?

გამოიწერეთ ჩვენი სიახლეები

სხვა სტატიები

I agree to Privacy Policy of Scientific Cyber Security Association