1. التعليق والملاحظات
في C نعبر عن التعليق أو الملاحظات بـ /* .... */
في Pascal نعبر عن التعليق أو الملاحظات بـ (* .... *) أو {.....}
في Basic نعبر عن التعليق أو الملاحظات بـ ' أو Rem
أما في المجمع فنعبر عن التعليق أو الملاحظات بـ(الفاصلة المنقطة) ;
2. العامل أو الأمر mov
الكتابة الخوارزمية |
الكتابة في المجمع |
في <المتغير1> نضع <المتغير2>
|
mov <operand1>,<operand2>
|
خلاصة : الأمر mov يقوم بعملية وضع قيمة في المتغير1 (operand1).
في أغلب الأحيان يكون المتغير1 عبارة عن خزان (reg).
أما المتغير2 فيمكن أن يكون قيمة عددية (imm) أو عنوان في الذاكرة (mem) أو خزان (reg).
تذكير : الخزانات تعتبر متغيرات بالنسبة للمجمع.
أمثلة: |
mov ax, bx ;(reg, reg) تكافئ ax = bx mov ax, 3 ;(reg, imm) تكافئ ax = 3 mov ax, Var1 ;(reg, mem) تكافئ ax = Var1
|
وهناك بعد الكتابات الخاطئة أو الممنوعة:
أمثلة: |
mov es, ds ;(قطعة --> قطعة ) mov es, 3 ;(قيمة --> قطعة ) mov Var0, Var1 ;(عنوان --> عنوان) mov 4,ax ;(خزان --> قيمة ) mov 4,3 ;(قيمة --> قيمة )
|
3. العاملين أو الأمرين add و sub (الجمع و الطرح)
الكتابة الخوارزمية |
الكتابة في المجمع |
<المتغير1> = <المتغير1> + <المتغير2>
|
add <operand1>,<operand2>
|
<المتغير1> = <المتغير1> - <المتغير2>
|
sub <operand1>,<operand2>
|
خلاصة : الأمر add يقوم بعملية الجمع و الأمر sub يقوم بعملية الطرح .
في أغلب الأحيان يكون المتغير1 عبارة عن خزان (reg).
أما المتغير2 فيمكن أن يكون قيمة عددية (imm) أو عنوان في الذاكرة (mem) أو خزان (reg).
تذكير : الخزانات تعتبر متغيرات بالنسبة للمجمع.
أمثلة: |
add ax, bx ;(reg, reg) تكافئ ax = ax + bx add cx, 3 ;(reg, imm) تكافئ cx = cx + 3 add bx, Var1 ;(reg, mem) تكافئ bx = bx + Var1 add dx, [di] ;(reg, mem) تكافئ dx = dx + [di]
|
أمثلة: |
sub bx, bx ;(reg, reg) تكافئ bx = bx - bx sub dx, 13 ;(reg, imm) تكافئ dx = dx - 13 sub ax, Var1 ;(reg, mem) تكافئ ax = ax - Var1 sub cx, [si] ;(reg, mem) تكافئ cx = cx - [si]
|
وهناك بعد الكتابات الخاطئة أو الممنوعة (نفس الشروط بالنسبة لـ mov):
أمثلة: |
add es, ds ;(قطعة , قطعة ) sub es, 3 ;(قيمة , قطعة ) sub Var0, Var1 ;(عنوان , عنوان) add 4,ax ;(خزان , قيمة ) sub 4,3 ;(قيمة , قيمة )
|
4. العامل أو الأمر NEG (مقابل)
الكتابة الخوارزمية |
الكتابة في المجمع |
<المتغير> = <المتغير> -
|
neg <operand>
|
خلاصة : الأمر neg يقوم بعملية تحديد مقابل المتغير.
في أغلب الأحيان يكون المتغير عبارة عن خزان (reg).
تذكير : الخزانات تعتبر متغيرات بالنسبة للمجمع.
أمثلة: |
mov ax, 12 ;ax =12 sub ax, 3 ;ax = ax - 3 ===> ax = 9 neg ax ;ax = -ax ===> ax = -9 add ax, 9 ;ax = ax + 9 ===> ax = 0
|
وهناك بعد الكتابات الخاطئة أو الممنوعة:
أمثلة: |
neg 4 ;4 = -4 (مستحيل)
|
5. العاملين أو الأمرين INC و DEC
الكتابة الخوارزمية |
الكتابة في المجمع |
<المتغير> = <المتغير> + 1 |
inc <operand>
|
<المتغير> = <المتغير> - 1 |
dec <operand>
|
خلاصة : الأمر inc يقوم بعملية الزيادة بـ 1 و الأمر dec يقوم بعملية النقصان بـ 1.
في أغلب الأحيان يكون المتغير عبارة عن خزان (reg).
تذكير : الخزانات تعتبر متغيرات بالنسبة للمجمع.
أمثلة: |
mov ax, 12 ;ax =12 inc ax ;ax = ax +1 ===> ax = 13 neg ax ;ax = -ax ===> ax = -13 dec ax ;ax = ax - 1 ===> ax = -14 dec ax ;ax = ax - 1 ===> ax = -15
|
وهناك بعد الكتابات الخاطئة أو الممنوعة:
أمثلة: |
dec 14 ;14 = 14 - 1 (مستحيل) inc 8 ;8 = 8 + 1 (مستحيل)
|
6. العوامل المنطقية and و or وَ not وَ xor
الكتابة الخوارزمية |
الكتابة في المجمع |
<المتغير1> = <المتغير1> و <المتغير2>
|
and <operand1>,<operand2>
|
<المتغير1> = <المتغير1> أو <المتغير2>
|
or <operand1>,<operand2>
|
<المتغير1> = <المتغير1> وإلا <المتغير2>
|
xor <operand1>,<operand2>
|
<المتغير> = لا <المتغير>
|
not <operand>
|
في أغلب الأحيان يكون المتغير عبارة عن خزان (reg).
تذكير : الخزانات تعتبر متغيرات بالنسبة للمجمع.
مسألة1 : نريد وضع القيمة 0 في ax.
الحلول : |
mov ax, 0 ;ax = 0 ===> ax = 0 (الحل الأول) sub ax, ax ;ax = ax - ax ===> ax = 0 (الحل الثاني) mov bx,ax ;bx = ax ===> bx = ax (الحل الثالث) neg ax ;ax = - ax ===> ax = -ax add ax,bx ;ax = ax + bx ===> ax = ax - ax = 0 mov bx,ax ;bx = ax ===> bx = ax (الحل الرابع) not ax ;ax = not ax ===> ax = ax and ax,bx ;ax = ax and bx ===> ax = ax and ax = 0 and ax,0 ;ax = ax and 0 ===> ax = 0 (الحل الخامس) xor ax,ax ;ax = ax xor ax ===> ax = 0 (الحل السادس)
|
ملاحظة : الحل السادس هو الأسرع بالنسبة لعقل الحاسوب كما أنه يعمل به المتقدمون في البرمجة.
مسألة 2 : نريد حساب العمليات التالية 10and13 وَ 10or13 وَ 10xor13 وَ not10 وَ not13.
الحل : |
mov ax, 10 ;ax = 10 mov bx, 13 ;bx = 13 mov cx, ax ;cx = 10 and cx, bx ;cx = cx and bx =10 and 13 = 8 (10 and 13 حل ) mov cx, ax ;cx = 10 or cx, bx ;cx = cx or bx =10 or 13 = 15 (10 or 13 حل ) mov cx, ax ;cx = 10 xor cx, bx ;cx = cx xor bx =10 xor 13 = 7 (10 xor 13 حل ) not ax ;ax = -11 ( not 10 حل ) not bx ;ax = -14 ( not 13 حل )
|
وهناك بعد الكتابات الخاطئة أو الممنوعة (مشابهة لـ mov و neg )
تمارين تطبيقية
ملاحظة: قم بحل التمارين يدويا فقط
التمرين 3.1
أنجز شفرة تقوم بجمع عددين.
التمرين 3.2
أنجز شفرة تقوم بطرح عددين.
التمرين 3.3
أنجز شفرة تقوم بتحديد مقابل عدد.
التمرين 3.4
أنجز شفرة تقوم بعملية الجمع والطرح لعددين وكذلك لمقابليهما.
التمرين 3.5
أنجز شفرة تقوم تقوم بجميع العمليات المنطقية لعددين وكذلك لمقابليهما.