Online: 0x027 (39)
haker.info  — Etyczny hacking_
Spreading knowledge like a virus.

 haker.info Baza wiedzy

Asembler x86/x64 » Instrukcje transferu danych
CMOVcc
Sk艂adnia rozkazu:
CMOVcc A, B

Instrukcja kopiuje warto艣膰 operandu B do operandu A, ale tylko przy spe艂nieniu okre艣lonego warunku (stan okre艣lonego bitu w rejestrze flag).

Instrukcja Warunek, kt贸ry musi by膰 spe艂niony
CMOVE/CMOVZ ZF == 1
CMOVC/CMOVB/CMOVNAE CF == 1
CMOVNC/CMOVAE/CMOVNB CF == 0
CMOVO OF == 1
CMOVNO OF == 0
CMOVS SF == 1
CMOVNS SF == 0
CMOVP/CMOVPE PF == 1
CMOVNP/CMOVPO PF == 0
CMOVNE/CMOVNZ ZF == 0
CMOVA/CMOVNBE ZF == 0 & CF == 0
CMOVBE/CMOVNA ZF == 1 & CF = 1
CMOVG/CMOVNLE ZF == 0 & SF == OF
CMOVGE/CMOVNL SF == OF
CMOVL/CMOVNGE SF != OF
CMOVLE/CMOVNG ZF == 1 & SF != OF

Pseudokod:
if(condition == true)
A = 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 RAX wpisz warto艣膰 07h mov rax, 07h ;do rejestru RCX te偶 wpisz warto艣膰 07h mov rcx, 07h ;do rejestru RDX wpisz warto艣膰 05h mov rdx, 05h ;por贸wnaj warto艣ci rejestr贸w RAX i RCX cmp rax, rcx ;je艣li r贸wne to flaga ZF = 1 ;zatem poni偶sze kopiowanie si臋 wykonuje ;rejestr RAX przyjmuje warto艣膰 rejestru RDX cmove rax, rdx ;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.