سلام خدمت همه ی دوستان.
پس از یه مدت طولانی برگشتم.
و اما ادامه ی ماجرا
حالا میخوام یک سری مبانیه پایه که لازم هست رو بگم.
MOV R8W, 1234[8*RAX+RCX]
کد بالا رو در نظر بگیرین.این کد عددی که تو آدرس ( RCX+1234+(8*RAX قرار داره توی R8W قرار میده.مشابه این دستور رو به شکل های زیر هم میشه نوشت.
MOV ECX, dword ptr table[RBX][RDI]
MOV ECX, dword ptr table[RDI][RBX]
MOV ECX, dword ptr table[RBX+RDI]
MOV ECX, dword ptr [table+RBX+RDI]
کلمه ی DWORD PTR به اسمبلر میگه که چجوری دستور MOV رو ENCODE کنه.
متاسفانه MASM اینا رو قبول نمیکنه ولی YASM و FASM قبول میکنه.
حالا میرم سراغ انواع داده ها در ASM.
خب اولیش db هست که یعنی بایت خالی مثل 0x55
dw میشه دو بایت مثلا 0x1234
dd میشه هشت تا db یا دوتا dw مثلا 0x12345678
و.....
البته داده ها یکسری جزیات دارن که بعدا راجبش صحبت میکنیم.