أنت هنا:برمجها»المجمع NASM»الدرس 3: العوامل والأوامر الأولية
الدرس 3: العوامل والأوامر الأولية الدرس 3: العوامل والأوامر الأولية
قيم الموضوع
(0 أصوات)
 
 نبدأ في هذا الدرس بأوائل الأوامر التي من الأفضل معرفتها عند مباشرة البرمجة باستعمال المجمع.

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
أنجز شفرة تقوم تقوم بجميع العمليات المنطقية لعددين وكذلك لمقابليهما.

 

أضف تعليقا


إصنعها يريد أن يتأكد أنك لست روبوتا، لذلك أحسب ما يلي:

كود امني
تحديث