Professional Documents
Culture Documents
Asm 04
Asm 04
BY
A.Z
WWW.ITQOU.PS
انًعبنح
اٌّؼبٌظ ػجبسح ػٓ اٌمٍت إٌبثغ ٌٍؾبعٛة ف٠ ٛٙم َٛثزٕف١ز االٚاِش ٚاٌجشاِظ اٌّىزٛثخ
ثٍغخ اٌّبوٕخ فمؾٕ٘ .بٌه ػذح ششوبد رٕزظ ِؼبٌغبد ِٕٙب ششوخ أزً اٌز ٟأزغذ
ِؼبٌغبد ٚ 8086غ١ش٘ب .ف٘ ٟزٖ اٌذسٚط عٛف ٠زُ اٌزؼبًِ ِغ اٌّؼبٌظ .8086
انذاكزة
رغزخذَ اٌزاوشح ٌزخض ٓ٠اٌج١بٔبد ثٙب ٚ .رمغُ اٌزاوشح اٌ ٝػذح الغبَ اّ٘ٙب راوشح اٌمشاءح
فمؾ ( )ROMثؾ١ش ّ٠ىٓ اٌمشاءح ِٕٙب ٚال ّ٠ىٓ اٌىزبثخ ػٍٙ١ب ٚػٕذ أمطبع اٌز١بس
اٌىٙشثبئ ٟرجم ٝاٌج١بٔبد ِخضٔخ فٙ١ب.
ِالؽظخٕ٘ :بٌه أٛاع ِٓ ٘زٖ اٌزاوشح اٌز ٟرغّؼ ثبٌىزبثخ ػٍٙ١ب ثّغبػذح اعٙضح خبطخ
ِٕٙٚب ِٓ ٠غّؼ ثبٌىزبثخ ػٍٙ١ب ثّغبػذح ثشاِظ خبطخ.
راوشح اٌٛطٛي اٌؼشٛائ ٟ٘ :(RAM) ٟراوشح ٌٍزخض ٓ٠اٌّإلذ ٚػٕذ أمطبع اٌز١بس
اٌىٙشثبئ ٟػٕٙب رّؾ ٝاٌج١بٔبد اٌّٛعٛدح فٙ١ب.
رزى ْٛاٌزاوشح ِٓ خال٠بٌ .ىً خٍ١خ ػٕٛاْ (ٚ ) addressفؾٚ ٜٛوً خٍ١خ رزى8 ِٓ ْٛ
ثزبد أ ٞثطٛي ثب٠ذ ٚاؽذ ّ٠ٚىٓ رخض ٓ٠سِضا ٚاؽذا فمؾ ف ٟوً خٍ١خ .ػٕٛاْ اٌخٍ١خ
اال ٌٝٚف ٟاٌزاوشح ٘ ٛطفش ()0
وحذاث انذاكزة
-1انبج ( ٟ٘ٚ : )bitاطغش ٚؽذح رخض ٓ٠ثؾ١ش رغّؼ ثزخض 1 ٓ٠أ(1 , 0) 0 ٚ
-3ببَج ( ٛ٘ٚ :)byteػجبسح ػٓ 8ثزبد ّ٠ٚىٓ رخض ٓ٠سِضا ٚاؽذا فمؾ .اٌشِٛص ٟ٘
وً ِب ّ٠ىٓ وزبثزٗ ػٌٍٛ ٝؽخ اٌّفبر١ؼ ٚسؤ٠زٗ ػٍ ٝاٌشبشخٌٚ .ىً سِض ٛ٠عذ لّ١خ ػذد٠خ
رمبثٍٗ ٚارا اسدٔب ِؼشفخ لّ١خ سِض ِؼٕٔ ٓ١ظٙش ف ٟعذٚي ASCIIف٠ ٛٙؾز ٞٛػٍٝ
اٌشِٛص ٚاٌم ُ١اٌؼذد٠خ اٌّمبثٍخ ٌىً سِض
انُبقم bus
انُبقم ٛ٘ :ػجبسح ػٓ ِغّٛػخ ِٓ االعالن اٌز ٟرم َٛثٕمً ث١بٔبد ث ٓ١اٌّؼبٌظ ٚاٌزاوشح
ٚٚؽذاد االدخبي ٚاالخشاط
وحذاث االدخبل :ثّغبػذرٙب ّ٠ىٓ ادخبي اٌج١بٔبد ٌٍّؼبٌظ ِضً ٌٛؽخ اٌّفبر١ؼ اٌفبسح
ٚغ١ش٘ب
وحذاث االخزاج :ثؼذ ِؼبٌغخ اٌج١بٔبد ف ٟاٌّؼبٌظ ٠م َٛاٌّؼبٌظ ثبخشاط إٌزبئظ ػٍٝ
ٚؽذاد االخشاط ِٕٙٚب اٌشبشخ ٚاٌطبثؼخ ٚغ١ش٘ب
َ -1بقم انعُبوٍَ ) :(Address busثّغبػذرٙب ٠خزبس اٌّؼبٌظ خٍ١خ اٌزاوشح اٚ ٚؽذح
االدخبي اٚ ٚؽذح االخشاط اٌّطٍٛثخ .
يكىَبث انًعبنح
-3انًسدالث (ٚ :)registersظ١فخ اٌّغغالد اٌؾفع اٌّإلذ ٌٍج١بٔبد ٌىً ِغغً اعُ
ٚٚظ١فخ خبطخ ثٗ
يالحظت ٕ٘ :بٌه ِىٔٛبد اخشٌٍّ ٜؼبٌظ ِضً (، )command decoder
)(instruction queue) , (address buffer
نغبث انبزيدت
-نغت انًبكُت ) ٟ٘ٚ :(machine languageاٌٍغخ اٌٛؽ١ذح اٌز٠ ٟفّٙب اٌّؼبٌظ ٟ٘ٚ
رزى (0 , 1) ِٓ ْٛرّزبص ٘زٖ اٌٍغخ ثبٌغشػخ ٌٚىٕٙب طؼجخ ٌٍجشِغخ
-نغبث عهُب ( ٟ٘ٚ :)high level languageرزى ِٓ ْٛوٍّبد لش٠جخ ػٌٍ ٝغخ
االٔغبْ رّزبص ثغٌٛٙخ اٌجشِغخ ٌٚىٕٙب ثط١ئخ ثبٌٕغجخ ٌٍغخ اٌّبوٕخ ٚاٌزغّ١غِ .ضً اٌٍغبد
C , C++ , visual basic
يالحظت :ػٕذ وزبثخ ثشٔبِظ ثٍغخ اٌزغّ١غ ا ٚثٍغخ ػٍ١ب ٔؾزبط اٌِ ٝزشعُ )(compiler
٠م َٛثزشعّخ اٌجشٔبِظ اٌٌ ٝغخ اٌّبوٕخ ؽز٠ ٝفّٙٙب اٌّؼبٌظ
نغت اسًبهٍ ،اسًبهز و اسًبهٍ
انًىاسٍَ
-1انًُشاٌ انثُبئٍ٠ :زى ِٓ ْٛاٌشِٛص 0 , 1فمؾ ٕ٘ ِٓٚب االعُ صٕبئ ٟثمذس ػذد اٌشِٛص
اٌز٠ ٟؾك اعزؼّبٌٙب
ايثهت:
11011100 , 10001000
ٌىً ثذ رٛعذ لّ١خ ِضً اٌّ١ضاْ اٌؼشش ٞخبٔخ االؽبد خبٔخ اٌؼششاد خبٔخ اٌّئبد
ٚغ١ش٘ب ٕ٘ب اٌم ُ١وّب :ٍٟ٠
اال ٌٝٚاٌضبٔ١خ اٌضبٌضخ اٌشاثؼخ اٌخبِغخ اٌغبدعخ اٌغبثؼخ اٌضبِٕخ اٌجذ
128 64 32 16 8 4 2 اٌمّ١خ 1
ٔش ٜاْ لّ١خ اٌجذ ف ٟاٌّ١ضاْ اٌؼشش ٞرغبٌٍ 2 ٞٚمٛح (ِىبْ اٌجذ ٔبلض (1
اٌجذ اٌّٛعٛدح ف ٟعٙخ اٌ ٟ٘ ٓ١ّ١اٌجذ راد اٌمّ١خ اٌظغشٚ ٜاٌجذ اٌّٛعٛدح ف ٟالظٝ
اٌ١غبس رذػ ٝاٌجذ راد اٌمّ١خ اٌىجشٜ
ايثهت:
1A2 , 111, DE1
انقبَىٌ انعبو:
-2انسبدص عشز :اٌؼذد اٌّغغً ف ٟاٌّ١ضاْ اٌغبدط ػشش ٠ىزت ػٓ ٕٗ١ّ٠اٌشِض H
اِضٍخ11H , 12AH , 10H :
يالحظت :ارا وبٔذ ٕ٘بٌه ؽبعخ ٌششػ ؽشق اٌزؾ ً٠ٛث ٓ١اٌّٛاص ٓ٠فبٔب ػٍ ٝاعزؼذاد
ٌششؽٙب
اٌ ٝاٌٍمبء ف ٟاٌذسط اٌمبدَ
اٌذسط اٌمبدَ ثبعُ اٌّؼبٌظ 8086
انًعبنح 8886
ٌٙ -زا اٌّؼبٌظ ٔ 16بلً ث١بٔبد ( )data busثؾ١ش ٠غّؼ ثمشاءح/وزبثخ وٍّخ وبٍِخ 16
ثذ ٚا٠ؼب ّ٠ىٓ لشاءح /وزبثخ ٔظف وٍّخ 8ثذ
ٌٙ -زا اٌّؼبٌظ ٔ 20بلً ػٕب (address bus) ٓ٠ٚثؾ١ش ٠غّؼ ثبٌزٛعٗ ي١ِ 1 -غب
ػٕبٚ .ٓ٠ٚثّب اْ ٌىً خٍ١خ ػٕٛاْ خبص ارا ّ٠ىٓ اٌزٛعٗ اٌ١ِ 1 ٝغب خال٠ب راوشح
ٛ٠ -عذ ف٘ ٟزا اٌّؼبٌظ ِ 14غغال .وً ِغغً ثطٛي 16ثذ.
انًسدالث
ّ٠ىٓ رمغ ُ١وً ِغغً ِٕٙب اٌ ٝلغّ ٓ١ثؾ١ش ٠ى ْٛوً عضء ثطٛي 8ثذّ٠ .ىٓ اٌزٛعٗ
اٌ ٝاٌّغغً ثبوٍّٗ ا ٚاٌ ٝعضء ِٓ اٌّغغً.
ف ٟؽ بٌخ اٌزٛعٗ اٌ ٝاٌّغغً ثأوٍّٗ فبْ اٌّغغً ثبوٍّٗ ٠زأصش ٚارا رٛعٕٙب اٌ ٝعضء ٚاؽذ
ِٕٗ ف ٛٙاٌز٠ ٞزبصش ٌٚىٓ اٌغضء االخش ال ٠زأصش.
Accumulator:AX
Base:BX
Count :CX
Data : DX
انًدًىعت انثبَُت:
ِ٘ ٟغّٛػخ رزى ِٓ ْٛخّغخ ِغغالد ٚؽٛي وً ِغغً 16ثذ .ال ّ٠ىٓ رمغُ١
اٌّغغالد اٌ ٝاعضاء ثً ٔزؼبًِ ِغ اٌّغغً ثبوٍّٗ ٚاٌغجت اْ ٘زٖ اٌّغغالد رؾزٞٛ
ػٍ ٝػٕبٚ ٓ٠ٚؽٛي وً ػٕٛاْ 16ثذ
SP
Bp
SI
DI
IP
٠ Stack pointer :Spإشش ػٍ ٝاخش ِؼط ٝرُ ادخبٌٗ اٌ ٝاي ٛ٘ stack . stack
ػجبسح ػٓ ِٕطمخ ف ٟراوشح اٌمشاءح ٚاٌىزبثخ RAMرغزخذَ ٌٍزخض ٓ٠اٌّإلذ عٛف
ٔزطشق ٌٙب ف ٟدسٚط لبدِخ.
٠ Base pointer :BPغزخذَ ٌٍزأش١ش ػٍِ ٝؼط ٝف ٟداخً اي stack
٠ Source index:SIؾز ٞٛػٍ ٝػٕٛاْ ِؼط ٝفِ ٟمطغ اٌج١بٔبد
٠ Destination Index :DIؾز ٞٛػٍ ٝػٕٛاْ ِؼ ٓ١فِ ٟمطغ اٌج١بٔبد
٠ Instruction Pointer :IPؾز ٞٛػٍ ٝػٕٛاْ االِش اٌزبٌ ٟاٌز٠ ٞغت اْ ٕ٠فزٖ
اٌّؼبٌظ ثؼذ أٙبء االِش اٌؾبٌ ٟأ ٞاالِش اٌزٕ٠ ٞفزٖ ؽبٌ١ب
**ِالؽظبد:
ِ -3مطغ اٌج١بٔبد االػبف١خ ٠ extra segmentغزخذَ ٌزخض ٓ٠اٌج١بٔبد االػبف١خ فٟ
ؽبٌخ ارا ٌُ ٠ىٓ ٕ٘بٌه ِىبٔب فِ ٟمطغ اٌج١بٔبد ّ٠ٚىٓ ا٠ؼب اعزخذاِٗ ؽز ٌٛٚ ٝوبْ
ٕ٘بٌه اِبوٓ فبسغخ فِ ٟمطغ اٌج١بٔبد .عٛف ٔش ٜرٌه ف ٟاٌذسٚط اٌّمجٍخ
انًدًىعت انثبنثت:
ِغّٛػخ ِغغالد اٌّمبؽغ ٟ٘ٚرؾز ٞٛػٍ ٝػٕب ٓ٠ٚثذا٠خ اٌّمبؽغ ٚؽٛي وً ِغغً
16ثذ ٚال ّ٠ىٓ رمغ ّٗ١أ٠ ٞغت اٌزؼبًِ ِؼٗ ثبوٍِّٗ 4 ٟ٘ٚ.غغالد ()registers
CS
DS
SS
ES
ػٍ ٝوً ِجشِظ اْ ٠ف٘ ُٙزا اٌّغغً ثشىً ع١ذ ؽز٠ ٝغزط١غ اْ ٠جشِظ ثشىً ع١ذ .رمغُ
اٌشا٠بد اٌ ٝصالصخ الغبَ:
-راَبث غُز يسخعًهت :أ ٞأٙب ال رف١ذ ف ٟاٌؾىُ ػٍ ٝاخش ػٍّ١خ ِٛ ٟ٘ٚعٛدح فمؾ فٟ
ؽبٌخ رط٠ٛش اٌّؼبٌظ سثّب ٠ؾزبع ْٛاٌ ٝسا٠بد اػبف١خ فّ١ىٓ اعزغالي ٘زٖ اٌشا٠بد .فٟ
اٌٛلذ اٌؾبٌٔ ٟؾٓ ٌغٕب ثؾبعخ اٌٙ١ب
-راَبث انىضع ٟ٘ٚ :اٌشا٠بد اٌز ٟرزأصش ٚرزغ١ش ؽغت ٚػغ اٌؼٍّ١بد اٌز ٟرم َٛثٙب
ٚؽذح اٌؾغبة ٚإٌّطك ف ٟاٌّؼبٌظ
-راَبث انسُطزة ٟ٘ٚ :سا٠بد اٌّجشِظ ٠زؾىُ ثٛػؼٙب فبرا ٚػغ ثذاخٍٙب اٌمّ١خ 1رجمٝ
٘زٖ اٌمّ١خ ؽز٠ ٝغ١ش٘ب اٌّجشِظ ف ٟاٌجشٔبِظ ػٓ ؽش٠ك اٚاِش ثشِغخ خبطخ ثٙب
ِغغً اٌشا٠بد ف ٟاٌّؼبٌظ ٠ 8086ؾز ٞٛػٍ 7 ٝسا٠بد غ١ش ِغزخذِخ 6سا٠بد ٚػغ
3 ٚسا٠بد ع١طشح
X X X X OF DF IF TF SF ZF X AF X PF X CF
انًىاسٍَ
-1انًُشاٌ انثُبئٍ :سِٛص ٘زا اٌّ١ضاْ ٚ 1 , 0ثّغبػذح ٘زٖ اٌشِٛص ٠زُ رىٓ٠ٛ
االػذاد ف٘ ٟزا اٌّ١ضاْ
االػذاد اٌزبٌ١خ غ١ش طؾ١ؾخ الْ ثٙب سِٛص ال رٕزٌّ ٟشِٛص اٌّ١ضاْ
اٌغجت اٌؼذد
الْ اٌشِض ١ٌ 2ظ ِٓ سِٛص اٌّ١ضاْ 102
ثغجت اٌشِض 3فٙزا اٌشِض ال ٠زجغ ٌشِٛص اٌّ١ضاْ 11013
االػذاد اٌزبٌ١خ غ١ش طؾ١ؾخ الْ ثٙب سِٛص ال رٕزٌّ ٟشِٛص اٌّ١ضاْ
اٌغجت اٌؼذد
الْ اٌشِض ١ٌ Gظ ِٓ سِٛص اٌّ١ضاْ 102G
ثغجت اٌشِض Kفٙزا اٌشِض ال ٠زجغ ٌشِٛص اٌّ١ضاْ 1101K3
ٌزؾ ً٠ٛأ ٞػذد ف ٟأ١ِ ٞضاْ اٌ ٝاٌّ١ضاْ اٌؼششٔ ٞؼًّ ِب :ٍٟ٠
ٔ-1ؾٛي اٌؼذد اٌّشاد رؾ ٍٗ٠ٛاٌ ٝطٛسح ِغّٛع اٌمٜٛ
ٔ-2غّغ اٌمٌٍ ُ١ؾظٛي ػٍ ٝاٌمّ١خ اٌّطٍٛثخ
االعبط (اٌّ١ضاْ)
اٌخبٔخ n
اٌؼششٞ
اٌّ١ضاْ اٌضٕبئٟ
ِضبي اخش ِؼط ٝاٌؼذد 1Aف ٟاٌّ١ضاْ اٌغبدط ػشش ،عذ لّ١خ ٘زا اٌؼذد فٟ
اٌّ١ضاْ اٌؼشش.ٞ
b=16 n=2 ٕ٘ب:
X=1*161+A*160
X=1*16+10*1
X=16+10
X=26
يالحظت:
اٌغبدط ػشش اٌؼششٞ
A 10
B 11
C 12
D 13
E 14
F 15
يثبل اخز:
وً خبٔخ ف١ِ ٟضاْ اٌغبدط ػشش ػجبسح ػٓ 4خبٔبد ف ٟاٌّ١ضاْ اٌضٕبئٟ
ٌف ُٙػٍّ١خ اٌزؾ٠ ً٠ٛغت اْ ٔؼشف ِب :ٍٟ٠
ٌىً خبٔخ ٛ٠عذ ٚصْ ٚٚصٔٙب ٘ ٛاالعبط ٌٍمٛح اٌّىبْ ٔبلض ٚاؽذ
أbn-1 ٞ
ف ٟاٌغذٚي اٌزبٌ ٟل ُ١اٌخبٔبد ف ٟاٌّ١ضاْ اٌضٕبئb=2 ٟ
اال ٌٝٚاٌضبٔ١خ اٌضبٌضخ اٌشاثؼخ اٌخبِغخ اٌغبدعخ اٌغبثؼخ اٌضبِٕخ
128 64 32 16 8 4 2 1
0001 0010
ايثهت:
ِؼط ٝاٌؼذد 10110011ف ٟاٌّ١ضاْ اٌضٕبئ ٟعذ اٌؼذد ف ٟاٌّ١ضاْ اٌغبدط
ػشش
انحم:
ٔؼًّ ِغّٛػخ وً ِغّٛػخ ػجبسح ػٓ 4خبٔبد ٔجذأ دائّب ِٓ آٌ١ّ١
اٌّغّٛػخ االٚ 0011 :ٌٝٚؽغت اٌغذٚي ٘ ٟاٌشلُ 3
اٌّغّٛػخ اٌضبٔ١خٚ 1011 :ؽغت اٌغذٚي ٘B ٟ
اٌؾً إٌٙبئ:ٟ
(10110011)2=(B3)16
ِالؽظخ ِّٙخ :ارا وبْ ػذد اٌخبٔبد الً ِٓ ٔ 4ؼ١ف اطفبس ػٍ٠ ٝغبس اٌؼذد
ؽزٔ ٝىًّ اٌّغّٛػخ اٌ 4 ٝخبٔبد
يثبل:
ِؼط ٝاٌؼذد اٌزبٌ ٟف ٟاٌضٕبئ 1010110 ٟعذ اٌؼذد ف ٟاٌغبدط ػشش
اٌّغّٛػخ االٚ 0110 :ٌٝٚؽغت اٌغذٚي ٘زٖ 6
اٌّغّٛػخ اٌضبٔ١خ ٟ٘ٚ 101 :رزى 3 ِٓ ْٛخبٔبد ٌزا ػٍٕ١ب اْ ٔؼ١ف 0ػٍٝ
٠غبس اٌّغّٛػخ ٌٕؾظً ػٍ 4 ٝخبٔبد
اٌّغّٛػخ اٌغذ٠ذحٚ 0101 :ؽغت اٌغذٚي ٘5 ٟ
اٌؾً إٌٙبئٟ
)1010110)2=(53)16
-اٌخبٔخ اال ٟ٘ ٌٝٚاٌخبٔخ اٌ ٟ٘ٚ ّٕٝ١راد اٌمّ١خ اٌظغشٚ ٜلّ١زٙب 20=1
اٌخبٔخ اٌز ٟرٍٙ١ب ٘ ٟاٌخبٔخ اٌضبٔ١خ ٟ٘ٚرمغ ػٍ٠ ٝغبس٘ب ٘ٚىزا
-ػٍّ١خ اٌزؾ ً٠ٛػٓ ؽش٠ك اٌمغّخ ٔمغُ اٌؼذد اٌؼشش ٞػٍٚ 2 ٝاٌخبٔخ اٌزٟ
ػٍٙ١ب اٌذٚس رأخز ثبل ٟاٌمغّخ ٔٚمغُ إٌبرظ اٌظؾ١ؼ ِشح صبٔ١خ ػٍٚ 2 ٝرأخز
اٌخبٔخ اٌزبٌ١خ ثبل ٟاٌمغّخ ٔغزّش ف٘ ٟزٖ اٌطش٠مخ ؽز٠ ٝى ْٛاٌّمغ َٛالً ِٓ
اٌّمغ َٛػٍ ٗ١فزأخز اٌخبٔخ اٌؾبٌ١خ لّ١خ اٌّمغٕ٠ٚ َٛز ٟٙاٌزؾ.ً٠ٛ
ٔم َٛاالْ ثىزبثخ األٌغٛس٠ضُ
.1ػٛع n=1
.2ػٛع اٌّمغ َٛػٍb=2 ٗ١
.3ػٛع اٌؼذد اٌؼشش ٞف ٟاٌّمغx َٛ
.4ؽبٌّب xاوجش ا٠ ٚغبٔ b ٞٚفز
لغُ xػٍb ٝ
ػغ اٌجبل ٟف ٟاٌخبٔخ n
ػغ ف x ٟإٌبرظ اٌظؾ١ؼ
اػف ٌ 1شلُ اٌخبٔخ n
.5ػغ Xف ٟاٌخبٔخ n
ِضبي:
ِؼط ٝاٌؼذد 12ػشش ٞؽٛي اٌؼذد اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
اٌؾً:
سلُ اٌخبٔخ n اٌؼذد اٌضٕبئٟ اٌؼذد إٌبرظ اٌظؾ١ؼ اٌجبلً٘ ٟ
X>=b
1
ٔؼُ 12
2 0 0 6
ٔؼُ 6
3 00 0 3
ٔؼُ 3
4 100 1 1
ال 1
1100
ؽش٠مخ اخشٔ ٜمغُ ػٍ 2 ٝؽز٠ ٝى ْٛإٌبرظ طفش
ِضبي:
ِؼط ٝاٌؼذد اٌؼشش 57 ٞؽٛي اٌؼذد اٌ ٝاٌضٕبئٟ
اٌّمغ َٛاٌّمغ َٛػٍ ٗ١إٌبرظ اٌظؾ١ؼ اٌجبلٟ
1 28 2 57
0 14 2 28
0 7 2 14
1 3 2 7
1 1 2 3
1 0 2 1
اٌؾً إٌٙبئٟ
(104)10= (01101000)2
ِالؽظخ :عّ١غ اٌطشق اٌز ٟرُ ششؽٙب ف٘ ٟزا اٌذسط رٕبعت االػذاد اٌّٛعجخ
فمؾ
ف ٟاٌذسط اٌمبدَ عٛف ٔزطشق اٌ ٝاالػذاد اٌّٛعٙخ (اٌغبٌجخ ٚاٌّٛعجخ)
ثبالخض االػذاد اٌغبٌجخ
رمغُ االػذاد اٌ ٝلغّ ٓ١اػذاد ِٛعجخ ٚاػذاد عبٌجخ ٚاٌغإاي ٘ ٛو١ف ّ٠ىٓ اْ
ٔفشق ث٘ ٓ١زٖ االػذاد.
ِٓ اٌّؼشٚف اْ اٌؼذد ف ٟاٌّ١ضاْ اٌضٕبئ٠ ٟزى ِٓ ْٛثزبد .اٌجذ االٌٝٚ
اٌّٛعٛدح ف ٟاٌغٙخ اٌ ٟ٘ ّٕٝ١اٌجذ راد اٌمّ١خ اٌظغشٚ ٜاِب اٌجذ اٌّٛعٛدح
ف ٟاٌغٙخ اٌ١غش ٜف ٟٙثذ االشبسح .ارا وبٔذ لّ١زٙب 1فبٌؼذد عبٌت ٚارا وبٔذ
لّ١زٙب 0فبٌؼذد ِٛعت.
ارا ٌّؼشفخ ٔٛع اٌؼذد ٠غت رؾ ٍٗ٠ٛاٌ ٝاٌّ١ضاْ اٌضٕبئٌٚ .ٟىٓ ٕ٘بٌه ؽشق
اخشّ٠ ٜىٓ ثّغبػذرٙب ِؼشفخ ٔٛع اٌؼذد .ف ٟاٌجذا٠خ ٔشوض ػٍ ٝاٌطش٠مخ
اال.ٌٝٚ
يثبلِ :ؼط ٝاٌّزغ١ش ٛٔ ِٓ Xع ً٘ x=7DH . byteلّ١خ اٌّزغ١ش لّ١خ
ِٛعجخ اَ عبٌجخ؟ اٌشِض ٠ Hذي ػٍ ٝاٌّ١ضاْ اٌغبدط ػشش
انحم :
اٚال ػٍٕ١ب اْ ٔؾٛي اٌؼذد اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
7DH=011111012
ارا ٔظشٔب اٌ ٝاٌجذ االخ١شح ف ٟاٌغٙخ اٌ١غشٔ ٜش ٜاْ لّ١زٙب ٌ 0زٌه لّ١خ
اٌّزغ١ش ِٛعجخ.
يثبل اخز:
X=92H
92H=10010010اٌمّ١خ عبٌجخ الْ اٌجذ االخ١شح اٌّغإٌخ ػٓ االشبسح
لّ١زٙب 1
اسخُخبج :اوجش لّ١خ ِٛعجخ ٌٍّزغ١ش ٟ٘ٚ 01111111 ٟ٘ xرغب7FH ٞٚ
ٟ٘ٚرغب 127 ٞٚػششٞ
االعذاد انسبنبت
ارا
)6)10=(00000110)2
انخطىة انثبَُتٔ :جذأ ثىزبثخ اٌؼذد ِٓ عٙخ اٌ ٓ١ّ١وّب ٘ ٛؽز ٝاْ ٔظبدف خبٔخ لّ١زٙب
ٚاؽذ فٕغغٍٙب ٔٚؼىظ وً اٌخبٔبد اٌز ٟثؼذ٘ب (أٔ ٞغغً ثذال ِٓ 1طفش ٚثذال ِٓ
طفش )1
(-6)10=111110102=(FA)16
طزَقت اخزي هٍ كًب َهٍ:
االوايز
)1االيز MOV
انصُغت االونًٕ٘ :بٌه ِغّٛػخ ِٓ االٚاِش اٌز ٟثؾبعخ اٌِ ٝظذس ٘ٚذف .اٌّظذس ال
٠زغ١ش ٚأّب اٌٙذف اٌز٠ ٞزغ١ش
MOV OP1,OP2
يثبل:
BL=50H ِؼطٚ AL=20H ٝ
MOV AL,BL
MOV BL,60H
ٔؼًّ عذٚي ِزبثؼخ ٌّشب٘ذح اٌزغ١١شاد
يالحظبث
)1االِش MOVال ٠إصش ػٍ ٝاٌشا٠بد flagsأ ٞاْ ل ُ١اٌشا٠بد ال ٠زغ١ش ٚأّب رؾبفع
ػٍ ٝاٌم ُ١اٌغبثمخ
٠)2غت اْ ٠ى ْٛاٌّظذس ِٓ ٔفظ وجش اٌٙذف (ثب٠ذ ،ثب٠ذ) ا)word , word( ٚ
يثبل:
MOV AX ,CX MOV DL,AL MOV CH,20H
ايب هذِ االيثهت بعضهب غُز صحُح
اٌغجت اٌٛػغ االِش
الْ اٌّظذس اوجش ِٓ اٌٙذف غ١ش طؾ١ؼ MOV AL,BX
ال ّ٠ىٓ رخض ٓ٠ػذد ِٓ صالس ِٕبصي ف ٟاٌّ١ضاْ غ١ش طؾ١ؼ MOV AL,123H
16فِ ٟغغً ثىجش 8ثزبدّ٠ .ىٓ رخض ٓ٠لّ١خ
ثىجش ِٕضٌخ إِ ٚضٌزٓ١
الْ 120=78Hأ ٞأٗ ٠زىِٕ ِٓ ْٛضٌزٓ١ طؾ١ؼ MOV BL,120
غ١ش طؾ١ؼ الٔٗ فِ ٟغغً ثىجش 16ثذ ّ٠ىٓ رخض ٓ٠لّ١خ MOV DX,12345H
ثىجش ِٕ 4بصي ػٍ ٝاالوضش ف ٟاٌّ١ضاْ اٌغبدط
ػشش
حًبرٍَ:
DL ,فّ١ب ثٕٙ١ب .أ ٞاْ ٠ DLأخز لّ١خ CL )1اوزت ِمطغ ثشٔبِظ ٠جذي لCL ُ١
٠ CL ٚأخز لّ١خ DL
MOV AL,DL
MOV DL,CL
MOV CL,AL
20 11
DH DL
)2االيز ADD
ADD OP1, OP2
Op1=op1+op2
اعّغ لّ١خ اٌّظذس ٚلّ١خ اٌٙذف ٚاؽفع إٌز١غخ ف ٟاٌٙذف
يثبل:
Mov dh,41H
Add dh,3
ثؼذ رٕف١ز اٌّمطغ اٌّغغً ٠ dhظجؼ 44H
يثبل :
Mov AL , 6
MOV CL , 8
ADD AL , CL
خذول يخببعت:
االِش CL AL
؟؟ ؟؟
Mov AL , 6 ؟؟ 06H
MOV CL , 8 08H 06H
ADD AL , CL 08H 0EH
يالحظبث:
-؟؟ :رؼٕ ٟإٔب ال ٔؼٍُ ِب ثذاخٍٗ
-ػٍٕ١ب رغغ ً١اٌم ُ١ف ٟاٌّ١ضاْ اٌغبدط ػشش ػٍ ٝشىً ِٕضٌز ٓ١ف ٟاٌّغغالد راد 8
ثذ ٚػٍ ٝشىً ِٕ 4بصي ف ٟاٌّغغالد راد 16ثذ.
يثبل:
DX=1024H AL=06H
-وً لّ١خ ػذد٠خ رجذأ ثؾشف ٠ A , B ,C ,D ,E ,Fغت اْ ٔغغً 0ػٓ ٠غبس٘ب
يثبل:
Mov DL , 0D1H
ADD CX , 0A123H
رّش : ٓ٠اوزت ِمطغ ثشٔبِظ ٕ٠فز ِب CL=2*AL+BL :ٍٟ٠
اٌؾً:
Mov CL,AL
ADD CL ,CL
ADD CL,BL
)3االيز SUB
sub op1 ,op2
op1=op1-op2
اؽشػ اٌّظذس ِٓ اٌٙذف ٚخضْ إٌز١غخ ف ٟاٌٙذف
حًزٍَ:
اوزت ِمطغ ثشٔبِظ ٠ؾغت ؽبطً اٌفشق ثٚ DL ٓ١اٌّغغً ٠ٚ BLؾفع إٌز١غخ فٟ
BH
انحم:
Mov BH , DL
Sub BH , BL
)4االيز INC
٘زا االِش ثؾبعخ اٌٚ operand ٝاؽذ فمؾ
Inc op1
Op1=op1+1
ة1 وجش اٌٙذف ِ
)5االيز DEC
٘زا االِش ثؾبعخ اٌٚ operand ٝاؽذ فمؾ
Dec op1
Op1=op1-1
اؽشػ ِٓ ٚ OP1اؽذ
انخعبيم يع انذاكزة
ّ٠ىٓ اٌمشاءح ِٓ اٌزاوشح ا ٚاٌىزبثخ اٌ ٝاٌزاوشح .ػٕذِب ٔش٠ذ اٌزٛعٗ اٌ ٝاٌزاوشح ٌٍىزبثخ
ا ٚاٌمشاءح ػٍٕ١ب اْ ٔم َٛثّب :ٍٟ٠
-ػغ ف ٟاٌّغغً SIا DI ٚا BX ٚػٕٛاْ اٌخٍ١خ اٌّطٍٛثخ
-ػغ اٌم ُ١اٌؼذد٠خ اٌز ٟرش٠ذ وزبثزٙب فِ ٟغغً ِالئُ ِٓ ؽ١ش اٌىجش
-اعزخذَ االِش ٚ MOVػغ اٌّغغً اٌز٠ ٞؾ ٞٛػٕٛاْ اٌخٍ١خ ث ٓ١الٛاط ِشثؼخ
ِضبي:
أوزت ِمطغ ثشٔبِظ ٠خضْ ف ٟاٌخٍ١خ 102Hاٌمّ١خ 30H
اٌؾً:
Mov si,102H
Mov AL, 30H
Mov [SI],AL
ف ٟؽبي وزجٕب ثذال ِٓ MOV [si],ALاالِش ٔ MOV si,ALؾظً ػٍ ٝخطأ الْ
اٌّزشعُ ٠ف ُٙثبٕٔب ٔش٠ذ اْ ٔخضْ لّ١خ ALف ٟاٌّغغً ٔٚ SIؾٓ ٔؼٍُ اْ اٌّغغً si
16ثذ ٚاٌّغغً 8 ALثذ ارا ال رٛاعذ ِالئّخ ث ٓ١اٌّظذس ٚاٌٙذف
ثّٕ١ب MOV [si],ALػغ لّ١خ ALف ٟاٌخٍ١خ اٌز ٟػٕٛأٙب ِخضْ ف ٟاٌّغغً
si
ِالؽظخ ِّٙخ عذا :ال ٠غٛص اْ ٠ى ْٛاٌٙذف خٍ١خ ف ٟاٌزاوشح ٚاٌّظذس ا٠ؼب خٍ١خ فٟ
اٌزاوشح
ِضبي X :اعُ ِزغ١ش
االِضٍخ اٌزبٌ١خ غ١ش طؾ١ؾخ
]Mov [si],[bx add [di],X
رّش : ٓ٠اوزت ِمطغ ثشٔبِظ ٠مشأ فؾ ٜٛاٌخٍ١خ ٠ٚ 440Hؾفظٙب ف ٟاٌّغغً DH
اٌؾً:
Mov DI, 440H
]Mov DH, [DI
رّش :ٓ٠اوزت ِمطغ ثشٔبِظ ٠غّغ فؾ ٜٛاٌخٍ١خ ٚ 10Hفؾ ٜٛاٌخٍ١خ ٠ٚ 11Hخضْ
إٌز١غخ ف ٟاٌخٍ١خ 12H
اٌؾً:
Mov si,10H
]Mov ah,[si
Inc si
]Add ah,[si
Inc si
Mov [si],ah
حًزٍَ يهى خذا:
انًقبرَت
ف ٟثؼغ االؽ١بْ ٔؾزبط اٌِ ٝمبسٔخ ث ٓ١اٌّظذس ٚاٌٙذف ِ .ضال افؾض ارا وبْ اٌّغغً
٠ ALؾز ٞٛػٍ ٝاٌمّ١خ 6ارا وبْ اٌغٛاة ٔؼُ اػف اٌمّ١خ ٌٍّ 4غغً ٚاال اؽشػ ِٓ 3
لّ١خ اٌّغغً ِٓ .اٌظ١غخ اٌغبثمخ ٠زجٌٕ ٓ١ب إٔب ثؾبعخ الِش ٌ١مبسْ ث ٓ١فؾ ٜٛاٌّغغً
ٚ ALاٌمّ١خ اٌؼذد٠خ .6االِش ٘ ٛاِش اٌّمبسٔخ CMP
نهخذكزة
ِغغً اٌشا٠بد ف ٟاٌّؼبٌظ ٠ 8086ؾز ٞٛػٍ 7 ٝسا٠بد غ١ش ِغزخذِخ 6سا٠بد ٚػغ
3 ٚسا٠بد ع١طشح
X X X X OF DF IF TF SF ZF X AF X PF X CF
انقفش
ٔؾٓ ٔؼٍُ اْ اٌجشٔبِظ ػجبسح ػٓ اٚاِش ِخضٔخ ف ٟخال٠ب اٌزاوشح ٚاٌّؼبٌظ ٕ٠فز اٚاِش
اٌجشٔبِظ ثبٌزشر١ت ِضبي:
MOV AL,2
ADD AL, BL
INC DI
فٕ٠ ٛٙفذ االِش االٚي MOV
صُ ٕ٠زمً اٌ ٝاالِش اٌضبٔADD ٟ
صُ ٕ٠زمً اٌ ٝاالِش اٌضبٌش ٠ٚ INCغزّش ٘ىزا اٌٙٔ ٝب٠خ اٌجشٔبِظ
فبرا اسدٔب اْ ٔغ١ش رشر١ت اٌزٕف١ز ا ٚاْ ال ٕٔفز ثؼغ االٚاِش فال ثذ ِٓ اعزخذاَ اٚاِش
اٌمفض.
اٌمفض فٌ ٟغخ االعّجٍ٠ ٟمغُ اٌ ٝلغّ ِٓ ٓ١ؽ١ش اٌششٚؽ
-1اٌمفض اٌّششٚؽٕ٘ :ب رزُ ػٍّ١خ اٌمفض ف ٟؽبٌخ ارا رؾمك اٌششؽ اٌّطٍٛة ِ .ضال الفض
ارا وبٔذ إٌز١غخ عبٌجخ .ا ٚالفض ارا وبٔذ إٌز١غخ طفش
-2اٌمفض غ١ش اٌّششٚؽٕ٘ :ب ٠زُ اٌمفض ثذ ْٚأ ٞششؽ ثّغشد ٚطٛي اٌّؼبٌظ اٌ٘ ٝزا
االِش ٠زُ اٌمفض
اٚاِش اٌمفض اٌّششٚؽ وض١شح ٔأخز ف ٟوً ِٕبعجخ عضء ِٕٙب
يالحظبث :
-االِش ٠ JEؼًّ ِضً ٔ JZفظ اٌشٟء
-االِش ٠ JNEؼًّ ِضً JNZ
ارا ٔظشٔب اٌ ٝإٌز١غخ ثبٌٍ ْٛاالصسق ٔش ٜأٙب ال رغب ٞٚطفش الٔٗ ٠ىف ٟاْ ٠ىْٛ
ثبٌٕز١غخ ػٍ ٝااللً 1ؽز ٝرى ْٛإٌز١غخ ال رغب ٞٚطفش ارا ZF=0
ارا ٔظشٔب اٌ ٝاٌجذ االخ١شح ف ٟإٌز١غخ ف ٟاٌغٙخ اٌ١غشٔ ٜغذ لّ١زٙب طفش ارا إٌز١غخ
ِٛعجخ ١ٌٚغذ عبٌجخ ارا SF=0
ارا ٔظشٔب اٌجذ االخ١شح ف ٟاٌؼذد االٚي +اٌجذ االخ١شح ف ٟاٌؼذد اٌضبٔ ٟإٌز١غخ أٙب ٌُ
رشعً Carryاٌ ٝاٌجذ اٌزبعؼخ ٌُٚرأخز ِٓ borrowاٌزبعؼخ ارا CF=0
إٌز١غخ :وً اسثغ ثزبد رّضً ِٕضٌخ ف١ِ ٟضاْ اٌغبدط ػشش ارا
01111001=79H
ِ ُٙعذا :رزوش
:C )1رؼٕ1 ٟ
1+1+1------------------------s=1 c=1)2
رّش87H+93H:ٓ٠
87H=10000111 83H=10010011
C C C C
اٌؼذد االٚي 1 0 0 0 0 1 1 1
اٌؼذد اٌضبٟٔ 1 0 0 1 0 0 1 1
إٌز١غخ 0 0 0 1 1 0 1 0
رّش: ٓ٠
عغً االٚاِش اٌز ٟعٛف ٕ٠فز٘ب اٌّمطغ اٌغبثك ف ٟوً ؽبٌخ ِٓ اٌؾبالد اٌزبٌ١خ:
AL=8
CMP AL,6
MOV DX,8
JMP T2
T2:NOP
AL=6
CMP AL,6
JE T1
T1:MOV BL ,7
T2:NOP
رّش:ٓ٠
اوزت ِمطغ ثشٔبِظ ٠ؼغ اٌمّ١خ 20Hف ٟاٌخال٠ب اٌّٛعٛدح ف ٟاٌّغبي 1ؽز8 ٝ
اٌؾً:
MOV BL,20H
MOV SI,1
T2:CMP SI,9
JE T1
MOV [SI],BL
INC SI
JMP T2
T1:NOP
ِالؽظخٌ :زؾذ٠ذ ػٕٛاْ ف ٟاٌجشٔبِظ ؽزٔ ٝغزط١غ اْ ٔمفض اٌ ٗ١خالي اٌجشٔبِظ ٔغغً
T10:INC SI االعُ ِزجٛػب ثٕمطزِ ٓ١ضال
TO_NEXT:ADD SI,30H
٠ؾك اعزؼّبي اٌىٍّبد ٚاالسلبَ ثششؽ اْ ال ٠ى ْٛاالعُ ػجبسح ػٓ وٍّخ ِؾغٛصح ٌٍغخ
INC االعّجٍِ ٟضً NOP
٠-غت اْ رى ْٛاعّبء اٌؼٕبِ ٓ٠ٚخزٍفخ فال ٠غٛص اعزؼّبي ٔفظ االعُ اوضش ِٓ ِشح
ٚاؽذح
ٌمذ رؾذصٕب ف ٟاٌذسط اٌغبثك ػٓ أٛاع اٌمفض ٚرطشلٕب اٌ ٝثؼغ اٚاِش اٌمفض .ف٘ ٟزا
اٌذسط عٛف ٔزطشق اٌ ٝاٚاِش عذ٠ذح.
ف٘ ٟزا اٌذسط عٛف ٔزؾذس ػٓ اٌشا٠بد ()PF , AF , OF
ٌٍززوشح:
انزاَت PF
٘زٖ اٌشا٠خ رأخز اٌمّ١خ 1ارا وبْ ػذد اٌجزبد اٌز ٟلّ١زٙب 1ف ٟاٚي صّبٔ١خ ثزبد ػٓ
اٌ ٓ١ّ١صٚع١ب ٚ .رأخز اٌمّ١خ طفش ارا وبْ ػذد اٌجزبد اٌز ٟلّ١زٙب 1فشد٠ب.
ِالؽظبد ِّٙخ :اٌظفش ٠ؼزجش صٚعٟ
ِضبي:
عذ ٚػغ اٌشا٠خ PFثؼذ اٌؼٍّ١خ اٌؾغبث١خ اٌزبٌ١خ
20H-20H
اٌؾً :
رزوش :عذٚي اٌغّغ ف ٟاٌّ١ضاْ اٌضٕبئ:ٟ
:a,bػجبسح ػٓ ثزبد
:Dؽبطً اٌطشػ D=a-b
borrow :bرؼٕ ٟاْ ٕ٘بٌه ؽبعخ ألخز لّ١خ ثمذس اٌّ١ضاْ اٌزٔ ٞزؼبًِ ِؼٗ ِٓ اٌجذ
اٌز ٟرٍ ٟاٌجذ اٌؾبٌ١خ .اٌمظذ ف ٟلّ١خ ثبٌمذس اٌّ١ضاْ ف ٟاٌّ١ضاْ اٌؼششٔ ٞأخز ٚ 10فٟ
اٌّ١ضاْ اٌضٕبئٔ ٟأخز لّ١خ ثمذس ٚ 2ف ٟاٌّ١ضاْ اٌغبدط ػشش ٔأخز لّ١خ ثمذس 16
اٌؼذد االٚي 0 0 1 0 0 0 0 0
اٌؼذد اٌضبٟٔ 0 0 1 0 0 0 0 0
إٌز١غخ 0 0 0 0 0 0 0 0
فٕٙب ٔش ٜاْ إٌز١غخ إٌٙبئ١خ ال رؾز ٞٛػٍ ٝثزبد لّ١زٙب 1أ ٞاْ ػذد اٌجزبد اٌز ٟلّ١زٙب
ٛ٘ 1طفش
PF=1
رّش:ٓ٠
عذ ٚػغ اٌشا٠خ PFثؼذ اٌؼٍّ١خ اٌزبٌ١خ:
2AH+71H=00101010+01110001
C C
اٌؼذد االٚي 0 0 1 0 1 0 1 0
اٌؼذد اٌضبٟٔ 0 1 1 1 0 0 0 1
إٌز١غخ 1 0 0 1 1 0 1 1
ػذد اٌجزبد اٌز ٟلّ١زٙب 1ف ٟإٌز١غخ ٘٘ٚ 5 ٛزا اٌؼذد ٘ ٛفشدٌ ٞزٌه pf=0
عذ ٚػغ اٌشا٠خ PFثؼذ اٌؼٍّ١خاٌزبٌ١خ:
2FH-79H=00101111-01111001
b b b b
0اٌؼذد االٚي 0 1 0 1 1 1 1
0اٌؼذد اٌضبٟٔ 1 1 1 1 0 0 1
إٌز١غخ 1 0 1 1 0 1 1 0
PF=0
اٌّالؽظخ اٌضبٔ١خ ٌٛ:وبٔذ إٌز١غخ اوجش ِٓ 8ثزبد ِ .ضال 16ثذ فبٕٔب ٕٔظش اٌ 8 ٝثزبد
االٚي ِٓ عٙخ اٌ ٓ١ّ١فمؾ ٚاْ ثبل ٟاٌجزبد ال رإصش ػٍ ٝاٌشا٠خ PF
ِضال ٌٛ :وبٔذ إٌز١غخ
1001010011110000
فٕٙب ػذد اٌجزبد اٌز ٟلّ١زٙب 1ف ٟاٌجزبد اٌضّبٔ١خ اال 4 ٛ٘ ٌٝٚارا pf=1
انزاَت AF
رأخز ٘زٖ اٌشا٠خ 1ارا اٌجذ اٌخبِغخ اخزد ِٓ اٌجذ اٌشاثؼخ Carryا ٚارا اخزد اٌشاثؼخ
ِٓ اٌخبِغخ . borrowثبالخزظبس ٕٔظش اٌ ٝاٌجذ اٌخبِغخ ارا وبْ فٛلٙب )carry( C
ا )borrow( b ٚفبْ ٚ AF=1اال AF=0
اِضٍخ:
2AH+6AH=00101010+01101010
C C C C
0اٌؼذد االٚي 0 1 0 1 0 1 0
0اٌؼذد اٌضبٟٔ 1 1 0 1 0 1 0
إٌز١غخ 1 0 0 1 0 1 0 0
أظش اٌ C ٝثبٌٍ ْٛاالؽّش .اٌجذ اٌخبِغخ فٛلٙب Cالْ اٌجذ اٌشاثؼخ اػطذ اٌجذ
اٌخبِغخ ٌٙ CARRYزا اٌغجت AF=1
رّش:ٓ٠
23H+6AH=00100011+01101010
C C C
0اٌؼذد االٚي 0 1 0 0 0 1 1
0اٌؼذد اٌضبٟٔ 1 1 0 1 0 1 0
إٌز١غخ 1 0 0 0 1 1 0 1
ٕ٘ب AF=0الْ اٌجذ اٌخبِغخ ٌُ رأخز ِٓ اٌشاثؼخ ٌُٚ Cرؼط ٟاٌشاثؼخ b
انزاَت OF
رؼزجش ٘زٖ اٌشا٠خ ِّٙخ عذا الٔٙب رؼط ٟاٌّجشِظ ِؼٍِٛخ ِّٙخ عذا ػٓ إٌز١غخ إٌٙبئ١خ.
فؼٕذِب ال ّ٠ىٓ اظٙبس إٌز١غخ ف ٟاٌّىبْ اٌّؾذد ٌٙب فبْ إٌز١غخ رى ْٛغ١ش طؾ١ؾخ
ٚؽز٠ ٝؼشف اٌّجشِظ ثبٔٙب غ١ش طؾ١ؾخ ٠زٛعٗ اٌ٘ ٝزٖ اٌشا٠خ.
ِضال :
ADD AL,BL
اٌّمظٛد ٕ٘ب اْ ٔغّغ ٌٍّغغً ALفؾ ٜٛاٌّغغً ٔٚ BLؾفع إٌز١غخ ف ٟاٌّغغً
ٌٛ . ALوبٔذ إٌز١غخ اوجش ِٓ ثب٠ذ ػٍ ٝعج ً١اٌّضبي ثؾبعخ اٌ ٝاوضش ِٓ صّبٔ١خ ثزبد
فبْ اٌّغغً ٠ ٌٓ ALغزط١غ ؽفع إٌز١غخ إٌٙبئ١خ أّب ٠ؾفع عضء ِٕٙب ٘ٚزٖ إٌز١غخ
رى ْٛغ١ش طؾ١ؾخ ٕ٘ب OF=1
ثبالخزظبس :ارا وبٔذ إٌز١غخ غ١ش ِٕطم١خ فبْ OF=1
اٌ١ه ثؼغ اٌؾبالد اٌز ٟرأخز OFاٌمّ١خ 1
اِضٍخ:
71H+76H=01110001+01110110
ٕ٘ب OF=1الْ اٌؼذد االٚي ِٛعت ٚاٌضبِٔٛ ٟعت ٚإٌز١غخ عبٌجخ .ال ّ٠ىٓ اْ ٔغّغ
ػذدِٛ ٓ٠عجٔٚ ٓ١ؾظً ػٍٔ ٝز١غخ عبٌجخ.
ششػ اٌّشىٍخ:
71H=7*16+1=113 76H=7*16+6=118
113+118=231
٘ٚزٖ إٌز١غخ اٌّٛعجخ ال ّ٠ىٓ اْ رؾفع فِ ٟغغً ِٓ ٔٛع ثب٠ذ اٌز٠ ٞؾز ٞٛػٍ8 ٝ
ثزبد الٔٗ اٌجذ االخ١شح ٌالشبسح ارا ٠جمٌ ٝذٕ٠ب 7ثزبد ٚاوجش لّ١خ ّ٠ىٓ ؽفظٙب ف ٟعجخ
ثزبد ٘ ٟػٕذِب رى ْٛعّ١غ اٌجزبد اٌغجؼخ لّ١زٙب .1أٞ
01111111=7FH=7*16+15=127
ارا 231ال ّ٠ىٓ اْ رؾفع ف 7 ٟثزبد فزغزغً ثذ االشبسح ٌزؼغ ثٙب ثم١خ اٌمّ١خ فزظٙش
إٌز١غخ ٕ٘ب عبٌجخ .
ِضبي اخش:
B1H+96H=10110001+01000111
C C C
1اٌؼذد االٚي 0 1 1 0 0 0 1
1اٌؼذد اٌضبٟٔ 0 0 1 0 1 1 0
إٌز١غخ 0 1 0 0 0 1 1 1
ٕ٘ب OF=1الْ ػذد عبٌت اػفٕب ٌٗ ػذد عبٌت اخش فؾظٍٕب ػٍٔ ٝز١غخ ِٛعجخ ٘ٚزا
غ١ش ِٕطم . ٟأظش اٌ ٝاٌجذ اٌضبِٕخ ف ٟوً ػذد ٚإٌز١غخ.
رؾٍ ً١اٌّشىٍخ:
اٌؼذد االٚي ٘ ٛ٘ٚ 10110001 ٛػذد عبٌت أظش اٌ ٝاٌجذ اٌؾّشاء اٌز ٟرّضً
االشبسحٌّ .ؼشفخ لّ١زٗ ػٍٕ١ب اْ ٔغذ لّ١زٗ اٌّطٍمخ.
ٌٍٚؾظٛي ػٍٔ ٗ١ؼًّ ِب :ٍٟ٠
ٔ-ؼىظ ل ُ١وً اٌجزبد ِىبْ ٔ1غغً ِٚ 0ىبْ ٔ 0غغً 1
ٔؾظً ػٍ ٝاٌمّ١خ 01001110
ٔ-ؼ١ف ٌٍمّ١خ اٌغذ٠ذح 1
01001110+00000001
ٔؾظً ػٍٝ
01001111
01001111=4FH=4*16+15=79
ارا اٌؼذد االٚي ٘ -79 ٛػششٞ
االْ اٌ ٝاٌؼذد اٌضبٔ:ٟاٌؼذد 96H
ٛ٘ٚ 96H=10010110ا٠ؼب ػذد عبٌت أظش اٌ ٝثذ االشبسح ٌّؼشفخ لّ١زٗ ٔغزؼٓ١
ثبٌمّ١خ اٌّطٍمخ
ٔ-ؼىظ ل ُ١اٌجزبد ٔؾظً ػٍ ٝاٌؼذد اٌزبٌٟ
01101001
ٔ-ؼ١ف اٌمّ١خ ٌٍ 1ؼذد اٌغذ٠ذ
01101001+00000001
ٔؾظً ػٍ01101010 ٝ
01101010=6AH=6*16+10=106
ارا اٌؼذد اٌضبٔ -106 ٛ٘ ٟػششٞ
ارا
-79+(-106)=-79-106= -185
٘زٖ اٌمّ١خ ال ّ٠ىٓ وزبثزٙب فِ ٟغغً ٠زى ِٓ ِٓ ْٛصّبٔ١خ ثزبد الْ اطغش ػذد عبٌت
ّ٠ىٓ وزبثزٗ ف ٟاٌّغغً ٘-128 ٛ
ِغبي االػذاد اٌغبٌجخ اٌزّ٠ ٟىٓ رخض ٕٗ٠فِ ٟغغً ِؼ ٛ٘ ٓ١دائّب ِٓ -1ؽز ٝاٌؼذد
. (2N-1)/2اٌشِض ٛ٘ Nػذد اٌجزبد ٌٍّغغً ٠شًّ ثذ االشبسح ِضال ٌٗ ALصّبٔ١خ
ثزبد ارا
8
(2 -1)/2=128
ارا اٌّغبي اٌّغّٛػ ثٗ ٘ٛ
][-128..-1
اٌمّ١خ ٟ٘ -185خبسط اٌّغبي ٚال ّ٠ىٓ رخضٕٙ٠ب ٌٙزا اٌغجت OF=1
رّبسٚ ٓ٠ؽٍٛي
عذ ل ُ١سا٠بد اٌٛػغ ثؼذ اٌؼٍّ١خ اٌؾغبث١خ
4AH+77H=01001010+01110111
ِالؽظخ OF=0 :الْ إٌز١غخ ِٕطم١خ ػذد ِٛعت ٔبلض ػذد ِٛعت إٌز١غخ عبٌجخ
طؾ١ؼ ّ٠ىٓ اْ رى ْٛارا وبْ اٌؼذد اٌضبٔ ٟاوجش ِٓ االٚي ٕ٘ٚب
4AH-77H=4*16+10-(7*16+7)=74-119= -45
٘ٚزٖ اٌمّ١خ ف ٟاٌّغبي اٌّزوٛس
اٌمبئّخ اٌزبٌ١خ رزؼٍك ف ٟاٌمفض اٌّششٚؽ ػٕذ اٌزؼبًِ ِغ االػذاد اٌّٛعٙخ (اػذاد عبٌجخ
ٚاػذاد ِٛعجخ)
CMP OP1 , OP2
االِش ٚطف االِش
JG JMP IF OP1>OP2 (JMP IF GREATER)
JNG JMP IF OP1 <= OP2
JL JMP IF OP1<OP2 (JMP IF LESS THAN)
JNL JMP IF OP1>=OP2
JGE JMP IF OP1>=OP2 (JMP IF GREATER THAN
OR EQUAL)
JNGE JMP IF OP1<OP2
JLE JMP IF OP1<=OP2
JNLE JMP IF OP1>OP2
ٟب فٙ١ٌف ارطشق اٛعجخ فغٌّٛ رزؼبًِ فمؾ ِغ االػذاد اٟاِش اٌمفض اٌزٕٚ٘بٌه ثؼغ ا
.ط اٌمبدِخٚاٌذس
خ١اِش اٌؾغبثٚثؼغ اال
cf خ٠)اٌغّغ ِغ اٌشا1
ADC (ADD WITH CARRY)
ADC OP1 ,OP2
OP1=OP1+OP2+CF*
:ِالؽظبد
*
ّخ١غذ اٌم١ٌٚ خ اٌغّغ١ٍّ وبٔذ لجً ػٟ اٌزCF خ٠ّخ اٌشا١ لٞ أCF ٟد فٛاٌّمظ-
ذح٠خ اٌغّغ اٌغذ١ٍّب ػٙ ػٍّزٟذح اٌز٠اٌغذ
:ٌٟ ِمطغ اٌجشٔبِظ اٌزبِٝؼط:ِضبي
MOV AL,90H
ADD AL,85H
ADC AL,3
االِش AL CF ِالؽظبد
?? ?
MOV AL,90H 90H ? بد٠ اٌشاٍٝ ال رإصش ػMOV
ADD AL,85H 15H 1
ADC AL,3 19H 0 AL=15H+3+1
اٌؾً :اٌّغغً BL=6الْ االِش ٠ JAزؼبًِ ِغ االػذاد اٌّٛعجخ فمؾ ف ٛٙال ٠ؼشف
االػذاد اٌغبٌجخ.
AL=-1=11111111
ثبٌٕغجخ ٌٗ ٘زٖ لّ١خ 255ػششٚ ٞفؼال ٘زٖ اٌمّ١خ اوجش ِٓ اٌظفش ف١زُ اٌمفض اٌT1 ٝ
ٕ٘ٚبن ٠ؼغ اٌّؼبٌظ اٌمّ١خ 6ف ٟاٌّغغً ٕ٠ٚ ALزمً ثؼذ٘ب اٌ ٝاٌؼٕٛاْ T2
ِٓ ٕ٘ب ٔش ٜأٗ ػٍٕ١ب االٔزجبٖ ػٕذ اعزؼّبي اٚاِش اٌمفض اٌّششٚؽ أ ٞاِش ٔأخز
ٔغزؼًّ ٕ٘ب اِش اٌؼشة ٌٚ MULىٓ ٕ٘بٌه ششٚؽ ٠غت اْ رزؾمك ػٕذِب ٔش٠ذ اْ
ٔغزؼًّ ٘زا االِش MUL OP1 .
ِالؽظبد ِّٙخ:
ّ٠ OP1-ىٓ اْ ٠ىِ ْٛغغال ا ٚاعُ ِزغ١ش ا ٚخٍ١خ ف ٟاٌزاوشح ّ٠ٚىٓ اْ ٠ى ْٛخٍ١زٓ١
ّ٠-ىٓ اْ ٠ى OP1 ْٛثطٛي 8ثزبد ا 16 ٚثزب
-ارا وبْ ٛٔ ِٓ OP1ع ثب٠ذ ػٕذ٘ب رزُ اٌؼٍّ١خ اٌزبٌ١خ
AX=AL*OP1
أ ٞاْ اٌّؼبٌظ عٛف ٠م َٛثؼشة OP1ثفؾ ٜٛاٌّغغً ٚ ALفمؾ ٘زا اٌّغغً
٠ٚؼغ إٌز١غخ ف ٟاٌّغغً ٌٙ .AXزا اٌغجت ٠غت اْ ٔؼغ اؽذ ٜاٌم ُ١ف ٟاٌّغغً AL
ٚاْ ٔؾفع لّ١خ اٌّغغً AHفِ ٟىبْ اخش لجً ػٍّ١خ اٌؼشة الٔٗ ثؼذ ػٍّ١خ اٌؼشة
عٛف ٠م َٛاٌّؼبٌظ ثؾزف اٌمّ١خ اٌمذّ٠خ ٠ٚؼغ ِىبٔٙب اٌمّ١خ اٌغذ٠ذح
ِضبي:
اوزت ِمطغ ثشٔبِظ ٠ؼشة فؾ ٜٛاٌخٍ١خ 20Hف ٟاٌمّ١خ ٠ٚ 8ؾفع إٌز١غخ ف ٟاٌّغغً
CX
اٌؾً:
MOV SI,20H
]MOV AL,[SI
MOV BL,8
MUL BL
MOV CX,AX
-ارا وبْ ٛٔ ِٓ OP1ع وٍّخ أ 16 ٞثذ ػٕذ٘ب رزُ اٌؼٍّ١خ اٌزبٌ١خ
DX:AX=AX*OP1
ػٕذ٘ب ٠م َٛاٌّؼبٌظ ثؼشة OP1ثمّ١خ فؾ ٜٛاٌّغغً ٠ٚ AXؾفع إٌز١غخ فٟ
اٌّغغٌٍٙ AX ٚ DX ٓ١زا اٌغجت ٠غت اْ ٔؼغ اؽذ ٜاٌم ُ١ف ٟاٌّغغً ٚ AXاْ
ٔؾفع اٌمّ١خ اٌّٛعٛدح ف ٟاٌّغغً DXفِ ٟىبْ اخش لجً ػٍّ١خ اٌؼشة
ِضبي :
ػٍ١ه ػشة اٌؼذد FFFFHثبٌؼذد 4
اٌؾً:
MOV AX,0FFFFH
MOV CX,4
MUL CX
ِالؽظخٌ :مذ اػفٕب طفش اِبَ اٌؼذد اٌزٚ ٞػؼٕبٖ ف ٟاٌّغغً AXالْ اٌمبٔ٠ ْٛمٛي
وً ػذد ٠جذأ ثؾشف ِٓ اٌؾشٚف(٠ )A ,B ,C, D ,E , Fغت اػبفخ طفش ػٓ ٠غبسٖ
ٔفظ اٌششٚؽ اٌز ٟروشرٙب عبثمب ٌٚىٓ ثذال ِٓ االِش ٔ MULغزخذَ IMUL
ِضبي :
اوزت ِمطغ ثشٔبِظ ٕ٠فز اٌزّش ٓ٠اٌزبٌٟ
CX=-10 * DL
اٌؾً:
MOV AL,-10
IMUL DL
MOV CX,AX
انقسًت
رمغُ ػٍّ١بد اٌمغّخ اٌ ٝلغّٓ١
ٕ٘ب ٔغزخذَ ٔفظ اٌششٚؽ ِضً االػذاد اٌّٛعجخ ٌٚىٓ اٌفشق اٌٛؽ١ذ ٘ ٛثذال ِٓ االِش
ٔغزخذَ االِش IDIV DIV
ِضبي:
اؽغت ِب ٍٟ٠
-120/12H
اٌؾً:
MOV AX,-120
MOV BL,12H
IDIV BL
رّش:ٓ٠
اوزت ِمطغ ثشٔبِظ ٠ؾغت
1234H/-1010
اٌؾً:
MOV DX,0
MOV AX,1234H
MOV CX,-1010
IDIV CX
ِالؽظخٌ :مذ ٚػؼٕب اٌمّ١خ طفش ف ٟاٌّغغً DXلجً ػٍّ١خ اٌمغّخ الْ اٌّؼبٌظ عٛف
٠غزخذَ اٌمّ١خ اٌّٛعٛدح ف ٗ١ػٕذ اٌمغّخ ّ٠ٚىٓ اْ رى ْٛلّ١خ ِخزٍفخ ػٓ اٌظفش ٚؽزٝ
ٔزأوذ اْ اٌمّ١خ طفش ٚػؼٕب اٌظفش فDX ٟ
اٌ ٝاٌٍمبء ف ٟاٌذسط اٌمبدَ
انحهقبث
ّ٠ىٓ رى ٓ٠ٛاٌؾٍمبد فٌ ٟغخ االعّجٍ ٟف ٟػذح ؽشق ٔزوش ِٕٙب اٌطشق اٌزبٌ١خ:
_1اٌطش٠مخ اال ٌٝٚثبعزخذاَ اٌّغغً ٚ CXاالِش . LOOP
ٔ-ؼغ ف ٟاٌّغغً CXػذد اٌذٚساد اٌالصِخ
-عغً ػٕٛأب ػٓ ٠غبس االِش االٚي ف ٟاٌؾٍمخ
ٟٕٙٔ-اٌؾٍمخ ف ٟاالِش ِ LOOPغ ػٕٛاْ ثذا٠خ اٌؾٍمخ.
اٌّجٕ ٝاٌؼبَ
:ػٕٛاْ اٌؾٍمخ
اٚاِش اٌؾٍمخ
LOOP ػٕٛاْ اٌؾٍمخ
ِضبي :
اوزت ِمطغ ثشٔبِظ ٠م َٛثزخض ٓ٠اٌمّ١خ 28Hف ٟاٌخال٠ب اٌّٛعٛدح ف ٟاٌّغبي
][400H..407H
ػذد اٌخال٠ب اٌّطٍٛثخ 407H-400H+1=8
ارا
MOV SI,400H
MOV AL,28H
MOV CX,8
ثذا٠خ اٌؾٍمخ; T1:MOV [SI],AL
INC SI
LOOP T1 ٔٙب٠خاٌؾٍمخ;
ػٕذِب ٠ظً اٌّؼبٌظ اٌ ٝاالِش ٠ LOOPم َٛثزٕف١ز ػٍّ١زّ٘ٚ ٓ١ب:
٠-م َٛثطشػ ِٓ 1اٌّغغً CX
CX=CX-1
٠-م َٛثمبسٔخ اٌمّ١خ اٌغذ٠ذح ٌٍّغغً ِ CXغ اٌظفش ارا وبٔذ رغب ٞٚطفشا ٟٕٙ٠
اٌّؼبٌظ اٌؾٍمخ ٠ٚخشط ٕ٠ٚفز االِش اٌز ٍٟ٠ ٞاالِش ٚ . LOOPارا وبٔذ لّ١زٗ ال رغبٞٚ
طفش رزُ ػٍّ١خ اٌمفض اٌ ٝثذا٠خ اٌؾٍمخ
ِضبي :اوزت ِمطغ ثشٔبِظ ٠ؼ١ف اٌمّ١خ ٌ 4ىً خٍ١خ ف ٟاٌّغبي ][0..5
اٌؾً:
ٔأخز اٌّغغً BLوؼذاد ٌٍؾٍمخ
MOV SI,0
MOV BH,4
MOV BL,6
T1:ADD [SI],BH
INC SI
DEC BL
CMP BL,0
JNZ T1
انعًهُبث انًُطقُت
فٌ ٟغخ االعّجٍٕ٘ ٟبٌه ػٍّ١بد ؽغبث١خ ِضً (اٌغّغ ،اٌطشػ ،اٌؼشة ،اٌمغّخ)
ٕ٘ٚبٌه اٌؼٍّ١بد إٌّطم١خ
اٌز ٟرزؼبًِ ِغ اٌجزبد ِضً ()OR , AND, NOT ,XOR ,TEST
إٌز١غخ ِٓ ٘زٖ اٌؼٍّ١بد رى ْٛاِب طذق ٚ TRUEاٌزٔ ٟؼجش ػٕٙب ف ٟاٌمّ١خ . 1اٚ
رى ْٛإٌز١غخ ِٓ ٔٛع وزة ٚ FALSEاٌزٔ ٟؼجش ػٕٙب ثبٌمّ١خ .0
ِضبيِ :ؼطٝ
AL=2FH
BL=52H
عذ لّ١خ وً ِغغً ِٓ اٌّغغالد ثؼذ رٕف١ز اٌؼٍّ١خ إٌّطم١خ اٌزبٌ١خ:
OR AL , BL
اٌؾً:
ػٍٕ١ب اْ ٔؾٛي اٌٙذف ٚاٌّظذس اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
AL=2FH=00101111
BL=52H=01010010
0اٌؼذد االٚي 0 1 0 1 1 1 1
0اٌؼذد اٌضبٟٔ 1 0 1 0 0 1 0
إٌز١غخ 0 1 1 1 1 1 1 1
اٌؾً :
ثّب اْ اٌّغغً ٛ٘ BLاٌّظذس فبْ لّ١زٗ ال رزغ١ش ٚرجمBL=52H ٝ
اٌّغغً ٛ٘ ALاٌٙذف ارا اٌزأص١ش ٠زُ ػٍ ٗ١ؽغت إٌز١غخ AL=7FH
االِشاٌضبٔAND :ٟ
ٕ٘ب ٠ىف ٟاْ ال ٠زؾمك ششؽب ٚاؽذا ؽزٔ ٝؾظً ػٍٔ ٝز١غخ وزة
اٌ١ىُ عذٚي االِش AND
A B إٌز١غخ
0 0 0
0 1 0
1 0 0
1 1 1
ِضبيِ :ؼطٝ
AL=27H
BL=56H
عذ لّ١خ وً ِغغً ِٓ اٌّغغالد ثؼذ رٕف١ز اٌؼٍّ١خ إٌّطم١خ اٌزبٌ١خ:
AND AL , BL
اٌؾً:
ػٍٕ١ب اْ ٔؾٛي اٌٙذف ٚاٌّظذس اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
AL=27H=00100111
BL=56H=01010110
0اٌؼذد االٚي 0 1 0 0 1 1 1
0اٌؼذد اٌضبٟٔ 1 0 1 0 1 1 0
إٌز١غخ 0 0 0 0 0 1 1 0
اٌؾً :
ثّب اْ اٌّغغً ٛ٘ BLاٌّظذس فبْ لّ١زٗ ال رزغ١ش ٚرجمBL=56H ٝ
اٌّغغً ٛ٘ ALاٌٙذف ارا اٌزأص١ش ٠زُ ػٍ ٗ١ؽغت إٌز١غخ AL=06H
االِش اٌضبٌشTEST:
ٕ٘ب ٠ىف ٟاْ ال ٠زؾمك ششؽب ٚاؽذا ؽزٔ ٝؾظً ػٍٔ ٝز١غخ وزة
اٌ١ىُ عذٚي االِش TEST
A B إٌز١غخ
0 0 0
0 1 0
1 0 0
1 1 1
اٌؾً :
ثّب اْ اٌّغغً ٛ٘ BLاٌّظذس فبْ لّ١زٗ ال رزغ١ش ٚرجمBL=56H ٝ
اٌّغغً ٛ٘ ALاٌٙذف ٌٚىٓ االِش TESTال ٠إصش ػٍ ٝاٌٙذف اٌّغغً ٠ؾبفع ػٍٝ
لّ١زٗ اٌغبثمخ AL=27H
ارا ِب ٘ ٟاٌفبئذح ِٕٗ؟
اٌغٛاة :ف ٟثؼغ االؽ١بْ ٔؾزبط اٌ ٝفؾض ثذ ِؼٕ١خ د ْٚاْ ٔإصش ػٍ ٝاٌمّ١خ
االطٍ١خ .فٕغزخذَ ٘زا االِش
ِضبي :اوزت ِمطغ ثشٔبِظ ٠فؾض ارا وبْ اٌّغغً ٠ DLؾز ٞٛػٍ ٝلّ١خ فشد٠خ ارا وبْ
٠ؾز ٞٛػٍ ٝلّ١خ فشد٠خ ٠ؼغ اٌمّ١خ 6اٌّغغً ٚ ALارا وبٔذ اٌمّ١خ صٚع١خ ٠ؼغ فٟ
اٌّغغً ALاٌمّ١خ 12H
اٌؾً٠ :ؼزجش اٌؼذد فشد٠ب ارا وبٔذ اٌجذ اال ٌٝٚلّ١زٙب ٚ 1اٌغجت ٘ ٛاْ ل ُ١عّ١غ اٌجزبد
ف ٟأ ٞػذد صٚع١خ ِب ػذا اٌجذ اال ٌٝٚاٌز ٟلّ١زٙب . 1ارا ٔفؾض اٌجذ االٌٝٚ
اٌشِض٠ Bذي ػٍ ٝلّ١خ صٕبئ١خ ; TEST AL,00000001B
JZ T1
MOV AL,6
JMP FINISH
T1:MOV AL,12H
FINISH:
االِشاٌشاثغXOR :
ٕ٘ب ارا وبٔذ اٌجزبد ِخزٍفخ إٌز١غخ ٚ 1ارا وبٔذ ِزشبثٙخ إٌز١غخ 0
اٌ١ىُ عذٚي االِش XOR
A B إٌز١غخ
0 0 0
0 1 1
1 0 1
1 1 0
ِضبيِ :ؼطٝ
AL=A7H
BL=76H
عذ لّ١خ وً ِغغً ِٓ اٌّغغالد ثؼذ رٕف١ز اٌؼٍّ١خ إٌّطم١خ اٌزبٌ١خ:
XOR AL , BL
اٌؾً:
ػٍٕ١ب اْ ٔؾٛي اٌٙذف ٚاٌّظذس اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
AL=A7H=10100111
BL=76H=01110110
1اٌؼذد االٚي 0 1 0 0 1 1 1
0اٌؼذد اٌضبٟٔ 1 1 1 0 1 1 0
إٌز١غخ 1 1 0 1 0 0 0 1
اٌؾً :
ثّب اْ اٌّغغً ٛ٘ BLاٌّظذس فبْ لّ١زٗ ال رزغ١ش ٚرجمBL=76H ٝ
اٌّغغً ٛ٘ ALاٌٙذف ارا اٌزأص١ش ٠زُ ػٍ ٗ١ؽغت إٌز١غخ AL=D1H
االِشاٌخبِظXOR :
ٕ٘ب ٠زُ ػىظ اٌجزبد اٌجذ اٌز ٟلّ١زٙب 1رأخز اٌمّ١خ ٚ 0اٌجذ اٌز ٟلّ١زٙب 0رأخز اٌمّ١خ
1
اٌ١ىُ عذٚي االِش NOT
A إٌز١غخ
0 0
1 0
ِضبيِ :ؼطٝ
AL=A7H
عذ لّ١خ وً اٌّغغً ِٓ ثؼذ رٕف١ز اٌؼٍّ١خ إٌّطم١خ اٌزبٌ١خ:
NOT AL
اٌؾً:
ػٍٕ١ب اْ ٔؾٛي اٌ ٝاٌّ١ضاْ اٌضٕبئٟ
AL=A7H=10100111
1اٌؼذد االٚي 0 1 0 0 1 1 1
إٌز١غخ 0 1 0 1 1 0 0 0
اٌؾً :
اٌّغغً ٛ٘ ALاٌز٠ ٞزأص١ش ؽغت إٌز١غخ AL=58H
اٌ ٝاٌٍمبء ف ٟاٌذسط اٌمبدَ
انًخغُزاث
يالحظت :ػٕذِب ٔش٠ذ اْ ٔؾغض اِبوٓ ف ٟاٌزاوشح ؽزٔ ٝؼغ ثٙب لِ ُ١ؼٕ١خ خالي رٕف١ز
اٌجشٔبِظّ٠ .ىٓ اْ ٔؾغض ثذ ْٚاْ ٔغغً اعُ ِزغ١ش ٌٚىٓ ٕ٘بٌه طؼٛثخ عزٛاعٕٙب
خالي اٌجشٔبِظ ػٕذِب ٔؾبٚي اْ ٔزٛعٗ اٌ٘ ٝزٖ االِبوٓ .الٔٗ ػٍٕ١ب اْ ٔؾغت اٌؼٕٛاْ
ٌٛؽذٔب ثّٕ١ب ػٕذِب ٔؼط ٟاالِبوٓ اٌّؾغٛصح اعُ ِؼ ٓ١فٙزا ٠غ ًٙػٍّ١خ اٌزٛعٗ اٌٙ١ب
الْ اٌّؼبٌظ ٠م َٛثؾغبثخ اٌؼٕٛاْ ثذال ِٕب
يالحظتّ٠ :ىٓ اػطبء اٌّزغ١ش لّ١خ أ١ٌٚخ ّ٠ٚىٓ ػذَ اػطبء اٌّزغ١ش لّ١خ ا١ٌٚخ .ارا
اسدٔب اْ ال ٔؼط ٟاٌّزغ١ش لّ١خ أ١ٌٚخ ٔغغً ِىبْ اٌمّ١خ اٌشِض ? (ػالِخ عإاي)
اِضٍخ:
طٛسح اٌىزبثخ اٌّؼٕٝ
X db 4 ٕ٘ب ٔؼٍٓ ػٓ ِزغ١ش ثبعُ ٛٔ ِٓ ٛ٘ٚ Xع ثب٠ذ أٞ
أٗ ؽغض خٍ١خ ٚاؽذح ٚلّ١زٗ اال١ٌٚخ 4
? Y dw ٕ٘ب ٔؼٍٓ ػٓ ِزغ١ش ثبعُ ٛٔ ِٓ Yع ٌٚ wordىٓ
ثذ ْٚلّ١خ أ١ٌٚخ.
Db 5 ٕ٘ب ٔؼٍٓ ػٓ ؽغض خٍ١خ ثذ ْٚػٕٛاْ ٔٚؼغ ثٙب
اٌمّ١خ 5
X db 2,3,4,5,1
ٕ٘ب رُ رؼش٠ف ِظفٛفخ رزى ِٓ ْٛخّغخ ؽذٚد ٚوً ؽذ ػجبسح ػٓ ثب٠ذ أ ٞاْ ٘زٖ
اٌّظفٛفخ لذ ؽغضد 5خال٠ب .الؽع أٗ ٠غت اْ ٔفظً ث ٓ١اٌؾذٚد ثّغبػذح اٌفبطٍخ
X1 dw 2,3,4,5,1
ٕ٘ب رُ رؼش٠ف ِظفٛفخ ثبعُ x1رزى ِٓ ْٛخّغخ ؽذٚد ٚوً ؽذ ِٓ ٔٛع wordأ ٞاْ
اٌّظفٛفخ رؾغض 10خال٠ب.
ِالؽظخ :ػذد اٌخال٠ب اٌز ٟرؾغض٘ب ِظفٛفخ ٘ ٛثمذس ػذد اٌؾذٚد ػشة ِب ٠ؾغضٖ وً
ؽذ
Dt 1234
انزيىس وانُصىص
يثبل:
Mov BL,6 ; put 6 in BL
كخببت انبزايح
اوزت ثشٔبِغب ٕ٠فز ٠ . Y= 2*AL-5ؼشة اٌّغغً alف ٟاٌمّ١خ ٠ٚ 2خضْ إٌز١غخ
ف ٟاٌّزغ١ش y
اٌؾً:
اٌّزغ١ش ٠ Yغت اْ ٠ىٛٔ ِٓ ْٛع wordأ ٞاْ ٠ؾغض خٍ١زٔ ٓ١ؾظً ػٍٔ ٝز١غخ اوجش
ِٓ ثب٠ذ ٚاؽذ ثغجت ػٍّ١خ اٌؼشة
إٌز١غخ ّ٠ىٓ اْ رى ْٛعبٌجخ الٕٔب ال ٔؼشف ِبرا ٛ٠عذ ف ٟاٌّغغً ّ٠ alىٓ ِضال اْ
رى ْٛلّ١خ عبٌجخ ػٕذِب ٔغزخذَ اِش اٌؼشة ٠غت اْ ٔغزخذَ اِش اٌؼشة اٌّزخظض
ف ٟاالػذاد اٌّٛعٙخ
اٌؾً:
Sseg segment stack
)Db 10 dup (0
Sseg ends
Dseg segment
Y dw 0
Dseg ends
Cseg segment
Assume cs:cseg,ds:dseg,ss:sseg
Start:mov ax,dseg
Mov ds,ax
Mov BL,2
Imul BL
Mov Y,AX
Sub Y,5
Mov ah,4ch
Int 21h
Cseg ends
End start
اٌجشٔبِظ اٌغبثك
Sseg segment stack
)Db 10H dup (0
Sseg ends
ٕ٘ب رُ رؼش٠ف ِمطغ اٌّىذط stackعٛف ٔزطشق اٌ ٗ١ف ٟاٌذسٚط اٌمبدِةخ ػٕةٛاْ ثذا٠ةخ
اٌّىذط ٟ٘ٚ ssegوٍّخ اخز١بس٠خ أّ٠ ٞىٓ اخز١بس وٍّخ غ١ش٘ةب ٌٚىةٓ ٠غةت اْ ال رىةْٛ
وٍّخ ِؾفٛظخ أ ِٓ ٞوٍّةبد ٌغةخ االعةّجٍ٘ Segment stack .ٟةزٖ اعجبس٠ةخ ٘ٚة ٟرةذي
ػٍ ٝاْ ٘زا ِمطغ اٌّىذط
)Db 10H dup (0
ٕ٘ب ٔؼٍٓ اْ اٌّىذط ؽغض 10خال٠ب ٚف ٟوً خٍ١خ اٌمّ١خ طفش
Sseg ends
ٕ٘ب رُ االػالْ ػٓ ٔٙب٠خ رؼش٠ف ِٕطمخ اٌّىذط
Dseg segment
Y dw 0
Dseg ends
ٕ٘ةةب رةةُ االػةةالْ ػةةٓ رؼش٠ةةف ِمطةةغ اٌج١بٔةةبد ٚلةةذ لّٕةةب ثزؼش٠ةةف ِزغ١ةةش ِةةٓ ٔةةٛع word
ٚٚػؼٕب ثٗ اٌمّ١خ اال١ٌٚخ طفش
Cseg segment
Assume cs:cseg,ds:dseg,ss:sseg
ٕ٘ب رُ االػالْ ػٓ ثذا٠خ ِمطغ اٌىٛد ٚاالػالْ ػٓ عغالد اٌّمبؽغ ٚػةٓ اٌؼٕةب ٓ٠ٚاٌزةٟ
عٛف رأخز٘ب خالي اٌجشٔبِظ
Start:mov ax,dseg
Mov ds,ax
ٕ٘ب رُ ٚػغ ػٕٛاْ ثذا٠خ اٌج١بٔبد فِ ٟغغً اٌّمطغ . ds
ِالؽظخ ال ّ٠ىٓ رغغ ً١االِش ثبٌشىً اٌزبٌmov ds,dseg :ٟ
٠غت االعزؼبٔخ ثّغغً وبًِ ِضً bx,cx,dx,si,di,ax
Mov BL,2
Imul BL
Mov Y,AX
Sub Y,5
٘زٖ ٘ ٟاالٚاِش اٌز ٟرٕفز اٌّّٙخ اٌغبثمخ
Mov ah,4ch
Int 21h
٘زٖ رٕ ٟٙاٌجشٔبِظ ٚرشعغ اٌغ١طشح ٚاٌزؾىُ ٌٕظبَ اٌزشغً١
Cseg ends
End start
اغالق اٌجشٔبِظ الؽع إٔب عغٍٕب ف ٟثذا٠خ اٌجشٔبِظ start:
ٚف ٟإٌٙب٠خ
End start
DATA CF
ِضبي:
MOV AL,3DH
ROR AL,1
0 0 1 1 1 1 0 1
AL CF
1 0 0 1 1 1 1 0 1
ِالؽظخ:اٌّظذس ٕ٘ب ػجبسح ػٓ لّ١خ ػذد٠خ ٠ٚغت اْ رىٚ 1 ْٛفمؾ ٚاؽذ ٚف ٟؽبٌخ ارا
اسدٔب رذ٠ٚش اوضش ِٓ ثذ ٚاؽذح فٕٙبٌه ؽالْ
اٌؾً االٚي اْ ٔغغً االِش ثمذس ػذد ِشاد اٌجزبد اٌّشاد رذ٠ٚش٘ب ِضال:
الؽع أٗ اٌجذ اٌز ٟرزؾشن رخشط ِٓ اي DATAرؼغ طٛسح ِٓ لّ١زٙب ف ٟاٌشا٠خ
ٚ CFرٕزمً اٌجذ اٌ ٝاخش اي ٚ DATAاْ اٌمّ١خ اٌّؾفٛظخ ف ٟاٌشا٠خ ٟ٘ CFلّ١خ
اخش ثذ خشعذ ِٓ اي DATA
حًزٍَ :اوزت ِمطغ ثشٔبِظ ٠ؾفع ف ٟاٌّغغً BLػذد اٌجزبد اٌز ٟلّ١زٙب 1فٟ
اٌّغغً AX
انحم:
فىشح اٌؾً ٘ ٟرذ٠ٚش ثزبد اٌّغغً 16 AXدٚسح ٚف ٟوً دٚسح ٔغأي ػٓ لّ١خ
اٌشا٠خ CFارا وبٔذ ٔ 1ؼ١ف ٌٍؼذاد BLاٌمّ١خ ٔ .1غأي ػٓ اٌشا٠خ cfالْ وً ثذ
رٕزمً ِٓ اٌجذا٠خ اٌ ٝإٌٙب٠خ رؼغ طٛسح ِٕٙب ف ٟداخً ٘زٖ اٌشا٠خ
MOV CX,16
MOV BL,0
T1:ROR AX,1
JC CF_1
JMP CF_0
CF_1:ADD BL,1
CF_0:LOOP T1
ROL OP,1
فٕٙب اٌجذ اٌّٛعٛدح فٙٔ ٟب٠خ اٌّغغً رؼغ طٛسح ٌٙب ف ٟاٌشا٠خ ٚ CFرٕزمً اٌ ٝاٌجذا٠خ.
وّب ِ٘ ٛج ٓ١ف ٟاٌشىً اٌزبٌ:ٟ
CF DATA
يثبل ٌٛ :فشػٕب اْ اٌّغغً ٠ BLؾز ٞٛػٍ ٝلّ١خ ٔٚ 6CHفزٔب االِش اٌزبٌ:ٟ
ROL BL,1
ٕ٘بٌه اٚاِش اصاؽخ ثزبد رزخظض ف ٟاالػذاد اٌّٛعجخ ٕ٘ٚبٌه اٚاِش اصاؽخ رزخظض
ف ٟاالػذاد اٌّٛعٙخ
.1اصاؽخ ٔؾ ٛاٌ ٓ١ّ١االػذاد اٌّٛعجخ.
SHR OP,1
ٕ٘ب ٠زُ اػبفخ طفش فٙٔ ٟب٠خ اي ٔٚ OPم َٛثذفغ اٌجزبد االخش ٜاٌ ٝاٌٚ ٓ١ّ١ف٘ ٟزٖ
اٌؾبٌخ رخشط اٌجذ اال ٌٝٚاٌ ٝسا٠خ CF
وّب ِ٘ ٛج ٓ١ف ٟاٌشىً اٌزبٌ:ٟ
DATA CF
0
CF BL
CF BL
DATA CF
ٌ ٛاسدٔب اْ ٔؼًّ االِش ػذح ِشاد فبٕٔب عٛف ٔغغً االِش ػذح ِشاد أ ٚغزؼ ٓ١فٟ
ثبٌّغغً CL
ِضبي:
SAR AL,1
SAR AL,1
SAR AL,1
ّ٠ىٓ ٔغغً ثذال ِٓ ٘زٖ االٚاِش ِب :ٍٟ٠
MOV CL,3
SAR AL,CL
ِالؽظخٕ٘ :ب ال ّ٠ىٓ رخض ٓ٠اٌجبل ٟف ٟاٌشا٠خ CFالٔٗ ّ٠ىٓ اْ ٔخضْ ثذ ٚاؽذح فمؾ
ٟ٘ٚاخش ثذ خشعذ ِٓ اٌّغغً ا ٚاٌّزغ١شٕ٘ .ب رّذ لغّخ اٌّغغً ػً اٌمّ١خ 8الٔٗ
ف ٟوً اصاؽخ ٔمغُ ػٍٕ٘ٚ 2 ٝب ػٍّٕب صالس اصاؽبد ارا لغّٕب ػٍ8 ٝ
DATA CF
ثؼذ اٌزٕف١ز:
AL CF
1 0 0 1 1 1 1 0
1
ِالؽظخ:اٌّظذس ٕ٘ب ػجبسح ػٓ لّ١خ ػذد٠خ ٠ٚغت اْ رىٚ 1 ْٛفمؾ ٚاؽذ ٚف ٟؽبٌخ ارا
اسدٔب رذ٠ٚش اوضش ِٓ ثذ ٚاؽذح فٕٙبٌه ؽالْ
اٌؾً االٚي اْ ٔغغً االِش ثمذس ػذد ِشاد اٌجزبد اٌّشاد رذ٠ٚش٘ب ِضال:
RCR AL,1
RCR AL,1
RCR AL,1
فٕٙب رُ رذ٠ٚش صالس ثزبد .
CF DATA
ثؼذ اٌزٕف١ز:
AL
0 0 1 1 1 1 0 1 0
ؽبٌخ اراٟفٚ اؽذٚ فمؾٚ 1 ْٛغت اْ رى٠ٚ خ٠ّخ ػذد١اٌّظذس ٕ٘ب ػجبسح ػٓ ل:ِالؽظخ
ْٕبٌه ؽالٙاؽذح فٚ ش اوضش ِٓ ثذ٠ٚاسدٔب رذ
:ش٘ب ِضال٠ٚي اْ ٔغغً االِش ثمذس ػذد ِشاد اٌجزبد اٌّشاد رذٚاٌؾً اال
RCL AL,1
RCL AL,1
RCL AL,1
. ش صالس ثزبد٠ٕٚب رُ رذٙف
االخزظبس االِش
ROTATE RIGHT ROR
ROTATE LEFT ROL
ROTATE RIGHT WITH CARRY RCR
ROTATE LEFT WITH CARRY RCL
SHIFT ARITHMETIC LOGICAL SAL
LEFT
SHIFT ARITHMETIC LOGICAL SAR
RIGHT
انُصىص
إٌضٛ٘ :ػجبسح ػٓ سِض ا ٚاوضش رؾفع ػبدح رؾذ اعُ فِ ٟىبْ ِؼ ٓ١ف ٟاٌزاوشح
ٚرؾفع اٌشِٛص ثغبٔت ثؼؼٙب اٌجؼغ
ِضبي:
'Str1 db 'this is my first string
'Str2 db '12345
'Str3 dw 'ad
'Str4 dw 'v
ِالؽظخ ٘بِخ :ارا وبْ إٌض ِٓ ٔٛع ٠ wordغت اْ ٠ى ْٛػذد سِٛصٖ اطغش ِٓ
صالصخ سِٛص
ِضال str4 dw 'abc':خطأ الْ ػذد اٌشِٛص ٕ٘ب 3سِٛص
اوايز انُصىص
Lea si,string1
Lea di,string2
]Mov al,[si
Mov [di],al
inc si
inc si
ارا اسدٔب اْ ٕٔغخ ِضال 10سِٛص ِبرا ٔؼًّ ٔغغً االِش اٌغبثك ِ 10شاد اَ ٕ٘بٌه
ؽش٠مخ اثغؾ ٚاع. ًٙ
اٌغٛاة ّ٠ىٓ اْ ٔغزخذَ االِش )repeat( . rep
االعزؼّبي وّب : ٍٟ٠
-ػغ ف ٟاٌّغغً cxػذد اٌشِٛص اٌّشاد ٔغخٙب
ٔ-غغً rep movsb
اٌؾً:
Cld
Lea si,string1
Lea di,string2
Mov cx,10
Rep Movsb
االِش ٠ : movswؼًّ ِضً االِش اٌغبثك ٌٚىٓ ٕ٘ب ٠زُ ٔغخ سِض ٓ٠ف ٟوً ػٍّ١خ
ٚاٌّإششاد رٕمض اٚرض٠ذ ثـ 2ؽغت اٌشا٠خ DF
ارا وبْ DF=0ػٕذ٘ب SI=SI+2
DI=DI+2
ارا وبْ DF=1ػٕذ٘ب SI=SI-2
DI=DI-2
االِش ٕ٘ : LOADSBب ٠زُ ٚػغ ٔغخخ ِٓ اٌشِضاٌز٠ ٞإشش ػٍ ٗ١اٌّإشش siفٟ
اٌّغغً ٠ٚ ALزُ رغ١١ش اٌّإشش SIثٛاؽذ ؽغت ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب SI=SI+1
ارا وبْ DF=1ػٕذ٘ب SI=SI-1
االِش ٕ٘ : LOADSWب ٠زُ ٔغخ سِضٔ ِٓ ٓ٠ض اٌٙذف اٌ ٝاٌّغغً ٠ٚ AXزُ رغ١١ش
اٌّإشش SIثـ 2ؽغت ٚػغ اٌشا٠خ DF
ارا وبْ DF=0ػٕذ٘ب SI=SI+2
ارا وبْ DF=1ػٕذ٘ب SI=SI-2
االِش ٕ٘ STOSBب ٠زُ ٚػغ ٔغخخ ِٓ اٌشِضاٌّٛعٛد ف ٟاٌّغغً ALفٔ ٟض
اٌٙذف ف ٟاٌّىبْ اٌز٠ ٞإشش ػٍ ٗ١اٌّإشش ٠ٚ DIزُ رغ١١ش اٌّإشش DIثٛاؽذ ؽغت
ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+1
ارا وبْ DF=1ػٕذ٘ب DI=DI-1
االِش ٕ٘ STOSWب ٠زُ ٔغخ اٌّغغً AXأٌ ٝض اٌٙذف ٠ٚزُ رغ١١ش اٌّإشش DIثـ
2ؽغت ٚػغ اٌشا٠خ DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+2
ارا وبْ DF=1ػٕذ٘ب DI=DI-2
االِش ٕ٘ SCASBب ٠زُ ِمبسٔخ ِ ALغ اٌشِضاٌز٠ ٞإشش ػٍ ٗ١اٌّإشش DIفٔ ٟض
اٌٙذف ٠ٚزُ رغ١١ش اٌّإشش DIثٛاؽذ ؽغت ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+1
ارا وبْ DF=1ػٕذ٘ب DI=DI-1
االِش ٕ٘ SCASWب ٠زُ ِمبسٔخ ِ AXغ اٌشِضاٌز٠ ٞإشش ػٍ ٗ١اٌّإششٚ DIاٌشِض
اٌز ٗ١ٍ٠ ٞفٔ ٟض اٌٙذف ٠ٚزُ رغ١١ش اٌّإشش DIثـ 2د ؽغت ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+2
ارا وبْ DF=1ػٕذ٘ب DI=DI-2
االِش ٕ٘ CMPSBب ٠زُ ِمبسٔخ اٌشِضاٌز٠ ٞإشش ػٍ ٗ١اٌّإشش SIفٔ ٟض اٌّظذس ِغ
اٌشِض اٌز٠ ٞإشش ػٍ ٗ١اٌّإشش DIفٔ ٟض اٌٙذف ٠ٚزُ رغ١١ش اٌّإشش ٚ DIاٌّإشش
SIثٛاؽذ ؽغت ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+1
SI=SI+1
ارا وبْ DF=1ػٕذ٘ب DI=DI-1
SI=SI-1
ِالؽظخٕ٘ :ب اٌّظذس ٚاٌٙذف ال ٠زأصشاْ ٌٚىٓ اٌشا٠بد رزأصش
ِالؽظخٕ٘ :ب ٠زُ ؽشػ اٌٙذف ِٓ اٌّظذس ثؼىظ االِش CMPاٌز٠ ٞطشػ اٌّظذس ِٓ
اٌٙذف
االِش ٕ٘ CMPSWب ٠زُ ِمبسٔخ اٌشِضاٌز٠ ٞإشش ػٍ ٗ١اٌّإشش ٚ SIاٌشِض اٌزبٌ ٟفٟ
ٔض اٌّظذس ِغ اٌشِض اٌز٠ ٞإشش ػٍ ٗ١اٌّإشش ٚ DIاٌشِض اٌزٍ ٟفٔ ٟض اٌٙذف
٠ٚزُ رغ١١ش اٌّإشش ٚ DIاٌّإشش SIثـ 2ؽغت ٚػغ . DF
ارا وبْ DF=0ػٕذ٘ب DI=DI+2
SI=SI+2
ارا وبْ DF=1ػٕذ٘ب DI=DI-2
SI=SI-2
ِالؽظخٕ٘ :ب اٌّظذس ٚاٌٙذف ال ٠زأصشاْ ٌٚىٓ اٌشا٠بد رزأصش
ِالؽظخٕ٘ :ب ٠زُ ؽشػ اٌٙذف ِٓ اٌّظذس ثؼىظ االِش CMPاٌز٠ ٞطشػ اٌّظذس ِٓ
اٌٙذف
انحهقبث وانُصىص
ارا اسدٔب رٕف١ز اِش ِٓ اٚاِش إٌظٛص ػذح ِشاد ّ٠ىٓ اعزخذاَ اٚاِش اٌؾٍمبد
االِش rep
ٕ٠فز اِش ٔظٛص ػذدِٓ اٌّشاد ثمذس اٌمّ١خ اٌّخضٔخ ف ٟاٌّغغً cx
ِضال:
Mov cx,20
Rep stosb
:ٓ٠رّش
ب إٌض٠ خالٟ فC ٕغخ اٌشِض٠ سِضا اوزت ثشٔبِغب15 يٛ ثطstr3 ُ ٔض ثبعِٝؼط
:ًاٌؾ
.MODEL SMALL
.STACK 20H
.DATA
STR3 DB 15 DUP ('0')
.CODE
START:
MOV AX,@DATA
MOV DS,AX
MOV ES,AX ;ES=DS ْي ٌٍّؼبٌظ اٛ ٔمُٝ ؽزِٙ ٘زا
END START
END START
االِش REPNZ
٠غزخذَ ٘زا االِش ػبدح ٌٍجؾش ػٓ سِض ِؼ ٓ١ف ٟإٌضِ .ضال ارا اسدٔب اْ ٔفؾض ارا
وبْ ٔظب ِؼٕ١ب ٠ؾز ٞٛػٍ ٝاٌشِض .D
اوايز يخفزقت
ٕ٘بٌه ثؼغ االٚاِش اٌّزفشلخ فٌ ٟغخ االعّجٍ ٟاٌز ٟال ثذ ِٓ اٌزطشق اٌٙ١ب
االٚي seg
٠غزخذَ ٘زا ٌّؼشفخ ػٕٛاْ اٌّمطغ اٌّٛعٛد ف ٗ١اٌّزغ١ش ( )variableا ٚاٌؼٕٛاْ
اٌّطٍٛة ()lable
ِضبي:
.model small
.data
x1 db 10
)?( student db 5 dup
.code
start:
mov ax,@data
mov ds,ax
ٕ٘ب ٔش ٜرُ رخض ٓ٠ػٕٛاْ ثذا٠خ ِمطغ اٌج١بٔبد dataفِ ٟغغً اٌّمطغ ds
ِالؽظخ @data :ػجبسح ػٓ ػٕٛاْ ا ٞلّ١خ ػذد٠خ رذي ػٍ ٝثذا٠خ ِمطغ اٌج١بٔبد data
ٚ segmentوّب ٔؼٍُ ال ٠ؾك اْ ٔخضْ لّ١خ ػذد٠خ ثظٛسح ِجبششح فِ ٟغغً ِمطغ
ٌزٌه اعزخذِٕب اٌّغغً ٚ axػؼٕب اٌمّ١خ اٌؼذد٠خ ف ٟداخٍٗ صُ ٔغخٕب فؾ ٜٛاٌّغغً ax
اٌ ٝاٌّغغً ds
االيز xlat
ف ٟثؼغ االؽ١بْ ٔش٠ذ اْ ٔزشعُ عذٚي ِؼ ٓ١اٌ ٝعذٚي اخش (ِضال ٌ ٛاسدٔب اْ ٔغ١ش
لّ١خ االعى ٟوٛد ف ٟاٌشِض اٌز٠ ٞالئّٗ) ف٘ ٟزٖ اٌؾبالد ٔغزخذَ االِش XLAT
لجً اعزخذاَ االِش XLATػٍٕ١ب ِشاػبح اٌششٚؽ اٌزبٌ١خ:
.1ػٍٕ١ب رخض ٓ٠اٌجب٠ذ اٌّشاد رشعّزٗ ف ٟاٌّغغً ٚ ALفمؾ ف٘ ٟزا اٌّغغً
.2اٌّغغً ٠ BXغت اْ ٠ؾز ٞٛػٍ ٝػٕٛاْ عذٚي اٌزشعّخ
mov si,0
ٕ٘ب اٌّغغً ٠ cxؾز ٞٛػٍ ٝػذد ؽذٚد اٌغذٚي اٌزٔ ٞش٠ذ اْ ٔزشعّٗ;
mov cx,28
ٕ٘ب عٛف رزُ ػٍّ١خ اٌزشعّخ ٌىً ؽذ ِٓٚصُ ؽجبػخ اٌؾذ اٌز٠ ٞالئّٗ ف ٟاٌغذٚي اٌضبٔ;ٟ
]next_item:mov al,table1[si
xlat
mov dl,al
mov ah,2
int 21h
inc si
loop next_item
أٙبء اٌجشٔبِظ ٚاػطبء ٔظبَ اٌزشغ ً١اٌغ١طشح;
mov ah,4ch
int 21h
end start
اِضٍخ:
In AL,50H
٘زا ٠ؼٕ ٟادخً اٌ ٝاٌّغغً ALفؾ ٜٛعٙبص االدخبي اٌز ٞػٕٛأٗ 50H
OUT 50H,AL
٘زا ٠ؼٕ ٟاخشط فؾ ٜٛاٌّغغً ٌ ALغٙبص االخشاط اٌز ٞػٕٛأٗ 50H
IN AX,80H
٘زا ٠ؼٕ ٟادخً فؾ ٜٛعٙبص االدخبي طبؽت ػٕٛاْ ٌٍّ 80Hغغً ٚ ALفؾٜٛ
عٙبص االدخبي طبؽت ػٕٛاْ ٌٍّ 81Hغغً AH
OUT 90H,AX
٘زا ٠ؼٕ ٟاخشط فؾ ٜٛاٌّغغً ٌ ALغٙبص االخشاط طبؽت اٌؼٕٛاْ ٚ 90Hفؾٜٛ
اٌّغغً ٌ AHغٙبص االخشاط طبؽت ػٕٛاْ 91H
ف ٟؽبٌخ ارا وبْ ػٕٛاْ اٌغٙبصاٌّطٍٛة اوجش ِٓ 255ا FFH ٞػٕذ٘ب ٔغزخذَ
اٌّغغً DXوّإشش
ِضبي:
MOV DX,301H
IN AL,DX
ٕ٘ب ٠زُ ادخبي فؾ ٜٛعٙبصاالدخبي طبؽت ػٕٛاْ 301Hاٌ ٝاٌّغغً AL
االِش ٠ : POPFم٘ َٛزا االِش ثٕغخ اٌىٍّخ اٌّٛعٛدح ف ٟساط اٌّىذعخ اٌِ ٝغغً
اٌشا٠بد
ّ٠ىٓ اعزخذاَ ٘زٖ االٚاِش ػٕذِب ٔش٠ذ اْ ٔغأي ػٓ لّ١خ سا٠خ ِؼٕ١خ ثذ ْٚاْ ٔؼًّ
ػٍّ١خ رإصش ػٍ ٝاٌشا٠خ ٚثم١خ اٌشا٠بد
ِضبي:
PUSHF
POP AX
ٚاالْ ّ٠ىٓ اٌزٛعٗ اٌ ٝا ٞسا٠خ ٔش٠ذ٘ب ػٓ ؽش٠ك اٌّغغً AX
ٚا٠ؼب ّ٠ىٓ اعزخذاَ ٘زٖ االٚاِش ارا اسدٔب اْ ٔؼط ٟاٌشا٠بد لّ١خ ثذائ١خٔ .ؼغ ِضال فٟ
اٌّغغً BXاٌم ُ١اٌّطٍٛثخ صُ ٔخضٔٙب ف ٟاٌّىذعخ ٚثؼذ٘ب ٕٔغخٙب اٌِ ٝغغً اٌشا٠بد
ِضال:
MOV BX,0000000001010001B
PUSH BX
POPF
ٕ٘ب رُ اٌزؾىُ ف ٟاٌشا٠بد ٚ CF=AF=ZF=1ثبل ٟاٌشا٠بد لّ١زٙب طفش
انسالو عهُكى
Check macro
Local t1,t2,t3
Mov cx,10
T1:Mov ah,1
Int 21h
Cmp al,'B'
Jz t2
Inc dh
Jmp t3
T2:dec dh
loop t1
t3:nop
endm
ٓ١ؽخ ِشرٛ ٔغزخذَ اٌفبطٍخ إٌّمٚ داخً اٌّبوشٟ ارا اسدٔب اْ ٔغغً ِالؽظبد ف.5
:ِضبي
Print_char macro
Mov ah,1 ;;put 1 in ah
Int 21h
Mov dl,al ;;put the ascii_code of the char in dl
Mov ah,2
Int 21h
Endm
:ٍٟ٠ ٕفز ِب٠ اوزت ثشٔبِغب
ٕظف اٌشبشخ٠.1
enter a char اٌشبشخ اٌغٍّخٍٝطجغ ػ٠.2
ؼ١ؽخ اٌّفبرٌٛ ِٓ غزمجً سِضا٠.3
ذ٠ٕضي عطش عذ٠.4
[0..9] ُارا وبْ اٌشِضػجبسح ػٓ سل.5
اٌجشٔبِظٟٕٙز٠ٚ طجغ اٌشِض٠ ػٕذ٘ب
2 اٌفشعٌٝشعغ ا٠ٚ طجغ ٔغّخ٠ٚ ٕظف اٌشبشخ٠ االٚ
:ًاٌؾ
.model small
.stack 20h
.data
NL db 10,13,'$'
msg db 'enter a char$'
clear_screen macro
mov ax,3
int 10h
endm
print_char macro
mov dl,al
mov ah,2
int 21h
endm
read_char macro
mov ah,1
int 21h
endm
new_line macro
lea dx,NL
mov ah,9
int 21h
endm
print_msg macro
lea dx,msg
mov ah,9
int 21h
endm
.code
start: mov ax,@data
mov ds,ax
clear_screen
t2:print_msg
read_char
mov bl,al
new_line
sub bl,30h
cmp bl,9
ja t1
add bl,30h
mov al,bl
print_char
jmp finish
t1:clear_screen
mov al,'*'
print_char
jmp t2
finish:mov ah,4ch
int 21h
end start
اٌغالَ ػٍ١ىُ
٘زا اٌذسط اٌغضء اٌضبٔ ِٓ ٟدسط اٌّبوشٚ
اٌّبوش ٚاٌز٠ ٞأخز ثشاِزشاد
اٌّجٕ ٝاٌؼبَ ٌٍّبوشِ ٚغ ثشاِزشاد
Macro name macro p1,p2,….,pn
االٚاِش
Endm
ٟ٘ : P1,p2,…pnاٌجشاِزشاد
ِضبي :
اوزت ِبوش٠ ٚزٍم ٝثشاِزشٛٔ ِٓ ٓ٠ع ٠ٚ byteؾفع ثبٌّغغً alاٌجشاِزش االوجش
Max_num macro x,y
Local t1,finish
Mov al,x
Cmp y,al
Jg t1
Jmp finish
T1:mov al,y
Finish:
Endm
ِالؽظخ :ػٕذِب ٔش٠ذ اعزخذاَ اٌّبوش ٚفِٛ ٟلغ ِؼ ٓ١ف ٟاٌجشٔبِظ ٔغغً اعُ
اٌّبوشٔٚٚغغً اٌجشاِزشاد اٌّطٍٛثخ.
ِضال ف ٟؽبٌخ اعزذػبء اٌّبوشٚاٌغبثك ٔغغً
Max_num DH,DL
ٕ٘ب رُ اػطبء اٌّبوش ٚاٌّغغالد DL ٚ DHوجشاِزشاد
Max_num 7,9
ٕ٘ب رُ اػطبء اٌّبوش ٚاٌم 9 ، 7 ُ١وجشاِزشاد
Max_num x1,x2
ٕ٘ب رُ اػطبء اٌّبوشِ ٚزغ١ش x1 , x2 ٓ٠وجشِزشاد
ف ٟوض١ش ِٓ اٌؾبالد ٠فؼً اعزخذاَ اٌّبوشِ ٚغ ثشاِزشاد الٔٗ ٠ؼطٕ١ب اِىبٔ١خ اعزخذاَ
اٌّبوشٌ ٚؼذح ػٍّ١بد.
بٔبد١ ِمطغ اٌجٟ فِٝؼط:ِضبي
.data
NL db 10,13,'$'
Msg1 db 'enter the first number….$'
Msg2 db 'enter the second number..$'
Msg3 db 'your number is out the range$'
ْ ثشاِزشادٌٚىٓ ثذٚ ثخٍٛاد اٌّطٚاالْ ٔغغً اٌّبوش
ذ٠ عطش عذٌٝي اٚي ػٓ إٌضٚ ِغإٚ٘زا اٌّبوش
New_line macro
Lea dx,NL
Mov ah,9
Int 21h
Endm
ٌٝٚي ػٓ ؽجبػخ اٌغٍّخ االٚ ِغإٚ٘زا اٌّبوش
Print_msg1 macro
Lea dx,msg1
Mov ah,9
Int 21h
Endm
خ١ٔي ػٓ ؽجبػخ اٌغٍّخ اٌضبٚ ِغإٚ٘زا اٌّبوش
Print_msg2 macro
Lea dx,msg2
Mov ah,9
Int 21h
Endm
ي ػٓ ؽجبػخ اٌغٍّخ اٌضبٌضخٚ ِغإٚ٘زا اٌّبوش
Print_msg3 macro
Lea dx,msg3
Mov ah,9
Int 21h
Endm
New_line
Print_msg1
Print_msg2
Print_msg3
ٔالؽع ِٓ اٌؼٍّ١بد اٌغبثمخ إٔب ثؾبعخ اٌِ ٝبوشٌ ٚىً ػٍّ١خ
اٌؾً االِضً ٘ ٛاعزخذاَ ِبوشِ ٚغ ثشاِزشاد
اٌؾً:
Print_mac macro x
Lea dx,x
Mov ah,9
Int 21h
Endm
Print_mac NL
Print_mac msg1
Print_mac msg2
Print_mac msg3
وّب ٔالؽع أٗ ثّغبػذح ِبوشٚ ٚاؽذ ِٓ ٔٛع ِبوشِ ٚغ ثشاِزشاد رُ اعشاء عّ١غ
اٌؼٍّ١بد اٌغبثمخ.
االْ ٕٔزمً اٌٛٔ ٝع عذ٠ذ ٛ٘ٚاٌّبوش ٚاٌّزىشس
ِ ٛ٘ٚبوش٠ ٚم َٛثزٕف١ز ِغّٛػخ االٚاِش اٌّٛعٛدح ف ٗ١ػذد ِشاد ِؼشٚفخ ِغجمب
٠غغً ٘زا اٌّبوش ٚثشىً ػبَ داخً ِمطغ اٌج١بٔبد
اٌّجٕ ٝاٌؼبَ ٌٙزا اٌّبوشٚ
Rept n
االٚاِش
Endm
ثؾ١ش nػجبسح ػٓ لّ١خ ػذد٠خ ا ٚرؼج١شا ٠شعغ لّ١خ ػذد٠خ ا ٚاعُ صبثذ ِٓ اٌضٛاثذ
اٌّؼشفخ ف ٟاٌجشٔبِظ ا ٚاِش ٠شعغ لّ١خ ػذد٠خ .ثبالخزظبس اٌّ ُٙاْ ٠ى ْٛلّ١خ ػذد٠خ
ِضبي:
اوزت ِبوش٠ ٚطجغ إٌغّخ ِ 5شاد
Rept 5
'*'Mov dl,
Mov ah,2
Int 21h
Endm
:ٌٟ اٌزبٕٚفز اٌّبوش٠ ِبرا:عإاي
Rept 4
Add ax,2
Endm
خ١ٌاِش اٌزبٚشٖ ثبال١١ّىٓ رغ٠ اٌغبثكٚ اٌّبوش:اةٛاٌغ
Add ax,2
Add ax,2
Add ax,2
Add ax,2
ax ً ٌٍّغغ8 غّغ٠ ٗٔ اٞأ
ٚ ٔفظ اٌغطش ثّغبػذح اٌّبوشٍٝخ ػ٠ض١ٍَ ثطجبػخ االؽشف االٔغٛم٠ ٌٟاٌّضبي اٌزب
.اٌّزىشس
.model small
.stack 20h
.data
Clear_screen macro
Mov ax,3
Int 10h
Endm
.code
start: mov ax,@data
mov ds,ax
clear_screen
mov dl,'A'
rept 26
mov ah,2
int 21h
inc dl
endm
finish:mov ah,4ch
int 21h
end start
َزُ اعزخذا٠ ٌىٓ ٕ٘بٚ ِزىشسٚؼب ِبوش٠ اٛ٘ٚ ٚع اخش ِٓ اٌّبوشٛٔ ٌٝاالْ ٕٔزمً ا
سٚٗ اٌذ١ٌظً ا٠ ٞسح ٔغزخذَ ثشاِزش اٌزٚ وً دٟغ اٌجشاِزشاد ف١ّع
َ اٌؼبٕٝاٌّج
Irp name1, <arg1,arg2,arg3,….,argN>
اِش اٌّشاد رىشاس٘بٚػخ االِّٛغ
Endm
:ِضبي
Irp num , <10,20,30>
Add ax,num
Endm
خ١ٌاِش اٌزبٕٚفز اال٠ اٌغبثكٚاٌّبوش
Add ax,10
Add ax,20
Add ax,30
ax ً ٌٍّغغ60 ثبالخزظبس رُ اػبفخ
ِضبي اخش
Irp push_reg, <ax,bx,cx,dx>
Push push_reg
Mov push_reg,0
End
:خ١ٌاِش اٌزبٕٚفز اال٠ اٌغبثكٚاٌّبوش
Push ax
Mov ax,0
Push bx
Mov bx,0
Push cx
Mov cx,0
Push dx
Mov dx,0
اٌذٚاي
رغزخذَ اٌذٚاي ٌزغ ً١ٙػٍّ١خ اٌجشِغخ ٚاعشاء اٌزغ١١شاد اٌغش٠ؼخ ٚرمٍٔ ً١غجخاٌٛلٛع فٟ
أظش ِبدح اٌّبوش. ٚاالخطبء اٌىزبث١خ
اٌفشق ث ٓ١اٌذاٌخ ٚاٌّبوشٚ
اٌّبوش٠ ٚإد ٞاٌ ٝعشػخ اٌجشٔبِظ ثّٕ١ب اٌذٚاي رخفف ِٓ عشػخ اٌجشٔبِظ الْ اٌّؼبٌظ 1.
٠م َٛثبٌزٛعٗ اٌ ٝاٚاِش اٌذاٌخ ثؼذاعزذػبئٙب ثّٕ١ب اٌّبوش٠ ٚضسع اٚاِشٖ ف ٟاالِبوٓ
اٌّطٍٛثخ لجً اْ ٠زٛعٗ اٌ ٗ١اٌّؼبٌظ ٌزٕف١ز اٚاِشٖ أ ٞأٙب عب٘ضح ٌٍزٕف١ز
اٌّبوش٠ ٚىجش ِٓ ؽغُ اٌجشٔبِظ الٔٗ ٠ضسع االٚاِش ِٓ اٌجذا٠خ ثّٕ١ب اٌذاٌخ فمؾ ػٕذ 2.
االعزذػبء رم َٛثضسع االٚاِش
اٌذاٌخ ثؾبعخ اٌِ ٝىذط ٌؾفع ػٕٛاْ اٌؼٛدح ثّٕ١ب اٌّبوش١ٌ ٚظ ثؾبعخاٌ ٝاٌّىذط3.
٘ ٛاِش ٠إد ٞاٌ ٝاٌمفض ٌؼٕٛاْ ِؼ ٓ١ف ٟاٌجشٔبِظ ثذ ْٚسعٛع ٌٚىٓ ػٕذ jmpاالِش
اعزذػبء داٌخ ِؼٕ١خ فٕٙب ٠زُ اٌمفضاٌِ ٝغّٛػخ اٚاِش ثؾ١ش ٠م َٛاٌّؼبٌظ ثزٕف١ز٘ب ٚثؼذ
االٔزٙبء ِٓ رٕف١ز ٘زٖ االٚاِش ٠زُ اٌشعٛع اٌ ٝاالِش اٌّٛعٛد ثؼذ االِش اٌز ٞاد ٜاٌٝ
.اعزذػبء اٌذاٌخ
٘ ٟػجبسح ػٓ ِمطغ ثشٔبِظ ٠زُ االٔزمبي اٌ ٗ١ػٕذِب ٔم َٛثبعزذػبء اٌذاٌخ ٚفٙٔ ٟب٠خ :اٌذاٌخ
اٌّمطغ ٠غت اْ ٠ىٕ٘ ْٛبٌه اِش أٙبء ٌٍّمطغ اٌز٠ ٞشعغ اٌّؼبٌظ اٌ ٝاالِش اٌزٍٟ٠ ٞ
اِش االعزذػبء ٌزٌه ٠غت ػٍ ٝاٌّؼبٌظ اْ ٠ؾفع ػٕٛاْ االِش اٌز٠ ٞغت اٌشعٛع اٌٗ١
٠stack segment .خضْ ػٕٛاْ اٌشعٛع ف ٟاٌّىذط .لجً اْ ٠م َٛثؼٍّ١خ اٌمفض
رأخز ػٕٛاْ اٌذاٌخ اٌّشاد رٕف١ز٘ب ػٕذ اعزذػبء اٌذاٌخ cs ٚipأip ٚاٌّغغالد
ال ٠إصش ػٍِ ٝغغً اٌشا٠بد callاالِش ِ:الؽظخ
retاالِش
٠.غزخذَ ٘زا االِش ٌٍشعٛع ِٓ اٌذاٌخ retاالِش
ِretجٕ ٝاالِش
Ret n
اٌز٠ ٟغت رٕظ١فٙب ف ٟاٌّىذط ػٕذ اٌشعٛع ِٓ )ّ٠(bytesضً ػذد اٌجب٠زبد nاٌشِض
.اٌذاٌخ
اٌّمظٛد ثؼٍّ١خ اٌزٕظ١ف ٘ ٛاٌمفض ػٓ اٌجب٠زبد ٚرٌىؼٓ ؽش٠ك رغ١١ش سأط اٌّىذط
SPاٌّغغً
nثذret ْٚارا اسدٔب اْ ال ٔم َٛثؼٍّ١خ رٕظ١ف ثب٠زبد ف ٟاٌّىذط ٔغغً االِش ِ:الؽظخ
ال ٠إصش ػٍِ ٝغغً اٌشا٠بد retاالِش ِ:الؽظخ
أٛاع اٌذٚاي
ٕ٘بٌه ٔٛػبْ ِٓ اٌذٚاي
) ٟ٘ٚ(code segmentداٌخ اٌّٛعٛدح فٔ ٟفظ ِمطغ االٚاِش :داٌخ لش٠جخ 1.
اٌشئ١غٟ
ٟ٘ٚ.اٌذاٌخ اٌّٛعٛدح فِ ٟمطغ اٚاِش اخش :اٌذاٌخ اٌجؼ١ذح 2.
ِ:ضبي
ٚرفؾض ارا وبٔذ إٌز١غخ عبٌجخ ارا رؾمك ٌٍّalغغً 10أوزت داٌخ لش٠جخ اٌز ٟرؼ١ف
ٚblاال فبٔٙب رؼغ طفشف ٟاٌّغغً blف ٟاٌّغغً 1اٌششؽ رؼغ
:اٌؾً
Add_num proc near
Add al,10
Cmp al,-1
Jg t1
Mov bl,1
Jmp t2
T1:mov bl,0
T2: Ret
Add_num endp
ِ:ضبي اخش
ٚرفؾض ارا وبٔذ إٌز١غخ اوجش ِٓ 10ف ٟاٌؼذد blأوزت داٌخ اٌز ٟرؼشة اٌّغغً
فٚ0 ٟاال فبٔٙب رؼٛع dlف ٟاٌّغغً 2ارا رؾمك اٌششؽ رؼغ ف ٟاٌمّ١خ 50H
فٙٔ ٟب٠خ اٌذاٌخ ِٓstackاٌّىذط 4 bytesػٍ١ه رٕظ١ف dl .اٌّغغً
:اٌؾً
mul_num proc near
mov al,bl
mov cl,10
imul cl
cmp ax,50H
Jg t1
Mov dl,0
Jmp t2
T1:mov dl,2
T2: Ret 4
mul_num endp
اٌّجٕ ٝاٌؼبَ ٌذاٌخ ثؼ١ذح
Func_name proc far
اٚاِش اٌذاٌخ
Func_name endp
اػطبء اٌجشاِزشاد ٌٍذٚاي
ف٘ ٟزٖ اٌؾبٌخ ٔؼط ٟاٌذاٌخ ػٕٛاْ اٌّزغ١ش فؼٕذِب رم َٛاٌذاٌخ .by reference :ة
.ثبعشاء رغ١١شاد ػٍ ٝاٌّزغ١ش فبٔٙب رإصش ػٍ ٝلّ١خ اٌّزغ١ش االطٍ١خ ا٠ؼب
ٕ٘ب لجً اعزذػبء اٌذاٌخ ٔم َٛثبسعبي اٌم ُ١اٌ ٝاٌّىذط ٚثؼذ٘ب (stack):اٌّىذط 2.
ٚmovاالِش ٔbpغزذػ ٟاٌذاٌخ ٚرم َٛاٌذاٌخ ثبخز اٌم ِٓ ُ١اٌّىذط ثّغبػذح اٌّغغً
٠م َٛثبعزذػبء اٌذاٌخ اٌّطٍٛثخ ٚا٠ؼب ٠م َٛثبدخبي ػٕٛاْ callرزوش اْ االِش ِ:الؽظخ
داٌخ (ثذ 32ا) ٚداٌخ لش٠جخ(ثذ 16اٌشعٛع ا٠ؼب ف ٟاٌّىذط ٘ٚزا اٌؼٕٛاْ ثطٛي
ارا اٌمِٛ ُ١عٛدح ف ٟاٌخال٠ب اٌز ٟرؾذ اٌخال٠ب اٌز ٟرؾز ٞٛػٍ ٝػٕٛاْ اٌؼٛدح ا) ٚثؼ١ذح
اٌشعٛع
:رّشٓ٠
ػٓ ؽش٠ك اٌّىذط رم(word) َٛاوزت داٌخ لش٠جخ اٌز ٟرزٍم ٝلّ١ز ٓ١وً لّ١خ ثىجش وٍّخ
DX .اٌذاٌخ ثغّغ ٘زٖ اٌمٚ ُ١رؾفع اٌذاٌخ إٌز١غخ ف ٟاٌّغغً
ػٍ ٝاٌذاٌخ اْ رخشط ٘زٖ اٌمِٕ ِٓ ُ١طمخ اٌّىذط فٙٔ ٟب٠خ اٌذاٌخ ِ:الؽظخ
:اٌؾً
Test_proc proc near
Mov bp,sp
Add bp,2
Mov ax,[bp]
Add bp,2
Mov dx,[bp]
Add dx,ax
Ret 4
Test_proc endp
ٓ٠رّش:
ٝخ رزٍم١ٔف اٌشبشخ اٌذاٌخ اٌضب١ ٌزٕظٌٝٚٓ اٌذاٌخ اال١ داٌزٍٝ ػٞٛؾز٠ اوزت ثشٔبِغب وبِال
ً اٌّغغٟغخ ف١ؽفع إٌزٚ ٓ١ّز١َ ثغّغ اٌمٛرمٚ ك اٌّىذط٠ٓ ػٓ ؽش١ّز١لDX .
ًاٌؾ:
.model small
.stack 20h
.Data
.code
Start:mov ax,@data
Mov ds,ax
call clean
Mov bx,3
Push bx
Mov bx,6
Push bx
Call test_proc
Mov ah,4ch
Int 21h
clean proc near
mov ax,3
int 10h
ret
clean endp
Test_proc proc near
Mov bp,sp
Add bp,2
]Mov ax,[bp
Add bp,2
]Mov dx,[bp
Add dx,ax
Ret 4
Test_proc endp
End start
وٛد BCD
BCD-CODE: binary coded decimal code
ِؼظُ اٌّذخالد اٌؼذد٠خ ٘ٛٔ ِٓ ٟع ٔض ٚاٌز ٟرّضً اػذاد ػشش٠خ .اؽذٜ
اٌطشق ٌّؼبٌغخ ٘زٖ اٌّذخالد ٘ ٟرشعّخ ٘زا إٌض ٌؼذد ف ٟاٌّ١ضاْ اٌضٕبئٟ
ٚثؼذ٘ب اٌم١بَ ثبٌؼٍّ١بد اٌؾغبث١خ اٌّطٍٛثخ ٚارا اسدٔب اْ ٔؼشع إٌز١غخ ٔمَٛ
ثزؾ ً٠ٛإٌز١غخ ِٓ لّ١خ ػذد٠خ أٌ ٝض صُ ٔؼشع إٌض ػٍ ٝاٌشبشخ ِضال.
ػٍّ١خ اٌزشعّخ اٌّضدٚعخ ِٓ ٔض اٌ ٝلّ١خ ػذد٠خ ِٓٚلّ١خ ػذد٠خ أٌ ٝض
ثؾبعخ اٌٚ ٝلذ أ ٞإٔب ٔخغش ٚلزب ؽ٠ٛال ف ٟػٍّ١بد اٌزشعّخ.
ؽش٠مخ صبٔ١خ ٌّؼبٌغخ إٌظٛص ٘ ٟاْ ٔم َٛثبعشاء اٌؼٍّ١بد اٌؾغبث١خ ػٍٝ
إٌظٛص ٚثؼذ٘ب ٔم َٛثزظؾ١ؼ إٌز١غخ ثّغبػذح اِش ِؼٌٍ ٓ١ؾظٛي ػٍٝ
شىً لّ١خ ػشش٠خ .ؽز٠ ٝى ْٛاٌزظؾ١ؼ ثغ١طب لبِٛا ثبٔشبء وٛد BCD
ِب ١ّ٠ض ٘زا اٌىٛد ٘ ٛاْ:
اٌشِٛص اٌّغزؼٍّخ ف٘ ٟزا اٌىٛد ٘0 ,1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 ٟ
ٕ٘بٌه ٔٛػبْ ٌزّضٌٙ ً١زا اٌىٛد
: packed BCD.1ف٘ ٟزٖ اٌؾبٌخ وً ثب٠ذ ٠ؾز ٞٛػٍ ٝخبٔز ٓ١أ ٞوً خبٔخ
ثؾبعخ اٌ 4 ٝثزبد
: unpacked BCD.2ف٘ ٟزٖ اٌؾبٌخ وً ثب٠ذ ٠ؾز ٞٛػٍ ٝخبٔخ ٚاؽذح فمؾ
أ ٞوً خبٔخ ثؾبعخ اٌ 8 ٝثزبد
اٌ١ىُ اٌغذٚي اٌزبٌ ٟاٌز٠ ٞظٙش ثؼغ االػذاد ف ٟاٌّ١ضاْ اٌؼششٚ ٞوٛد
BCD
Unpacked BCD اٌّ١ضاْ اٌؼششPacked BCD ٞ
00H 0H 0
01H 1H 1
02H 2H 2
03H 3H 3
04H 4H 4
05H 5H 5
06H 6H 6
07H 7H 7
08H 8H 8
09H 9H 9
0101H 11H 11
0102H 12H 12
0508H 58H 58
020105H 215H 215
إٌز١غخ اٌغبثمخ طؾ١ؾخ ارا ف٘ ٟزٖ اٌؾبٌخ إٌز١غخ ٌ١غذ ثؾبعخ اٌ ٝرظؾ١ؼ
ٕٔظش اٌ ٝاٌؼٍّ١خ اٌزبٌ١خ:
ارا ٔظشٔب اٌ ٝإٌز١غخ فبْ إٌز١غخ رؾز ٞٛػٍ ٝسِض ٘ٚ Bزا اٌشِضغ١ش ِغّٛػ
ف ٗ١فBCD-CODE ٟ
اٌؾً:
ارا اػفٕب اٌمّ١خ 6اٌ ٝاٌخبٔخ اٌغ١ش ِٕطم١خ ف ٟإٌز١غخ رزُ ػٍّ١خ اٌزظؾ١ؼ
أظش اٌؾً:
2BH+06H=31H
أظش اٌ ٝاٌزّش ٓ٠اٌزبٌ:ٟ
ارا ٔظشٔب اٌ ٝإٌز١غخ ٔش ٜاْ خبٔبد إٌز١غخ ِٓ اٌشِٛص اٌّغّٛػ فٙ١ب ٌٚىٓ
اٌز١غخ ثؾبعخ اٌ ٝرؼذٌٍ ً٠ؾظٛي ػٍ ٝاٌشىً اٌّطٍٛة.
اٌؾً اْ ٔؼ١ف ٌٍٕز١غخ 6
31H+06H=37H
اٌغجت ٕ٘ب ٘ ٛاْ اٌخبٔخ اال ٌٝٚثؼذ ػٍّ١خ اٌغّغ اػطذ اٌخبٔخ اٌضبٔ١خ اٌمّ١خ 1
.أ ٞاْ ( AF=1أظش ِغغً اٌشا٠بد)
ثبالخزظبس ٕ٘بٌه ؽبٌزبْ ٠غت اْ ٔظؾؼ إٌز١غخ فّٙ١ب
.1ارا وبٔذ إٌز١غخ رؾز ٞٛػٍ ٝسِض ٌ١ظ ِٓ اٌشِٛص اٌّغّٛػ فٙ١ب فٟ
BCD-CODEثبالخزظبس ارا وبٔذ اؽذ ٜاٌخبٔبد اوجش ِٓ 9
.2ارا وبْ AF=1
ٌزظؾ١ؼ إٌز١غخ رغزخذَ االٚاِش اٌزبٌ١خ:
ِالؽظخ ِٓ :إٌفؼً اْ ٔطٍت رظؾ١ؼ إٌز١غخ ثؼذ وً ػٍّ١خ الٕٔب ال ٔؼشف
ارا وٕب ثؾبعخ ا ٚال ٌٚىٓ اٌّؼبٌظ ّ٠ىٕٗ اْ ١ّ٠ض ارا ٔؾٓ ٌغٕب ثؾبعخ اٌٝ
فؾض إٌز١غخ ٚثؼذ٘ب ٔمشس ٚأّب ٔطٍت ِٓ اٌّؼبٌظ اْ ٠ظؾؼ ثؼذ وً ػٍّ١خ
ٛ٘ٚاٌز٠ ٞمشس ارا وبٔذ ٕ٘بٌه ؽبعخ اَ ال
1)AAA
ASCII adjust after addition
٠-م٘ َٛزا االِش ثزظؾ١ؼ إٌز١غخ اٌّٛعٛدح ف ٟاٌّغغً ALاٌ ٝاٌشىً
اٌؼشش ٞف ٟوٛد ٚ unpaked BCDرؼغ إٌز١غخ اٌغذ٠ذح ف ٟاٌّغغً AX
٠-غزخذَ ٘زا االِش ثؼذ ػٍّ١خ عّغ ث ٓ١لّ١زٛٔ ِٓ ٓ١ع unpaked BCDاٚ
ثىٛد ASCII
ِضبي:
MOV ax,0
Mov al,5
Add al,8
AAA
ثؼذ ٘زٖ اٌؼٍّ١خ
AX=0103H
رّش ٓ٠اخش:
Mov ax,0108H
'add al,'7
AAA
ثؼذ ٘زٖ اٌؼٍّ١خ:
AX=0205H
2)DAA
decimal adjust after addition
٠م٘ َٛزا االِش ثزظؾ١ؼ إٌز١غخ اٌّٛعٛدح ف ٟاٌّغغً ٌ ALخبٔز ٓ١فٟ
. packed BCD
ٔغزخذَ ٘زا االِش ثؼذ ػٍّ١خ عّغ ث ٓ١لّ١زٛٔ ِٓ ٓ١ع packed BCD
ِضبي:
Mov ax,0
Mov al,45H
Add al ,28H
DAA
ثؼذ ٘زا اٌّمطغ
AX=0073H
3)AAS
ASCII ADJUST AFTER SUBTRACTION
ئخ١٘ ٟ فٞ ٌؼذد ػششAL ً اٌّغغٟغخ ف١ؼ إٌز١َ ثزظؾٛم٠ ٘زا االِش
unpacked BCD
عٛٔ ِٓ ٓ١ّز١ٓ ل١خ ؽشػ ث١ٍّٔغزخذَ ٘زا االِش ثؼذ ػ
ASCII-code ٚ اunpacked BCD
:ِضبي
Mov ax , 0105H
Sub al,08H
AAS
ثؼذ ٘زا اٌّمطغ
AX=0007
4)DAS
decimal adjust after subtraction
خ٠ٓ ػشش١ ٌخبٔزAL ً اٌّغغٟدح فٛعٌّٛغخ ا١ؼ إٌز١َ ٘زا االِش ثزظؾٛم٠
. packed BCD ئخ١٘ ٟف
packed BCD عٛٔ ِٓ ٓ١ّز١ٓ ل١خ ؽشػ ث١ٍّٔغزخذَ ٘زا االِش ثؼذ ػ
:ِضبي
Mov ax,0
Mov al,45H
sub al ,28H
DAS
ثؼذ ٘زا اٌّمطغ
AX=0017H
5)AAM
ASCII adjust after multiply
٘زا االِش ٠م َٛثزظؾ١ؼ اٌمّ١خ اٌّٛعٛدح ف ٟاٌّغغً ALاٌ ٝخبٔز ٓ١ف١٘ ٟئخ
ٔ . unpacked BCDز١غخ اٌزظؾ١ؼ رخضْ ف ٟاٌّغغً AXوٍٗ ثؾ١ش خبٔخ
اٌؼششاد رخضْ ف ٟاٌّغغً ٚ AHخبٔخ االؽبد ف ٟاٌّغغً . AL
ٔغزخذَ ٘زا االِش ثؼذ ػٍّ١خ اٌؼشة
Mov al,04H
Mov CL , 08H
MUL CL
AAM
ثؼذ ٘زا اٌّمطغ
AX=0302H
ِالؽظخٔ:غزخذَ ٘زا االِش اؽ١بٔب ثذ ْٚأ ٞطٍخ ٌٍؼشة ٌزؾ ً٠ٛػذد ِٓ
اٌّ١ضاْ اٌغبدط ػشش اٌ ٝػذد ف ٟوٛد unpacked BCDثششؽ اْ ال ٠ىْٛ
اٌؼذد اوجش ِٓ 99
ِضبي:
Mov ax,0013H
AAM
ٕ٘ب ٔؾظً ػٍٝ
AX=0109H
6)AAD
ASCII adjust for Division
٠م٘ َٛزا االِش ثزظؾ١ؼ اٌمّ١خ اٌّٛعٛدح ف ٟاٌّغغً ٚ AXاٌز ٟ٘ ٟػٍٝ
unpacked BCDلجً ػٍّ١خ اٌمغّخ اٌ ٝلّ١خ ف ٟاٌّ١ضاْ اٌغبدط ػشش hex
.
ِضبي:
Mov CL,06H
Mov ax,0109H
AAD
DIV CL
ثؼذ االِش AADرظجؼ لّ١خ اٌّغغً AX=0013H
ٚثؼذ ػٍّ١خ اٌمغّخ DIV CL
AL=03 , AH=01
أ ٞاْ AX=0103H
ِالؽظخٔ:غزخذَ ٘زا االِش اؽ١بٔب ثذ ْٚأ ٞطٍخ ٌٍمغّخ ٌزؾ ً٠ٛػذد ف ٟوٛد
unpacked BCDاٌ ٝػذد ف ٟاٌّ١ضاْ اٌغبدط ػشش ثششؽ اْ ال ٠ىْٛ
اٌؼذد اوجش ِٓ 99
ِضبي:
Mov ax,0201H
AAD
ٕ٘ب ٔؾظً ػٍٝ
AX=0015H