Online: 0x080 (128)
haker.iиfø  — Etyczny hacking_
Spreading knowledge like a virus.

 haker.info Baza wiedzy

Asembler x86/x64 » Instrukcje transferu danych

MOVSX

Składnia rozkazu:
MOVSX/MOVSXD A, B

Instrukcja kopiuje wartość operandu B do operandu A powielając bit znaku na pozostałe bity (wartość rozszerzona z zachowaniem znaku — sign extended value). Operandy A i B są różnego rozmiaru.

Pseudokod:
A = SignExtend(B)

Wpływ instrukcji na rejestr znaczników (flag):

  • brak

Przykładowy kod MASM64 (ml64.exe):

extrn ExitProcess : proc .data var1 db "haker.info", 0 .code Main proc ;do rejestru AL wpisz wartość -2 mov al, -2 ;rozszerzenie bajtu (AL) na słowo (BX) z zachowaniem znaku movsx bx, al ;do rejestru AL wpisz wartość -3 mov al, -3 ;rozszerzenie bajtu (AL) na podwójne słowo (EBX) z zachowaniem znaku movsx ebx, al ;do rejestru AL wpisz wartość -4 mov al, -4 ;rozszerzenie bajtu (AL) na poczwórne słowo (RBX) z zachowaniem znaku movsx rbx, al ;do rejestru AX wpisz wartość -2 mov ax, -2 ;rozszerzenie słowa (AX) na podwójne słowo (ECX) z zachowaniem znaku movsx ecx, ax ;do rejestru AX wpisz wartość -3 mov ax, -3 ;rozszerzenie słowa (AX) na poczwórne słowo (RCX) z zachowaniem znaku movsx rcx, ax ;instrukcja MOVSXD ;do rejestru EAX wpisz wartość -4 mov eax, -4 ;rozszerzenie podwójnego słowa (EAX) na poczwórne słowo (RDX) z zachowaniem znaku movsxd rdx, eax ;zakończ program sub rsp, 8h xor rcx, rcx call ExitProcess Main endp end

Kompilacja przykładowego kodu źródłowego:

ml64.exe prog1.asm /link /entry:Main /subsystem:windows /defaultlib:"kernel32.Lib" /LARGEADDRESSAWARE:NO

Dawid Farbaniec

Wykaz literatury (bibliografia)

  • Advanced Micro Devices Inc., 2017 – AMD64 Architecture Programmer's Manual
  • Intel Corporation, 2019 – Intel 64 and IA-32 Architectures Software Developer's Manual
  • Microsoft Corporation, 2019 – https://docs.microsoft.com/pl-pl/cpp/assembler/masm/masm-for-x64-ml64-exe (dostęp: 28-07-2020)
Wszystkie treści umieszczone na tej witrynie są chronione prawem autorskim. Surowo zabronione jest kopiowanie i rozpowszechnianie zawartości tej witryny bez zgody autora. Wszelkie opublikowane tutaj treści (w tym kody źródłowe i inne) służą wyłącznie celom informacyjnym oraz edukacyjnym. Właściciele tej witryny nie ponoszą odpowiedzialności za ewentualne niezgodne z prawem wykorzystanie zasobów dostępnych w witrynie. Użytkownik tej witryny oświadcza, że z zamieszczonych tutaj danych korzysta na własną odpowiedzialność. Wszelkie znaki towarowe i nazwy zastrzeżone zostały użyte jedynie w celach informacyjnych i należą wyłącznie do ich prawnych właścicieli. Korzystając z zasobów witryny haker.info oświadczasz, że akceptujesz powyższe warunki oraz politykę prywatności.