به نام خدا
دستورات زبان اسمبلی :
X86 Opcodes or intel instructions
کدهای عملیاتی پردازنده ی ایکس 86 (پردازنده های خانواده ی 8086 تا پنتیوم و اینتل کور نسل نهم و ... ) یا دستورات زبان اسمبلی اینتل ( از ایکس 86 تا Intel Core i9 ) :
نکته : این عبارات ، دستورات زبان اسمبلی می باشند که در سورس کد و دیس اسمبلی نرم افزارها به شکل یکسان بکار می رود و به شما اوپن سورس واقعی و آزادی واقعی را هدیه می دهند :
آزادی کاربر در لایسنسهای متضاد و متناقض نرم افزار آزاد و سفسطه گریها و هرج و مرج دنیای گنولینوکس و عقده بازی ها و هیجانات و تعصبات و رفتارهای ناپسند طرفداران نرم افزار آزاد و مغلطه بازی ها و فلسفه بافی های بنیاد نرم افزار آزاد و لایسنس گنو که نوعی دیکتاتوری مدرن است و نفرت از باینری که زبان واقعی کامپیوتر است و پرستش شخص ریچارد استالمن ، که همه اینها ما را از ماهیت حقیقی و ذات کامپیوتر و سخت افزار و زبان واقعی کامپیوتر دور می کند ، بدست نمی آید .
آزادی کاربر ، در برنامه نویسی با زبان اسمبلی و فهم باینری و آشتی کردن با زبانهای ماشین و اسمبلی ؛ بدست می آید :
اوپن سورس ما را از فهم باینری و سخت افزار عاجز می کند مگر اینکه اوپن سورس بطور کامل با زبان اسمبلی بکارگرفته شود یعنی نرم افزارهای اوپن سورس ، مطلقا با زبان اسمبلی نوشته شده و زبان اسمبلی و البته دیس اسمبلی ، بعنوان سورس واقعی نرم افزارها تلقی شود . انوقت است که اوپن سورس با باینری دوست و هماهنگ خواهد شد .
اوپن سورس یعنی دیس اسمبلی . اوپن سورس یعنی برنامه نویسی محض با زبان اسمبلی .
اسمبلی ، اوپن سورس واقعی است . سورس کد واقعی نرم افزارها و سیستم عاملها و بازیها و درایورها درواقع همان دیس اسمبلی می باشد .
زبانهای سطح بالا سورس واقعی نیستند بلکه یک مشت زبان تصنعی و ساختگی و جعلی می باشند .
اگر به دنبال سورس کد واقعی و حقیقی نرم افزارها و بازیها و سیستم عامل ها می گردید باید فقط به دیس اسمبلی نگاه کنید . به دنبال دیکامپایل و استخراج سورس سطح بالا نباشید . سورس سطح بالا یک مشت کد جعلی و تصنعی و ابلهانه و دروغین است .
لذا باید حتما زبان اسمبلی را یاد بگیرید تا به اوپن سورس واقعی و حقیقی برسید .
لیست کامل دستورات زبان برنامه نویسی اسمبلی :
addpd addps addsd addss addsubpd addsubps
and andnpd andnps andpd andps arpl
bound bsf bsr bswap bt BTC BTR BTS
CALL CBW CWD CWDE CDQ CLC CLD CLI CLTS
CLFLUSH CMC CMP CMPccPD CMPccPS CMPccSD CMPccSS
CMPSB CMPSW CMPXCHG CMPXCHG8B
CMOVcc COMISD COMISS CPUID
CVTDQ2PD CVTDQ2PS
CVTPD2DQ CVTPD2PI CVTPD2PS CVTPI2PD CVTPI2PS
CVTPS2DQ CVTPS2PD CVTPS2PI
CVTSD2SI CVTSD2SS CVTSI2SD CVTSI2SS
CVTSS2SD CVTSS2SI
CVTTPD2DQ CVTTPD2PI CVTTPS2DQ CVTTPS2PI CVTTSD2SI CVTTSS2SI
DAA DAS DEC DIV DIVPD DIVPS DIVSD DIVSS
EMMS ENTER
F2XM1 FABS FADD FADDP FBLD FBSTP FCHS FCLEX
FCMOVcc FCOM FCOMP FCOMPP FCOMI FCOMIP FCOS
FDECSTP FDIV FDIVP FDIVR FDIVRP FEMMS FFREE
FIADD FICOM FICOMP FIDIV FIDIVR
FILD FIST FISTP FISTTP FIMUL FINCSTP
FINIT FNINIT FISUB FISUBR FLD FLDxx FLDCW FLDENV
FMUL FMULP FNOP
FNSAVE FNSTCW FNSTENV FPATAN FPTAN FPREM FPREM1
FRNDINT FRSTOR FSAVE FSCALE FSETPM FSIN FSINCOS
FSQRT FST FSTP FSTCW FSTENV FSTSW
FSUB FSUBP FSUBR FSUBRP FTST FUCOMxx FWAIT
FXAM FXCH FXRSTOR FXSAVE FXTRACT FYL2X FYL2XP1
HADDPD HADDPS HSUBPD HSUBPS HLT
IDIV IMUL INC IN INSB INSD INSW
INT INT01 INT1 INT3 ICEBP INTO INVD INVLPG
IRET IRETW IRETD
Jcc JCXZ JECXZ JMP
LAHF LAR LDDQU LDMXCSR LDS LES LFS LGS LSS
LEA LEAVE LFENCE LGDT LIDT LLDT LMSW
LODSB LODSW LODSD LOCK
LOOP LOOPE LOOPZ LOOPNE LOOPNZ LSL LTR
MASKMOVDQU MASKMOVQ MAXPD MAXPS MAXSD MAXSS MFENCE
MINPD MINPS MINSD MINSS MONITOR
MOV MOVAPD MOVAPS MOVD MOVDDUP MOVDQ2Q MOVDQA MOVDQU
MOVHLPS MOVHPD MOVHPS MOVLHPS MOVLPD MOVLPS
MOVMSKPD MOVMSKPS MOVNTDQ MOVNTI MOVNTPD MOVNTPS MOVNTQ
MOVQ MOVQ2DQ MOVSB MOVSD MOVSHDUP MOVSLDUP MOVSW
MOVSS MOVSX MOVUPD MOVUPS MOVZX
MUL MULPD MULPS MULSD MULSS MWAIT
NEG NOT NOP NOPE
OR ORPD ORPS OUT OUTSB OUTSW OUTSD
PACKSSDW PACKSSWB PACKUSWB PADDB PADDW PADDD PADDQ
PADDSB PADDSW PADDUSB PADDUSW PAND PANDN
PAUSE PAVGB PAVGW PAVGUSB
PCMPxxx PEXTRW
PF2ID PF2IW PFACC PFADD PFCMPxx PFMAX PFMIN
PFMUL PFNACC PFPNACC PFRCP
PFRCPIT1 PFRCPIT2 PFRSQIT1 PFRSQRT
PFSUB PFSUBR PI2FD PI2FW
PINSRW PMADDWD PMAXSW PMAXUB PMINSW PMINUB
PMOVMSKB PMULHRWA PMULHUW PMULHW PMULLW PMULUDQ
POP POPA POPAD POPF POR
PREFETCH PREFETCHh
PSADBW PSHUFD PSHUFHW PSHUFLW PSHUFW
PSLLDQ PSLLx PSRAx PSRLDQ PSRLx
PSUBx PSUBxx PSWAPD PUNPCKhxx
PUSH PUSHA PUSHAD PUSHF PXOR
RCL RCR RCPPS RCPSS RDMSR RDPMC RDTSC
REP RET RETF RETN ROL ROR
RSDC RSLDT RSM RSQRTPS RSQRTSS RSTS
SAHF SAL SAR SBB SCASB SCASW SCASD SETcc
SFENCE SGDT SIDT SLDT
SHL SHR SHLD SHRD SHUFPD SHUFPS SMSW
SQRTPD SQRTPS SQRTSD SQRTSS STC STD STI
STMXCSR STOSB STOSW STOSD STR
SUB SUBPD SUBPS SUBSD SUBSS
SYSCALL SYSENTER SYSEXIT SYSRET
TEST
UCOMISD UCOMISS UD0 UD1 UD2
UNPCKHPD UNPCKHPS UNPCKLPD UNPCKLPS
VERR VERW
WAIT WBINVD WRMSR
XADD XCHG XLATB XOR XORPD XORPS
به نام خدا
دستورات زبان برنامه نویسی اسمبلی اینتل :
کاربران عزیز . سلام . می دانم که بسیاری از شما از مطالعه ی پست قبلی مبنی بر بی نیازی زبان اسمبلی از کتابخانه های زبانهای سطح بالا ، شگفت زده هستید !
اما من قصد دارم به شما آزادی و قدرت و استقلال را هدیه دهم تا از زیر یوغ بردگی زبانهای سطح بالا و سیستم عاملها و نرم افزارهای انحصاری و قلدر و زورگو و دیکتاتور بیرون بیایید و بتوانید کمر راست کنید و طعم شیرین آزادی و استقلال و قدرت و هوشمندی و انعطاف پذیری را بچشید و از برنامه نویسی لذت ببرید و به یک برنامه نویس واقعی و هوشمند و کامل تبدیل شود و از همه چیز و همه کس بی نیاز شوید .
به همین جهت با تمام قدرت ، ضمن محکوم کردن تمام زبانهای سطح بالا و فناوریهای خبیث و مکار ( دات نت و .... ) شرکت مایکروسافت ، قصد دارم کاری کنم که شما بتوانید تحت ویندوز ، با زبان اسمبلی ، اقدام به برنامه نویسی حرفه ای و حتی تجاری نمایید و عملا برای همیشه از شر زبانهای سطح بالا و مشکلات فنی شان و لایسنس هایشان و محدودیتهایشان و نواقص شان و دپندنسیهای چرت و مسخره شان ، راحت شوید و دیگه هیچوقت پیامهای مبنی بر یافت نشدن فلان فایل dll یا فلان فایل h یا فلان فایل cpp یا ocx یا .... ظاهر نشوند و شما را آزار ندهند .
یک زبان قدرتمند و همه منظوره ( اسمبلی ) بهتر از هزاران زبان ضعیف و مکار و ریاکار ( زبانهای سطح بالا ) می باشد .
سخن کوتاه می کنم و اعلام می کنم که کلماتی که در این پست ( در بالای پست ) بصورت کلمات رنگی در سه رنگ قرمز و سبز و آبی و با فاصله از یکدیگر ، می بینید ، همگی دستورات زبان اسمبلی اینتل می باشند . یعنی همان دستوراتی که تمام کامپایلرهای زبانهای سطح بالا ، مجبورند دستورات خودشان را به اینها ترجمه کند تا شاید البته شاید بتوانند با کمک اینها ، کد زبان ماشین و البته نرم افزار تولید کنند !!
اینها دستوراتی هستند که مستقیما به کدهای زبان ماشین ( 0 و 1 ) تبدیل می شوند لذا زبان اسمبلی که این دستورات را بصورت ذاتی بکار می برد سریعترین و قدرتمندترین و کاملترین و هوشمندترین و انعطاف پذیرترین زبان برنامه نویسی دنیا ( بعد از زبان ماشین ) می باشد و یک زبان برنامه نویسی همه منظوره است و تمام نیازهای شما را برطرف می نماید و شما را از تردید بین صدها زبان سطح بالا ، خلاص می کند .
نگران کلمات عجیب این دستورات نباشید چون از پست بعدی تک تک این دستورات را برایتان تشریح می کنم و برای تک تک این دستورات طبق گرامر اسمبلر RosAsm برایتان مثال و نمونه ی برنامه می آورم .
همچنین آنها را بصورت یک درمیان ، رنگی کردم تا بهتر بتوانید انها را بخوانید و از هم تشخیص دهید .
از پست بعدی ، عنوان هر پست دقیقا شامل تک تک این دستورات می باشد .
یعنی پست بعدی عنوان اش اینست : AAA
من به مرور زمان تک تک این کلمات را از این پست ، به پست مربوطه لینک می کنم تا شما به محض کلیک روی هر کدام از این کلمات این پست ، مستقیما به پست مربوط به ان کلمه وارد شوید .
مثلا به محض کلیک روی کلمه ی AAA مستقیما به پست مربوطه وارد شوید .
و البته شما می توانید با کلیک روی یک کلمه ی کلیدی که در تمام پستهای آینده نوشته می شود مجددا به این صفحه ( همین صفحه که شامل تمام دستورات زبان اسمبلی اینتل می باشد ) وارد شوید و یک مرور کلی به تمامی دستورات زبان اسمبلی اینتل داشته باشید .
این کلمه ی کلیدی اینست :
Assembly is real open source
در تمام پستهای بعدی وبلاگ وحیدمی یا هر وبلاگ دیگه ، به محض کلیک روی این عبارت وارد این پست می شوید و می توانید دستورات زبان اسمبلی اینتل را که یکجا نوشته ام را مرور نمایید و بخاطر بسپارید تا فراموش نکنید و در برنامه نویسی به مشکل برخورد ننمایید .
شما می توانید از این دستورات زبان اسمبلی اینتل ، در اسمبلرهای Fasm و Masm32 و البته Goasm نیز استفاده کنید .
حتی اگر بتوانید با Nasm کار کنید این دستورات ، آنجا نیز کاربرد خواهند داشت .
به هرحال اینها دستورات زبان اسمبلی اینتل می باشند که در هر مدلی اعم از 8 بیت ، 16 بیت ، 32 بیت و 64 بیت ، کاربرد دارند .
این دستورات به هیچ سیستم عامل وابسته نیستند و لذا شما می توانید در تمام سیستم عاملهای دنیا از این دستورات برای برنامه نویسی با زبان اسمبلی اینتل ، استفاده نمایید .
فرقی نمی کند که کاربر داس باشید یا ویندوز یا یونیکس یا مولتیکس یا لینوکس یا بی اس دی یا اندروید ایکس 86 یا ....
کاربر هر سیستم عامل که باشید اگر بخواهید با زبان اسمبلی اینتل برنامه نویسی کنید می توانید با خیال راحت از این دستورات استفاده نمایید .
خوشبختانه زبان اسمبلی به هیچ سیستم عامل وابسته نیست و روی تمام سیستم عاملها براحتی اجرا می شود چون اسمبلی نسخه ی قابل فهم و اتوماتیک زبان ماشین است و زبان ماشین نیز زبان واقعی و حقیقی کامپیوتر می باشد و زبان سخت افزار است نه سیستم عامل لذا هیچ وابستگی و هیچ ربطی به سیستم عامل ندارد لذا از این جهت ، زبان اسمبلی یک زبان قابل حمل است و روی تمام سیستم عاملها اجرا می شود . به همین سادگی !!
خب ! از پست بعد تک تک این دستورات را به شما معرفی کرده و با ذکر یک نمونه برنامه ، کاربرد دقیق این دستورات را به شما آموزش خواهم داد . انشاء ا...
+
فراموش نکنید : عنوان پست بعدی این وبلاگ (وبلاگ وحیدمی) ، AAA و عنوان پست بعد از آن ، AAS و عنوان پست بعدی ، AAM می باشد و الی اخر ..... یعنی هر پست ، فقط یک دستور زبان اسمبلی را تشریح کرده و توضیح می دهد . بنابراین برای هر دستور زبان اسمبلی ، یک پست جداگانه می سازم و منتشر می نمایم .
+
نکته ی مهم :
بسیاری از این دستورات زبان اسمبلی که در این پست ، لیست کرده ام بر روی تمام پردازنده های خانواده ی اینتل از پردازنده ی اینتل 8086 گرفته تا پردازنده ی اینتل کور نسل نهم یعنی Core i9 براحتی اجرا می شوند .
بنابراین بسیاری از این دستورات یقینا بر روی پردازنده ی کامپیوتر شما و میلیاردها انسان اجرا می شوند .
بنابراین یادگیری این دستورات بر تمام کاربرانی که پردازنده ی اینتل دارند واجب است .
+
اخطار :
من در پست قبلی یک برنامه ی اسمبلی نوشتم که در آن از دستور push استفاده کردم ولی چون این برنامه را خیلی سریع و فی البداهه نوشتم فراموش کردم که روتین را با استفاده از دستور pop از حافظه خارج نمایم .
یادتان باشد که برخی از دستورات زبان اسمبلی بصورت جفت و زوج با هم بکار می روند . مثلا هر وقت از دستور push استفاده کردید و کارتان تمام شد حتما باید در پایان کد از دستور pop استفاده نمایید تا برنامه از حافظه ی کامپیوتر خارج شود و شما با خطاهای خطرناک دچار نشوید .
من این موضوع حیاتی و مهم را در پست قبلی فراموش کردم و الان انرا ابتدا به خودم و بعد به شما یاداوری می نمایم .
توجه داشته باشید که در برنامه نویسی با زبان اسمبلی ، شما در اوج قدرت و آزادی هستید و دسترسی مستقیم و کامل به تمام اجزای سیستم عامل و سخت افزار کامپیوترتان دارید لذا باید حواستان کاملا جمع باشد که یکوقت مرتکب اشتباه نشوید زیرا شما بطور مستقیم به سخت افزار کامپیوترتان دسترسی دارید و این می تواند خطرناک باشد . پس احتیاط کنید .
برای برنامه نویسی با زبان اسمبلی به یک محیط خلوت و ساکت و آرام نیاز دارید تا تمرکزتان بهم نخورد و ناخواسته دچار اشتباه نشوید .
بروزرسانی :
من بعد از مدتها جستجو موفق شدم نسخه ی اصلی و اوریجینال اسمبلر RosAsm را پیدا و دانلود نمایم . این نسخه قدیمی است اما به درستی کار می کند مخصوصا که دیباگر (debugger) این نسخه بخوبی و بطور صحیح نمایش داده می شود . شما می توانید نسخه ی اصلی و اوریجینال اسمبلر RosAsm را از آدرسهای زیر دانلود نمایید :
++++++++
+++++++++
Vahid Mohammady (vahidmy)
Original Site: https://vahidmy.blog.ir
لینک دانلود نسخه ی اوریجینال اسمبلر RosAsm :
https://bayanbox.ir/download/150927488221190666/OriginalRosAsm.zip
لطفا برای برنامه نویسی ، منحصرا از این نسخه که اوریجینال می باشد استفاده نمایید .
ترجیحا فایل OriginalRosAsm.zip را از لینک بالا ، دانلود نمایید .
+
وحید محمدی - وبلاگ وحیدمی