Instruction Set of 8086 Processor 1- Data transfer Group 1 MOV Instruction MOV meaning move MOV D,S (S) (D) Flags affected ه ايعاز يقم بادخال عدد مباشر من قبل المستخدم ا نقل (محتى مسجل ا محتى ذاكرة) مسجل اخر محتى الى ا مقع ذاكرة اخر ملاحظة : ١ عند التعامل مع الذاكرة بشكل مباشر (عنان مباشر)يجب اتباع الخطات التالية : في جزء مقطع البيانات حيث تمثل كل من D1 D2 عنانين مباشرة ا ازاحات مباشرة ضمن مقطع البيانات كالاتي DATA D1 DW 9A23H D2 DB 22H تعرف D1 بيانات بطل كلمة بقيمة 9A23H مخزنة في ازاحة معطاة من قبل المعالج ضمن مقطع البيانات معرفة للمستخدم بالرمز D1 بينما D2 بيانات بطل بايت بقيمة 22H مخزنة في ازاحة معطاة من قبل المعالج ضمن مقطع البيانات معرفة للمستخدم بالرمز D2 يتم استخدامها بالبرنامج بالشكل التالي بعد التنفيذ فان قيم المسجلات ستكن يجب ان نراعي ان يثبت بعد كتابة الرقم في مقطع البيانات حرف H MOV SI,D1 MOV CL,D2 SI=9A23H CX=0022H الذي يمثل رمز النظام السادس عشري ٢ عند ادخال ارقام مباشرة الى مسجل يجب ان نراعي ان كان الرقم يبدا بحرف من الحرف التي تمثل الارقام من 10 الى 15 اي (A,B,C,D,E,F) يجب ان يضاف 0 قبل الرقم حتى لايفسر منقبل المعالج على انه حرف ليس رقم فمثلا عند ادخال الرقم AB23 الى المسجل CX يجب ان يكتب الايعاز كالتالي MOV CX,0AB23 ٤١
٣ عند ادخال رقم مباشر الى عنان ا ازاحة معننة بشكل مباشر في مقطع البيانات فيتم تعريف العنان المباشر DATA D3 DB? D4 DW? MOV D3,0AFH MOV D4,98CEH بالشكل التالي يتم ادخال البيانات ضمن مقطع CODE بالشكل التالي ٤ لايمكن نقل البيانات بشكل مباشر من مقع ذاكرة الى مقع ذاكرة اخر انما يجب ان يكن احد مسجلات المعالج DATA D1 DB 67H D2 DB 4BH CODE MOV AL,D1 MOV D2,AL منطقة سطية فمثلا لنقل المقع D1 الى D2 التي تحتي على القيم التالية 67H 4B فيكتب البرنامج بالشكل التالي 1-1THE STACK : the stack is implemented in the memory of 8086, and it is used for temporary storage Starting address of stack memory (top of the stack) obtained from the contents of the stack pointer () and the stack segment () (:) Figure 1 shows the stack region for =0400H and =A000H Data transferred to and from the stack are word-wide, not bytewide Whenever a word of data is pushed onto the top of the stack, the high-order 8 bits are placed in the location addressed by -1 the low-order 8 bits are placed in the location addressed by -2The is then decremented by 2 Whenever data are popped from the stack, the low-order 8-bits are removed from the location addressed by The high-order 8 bits are removed from the location addressed by +1 The is then incremented by 2 المكدس يتم تطبيق المكدس في ذاكرة المعالج ٨٠٨٦ تستخدم للخزن القتي : ٤٢
يتم الحصل على عنان البداية لذاكرة المكدس(قمة المكدس) الذي يتم الحصل عليه من خلال محتى م شر المكدس =0400H ١ (:) مسجل مقطع المكدس الشكل رقم يبين منطقة المكدس بقيمة البيانات التي التي يتم تناقلها من الى المكدس هي من نعية الكلمة word ليست من نعية البايت =A000H high order 8bit عندما يتم دفع push قيمة في قمة المكدس فان ستضع في المقع الذي عنانه ه قيمة Low order 8bit مطرح منه احد بينما يضع في المقع الذي عنانه ه قيمة مطرح منه اثنين يتم طرح اثنين من قيمة عندما يتم اخراج البيانات من المكدس فان low-order 8-bits يتم رفعها من المقع المعنن بقيمة بينما يتم رفعها من المقع المعنن بقيمة +1 قيمة يضاف له اثنين high-order 8-bits Bottom of stack Top of stack 0400:FFFFH 0400:A000H Stack segment End of stack 0400:A000H Figure 1 The stack region The following example illustrates pushing the content of the AX and BX registers onto the stack and then subsequently popping the data from the stack back to the registers Assume that ٤٣
the AX contains hex 026B, the BX contains 04E3, and the contains 36 ( the segment address in the does not concern us here) المثال التالي يبين لنا كيفية ادخال محتيات المسجلين AX and BX في المكدس من ثم بشكل تعاقبي اخراج 026B AX المعلمات من المكدس ارجاعها الى مكانها الال في المسجلين بافتراض ان المسجل يحي الرقم 36 04E3 بنظام السادس العشري المسجل BX يحي القيمة مسجل يحي القيمة لانهتم بقيمة 1 Initially, the stack is empty and looks like this Segment address of stack =36 Top of stack 2 PUSH AX: Decrements the by 2 (to 34) and stores the contents of the AX,026B, in the stack Note that the operation reverses the sequence of the stored bytes, so that 026B becomes 6B02: 6B02 =34 3 PUSH BX: Decrements the by 2 (to 32) and stores the contents of the BX,04E3, in the stack as E304: E304 6B02 =32 4 POP BX: Restores the word from where the points in the stack (E304) to the BX register and increments the by 2 (to 34) The BX now contains 04E3, with the bytes correctly restored The stack now appears as: ٤٤
E304 6B02 =34 5 POP AX: Restores the word from where the points in the stack (6B02) to the AX register and increments the by 2 (to 36) The BX now contains 026B, with the bytes correctly restored The stack now appears as: E304 6B02 =36 Note that POP instructions are coded in reverse sequence from PUSH instructions; the example pushed the AX and BX registers, but popped the BX and AX, in that order Also, the values pushed onto the stack are still there, although the no longer points to them AX ثم BX نخرج BX نلاحظ ان ايعازات POP تعمل بشكل معاكس لايعازات PUSH فقد قمنا بادخال AX ثم مع الالتزام بالترتيب كذلك القيم التي ادخلت الى المكدس بقيت هناك مع ان لم يعد ي شر عليها 1-2The MOV instruction : The function of MOV instruction is to transfer a byte or word of data from a source location to a destination location The general form of MOV instruction is as shown below: ان ظيفة ايعاز MOV ه لنقل بايت ا كلمة من البيانات من مقع المنطلق الى مقع المستقر الصيغة العامة للايعاز MOV ه كالاتي: meaning Flags affected MOV move MOV D,S (S) (D) From table 1-(a), we see that data can be moved between general purpose registers, between a general purpose register and a segment register, between a general purpose-register or ٤٥
segment register and memory, or between a memory location and the accumulator Note that memory-to-memory transfers are not allowed من خلال الجدل (a)-1 نرى ان البيانات يمكن ان تنتقل بين مسجلات الاستخدام العام ا بين مسجلات الاستخدام العام مسجلات المقاطع ابين مسجلات الاستخدام العام ا مسجلات المقاطع مع الذاكرة ا بين ماقع الذاكرة المركم لاحظ انه لايجد تناقل مباشر بين ماقع الذاكرة 1-3PUSH / POP: The PUSH and POP instructions are important instructions that are store and retrieve data from the LIFO (Last In First Out) stack memory The general forms of PUSH and POP instructions are as shown below: ان ايعازي هي من الايعازات المهمة التي تقم بخزن استعادة المعلمات ذاكرة المكدس( اخر من يدخل PUSH/POP ال من يخرج) الصيغة العامة للايعازي PUSH POP كما في ادناه: Meaning Flags Operand (S or D) PUSH Push word onto PUSH S (()) (S) Register stack () ()-2 Seg reg (CS illegal POP POP word onto POP D (D) (()) Memory stack () ()+2 Flag register 1-4 LEA, LDS, and LES(load effective address) INSTRUCTIONS: These instructions load a segment and general purpose registers with an address directly from memory The general forms of these instructions are as shown below: هذه الايعازات تحمل مسجل المقطع مسجلات الاستخدام العام بعنان مباشر من الذاكرة الصيغة العامة لهذه الايعازات مبينة في ادناه: meaning Flags affected LEA Load effective address LEA reg16,ea EA (reg16) ٤٦
LDS Load register and DS LDS reg16,ea [PA] (reg16) [PA+2] (DS) LES Load register and ES LES reg16,ea [PA] (reg16) [PA+2] (ES) The LEA instruction is used to load a specified register with a 16 bit effective address(ea) 16-bit ان ايعاز LEA ه يستخدم لتحميل مسجل معين بعنان فعال بطل The LDS instruction is used to load a specified register with the contents of PA and PA+1 memory locations, and load DS with the contents of PA+2 and PA+3 memory locations DS PA+1 ان ايعاز LDS يستخدم في عملية تحميل مسجل معين بمحتى ماقع الذاكرة PA تحميل بمحتى ماقع الذاكرة PA+2 PA+3 The LES instruction is used to load a specified register with the contents of PA and PA+1 memory locations, and load LES with the contents of PA+2 and PA+3 memory locations ES PA+1 ان ايعاز LES يستخدم في عملية تحميل مسجل معين بمحتى ماقع الذاكرة PA تحميل بمحتى ماقع الذاكرة PA+2 PA+3 Example 1 : Assuming that BX=20H,DI=1000H, DS=1200H and the following memory contents: Memory 12200 12201 12202 12203 12204 Content 11 AA EE FF 22 What result is produced in the destination operand by execution the following instruction? a- LEA SI,[DI+BX+5] b- LDS SI,[200] Solution : a- EA =1000+20+5=1025 then (SI)=1025 b- PA=DS:EA=DS*10+EA=1200*10+200=12200 (SI)=AA11H and (DS)=FFEEH ٤٧