Asembe Learning
Asembe Learning
COM
[email protected]
WWW.IRANMEET.COM
ﻓﻬﺮﺳﺖ ﻣﻄﺎﻟﺐ
ﺻﻔﺤﻪ ﻋﻨﻮان
ﭘﻴﺸﮕﻔﺘﺎر 1....................................................................................................................................
[email protected]
WWW.IRANMEET.COM
[email protected]
WWW.IRANMEET.COM
[email protected]
WWW.IRANMEET.COM
-6-2-2دﺳﺘﻮراﻟﻌﻤﻞ134.................................................................................. SHR
-6-2-3دﺳﺘﻮراﻟﻌﻤﻞ 136.................................................................................SAL
-6-2-4دﺳﺘﻮراﻟﻌﻤﻞ137................................................................................ SAR
-6-3ﻋﻤﻠﻴﺎت ﭼﺮﺧﺶ )138............................................................................. ( Rotate
-6-3-1دﺳﺘﻮراﻟﻌﻤﻞ138................................................................................ ROL
-6-3-2دﺳﺘﻮراﻟﻌﻤﻞ140................................................................................ ROR
-6-3-3دﺳﺘﻮراﻟﻌﻤﻞ141................................................................................ RCL
-6-3-4دﺳﺘﻮراﻟﻌﻤﻞ143................................................................................ RCR
-6-4ﻋﻤﻠﻴﺎت ﻓﻠﮓﻫﺎ 145....................................................................................................
-6-5ﺗﺒﺪﻳﻞ ﺣﺮوف 146.......................................................................................................
ﻣﺮوري ﺑﺮ ﻣﻄﺎﻟﺐ ﻓﺼﻞ148..........................................................................................................
aﺗﻤﺮﻳﻦ 149..............................................................................................................................
[email protected]
WWW.IRANMEET.COM
[email protected]
WWW.IRANMEET.COM
aﺗﻤﺮﻳﻦ 232..............................................................................................................................
ﻓﺼﻞ ﻧﻬﻢ :ﺑﺮﻧﺎﻣﻪﻫﺎي ﻧﻤﻮﻧﻪ
ﻫﺪف ﻛﻠﻲ 233................................................................................................................................
اﻫﺪاف رﻓﺘﺎري 233.........................................................................................................................
-9-1اﺟﺰاي ﻳﻚ ﺑﺮﻧﺎﻣﻪ 234..................................................................................................
-9-2ﻳﻚ ﺑﺮﻧﺎﻣﻪ ﻧﻤﻮﻧﻪ 234..................................................................................................
-9-3ﻧﺤﻮة اﺟﺮاي ﺑﺮﻧﺎﻣﻪ 236..............................................................................................
-9-4ﺑﺮﻧﺎﻣﻪﻫﺎي اﺳﻤﺒﻠﻲ ﻧﻮﺷﺘﻪ ﺷﺪه 237........................................................................
ﻣﺮوري ﺑﺮ ﻣﻄﺎﻟﺐ ﻓﺼﻞ269..........................................................................................................
ﻓﺼﻞ دﻫﻢ :اﺳﻤﺒﻠﻲ 80386
ﻫﺪف ﻛﻠﻲ 270................................................................................................................................
اﻫﺪاف رﻓﺘﺎري 270........................................................................................................................
-10-1رﻳﺰ ﭘﺮدازﻧﺪه 270....................................................................................... 80386
-10-2اﻧﻮاع دادهﻫﺎ 271.........................................................................................................
-10-3ﻣﺤﺎﺳﺒﻪ آدرس ﻣﺆﺛﺮ )272......................................... (Effective Address
-10-4ﻣﻌﻤﺎري 272..............................................................................................................
-10-5دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي 276..................................................................................80386
ﻣﺠﻤﻮﻋﺔ ﻛﺎﻣﻞ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي 279..................................................................... 80386
ﻣﺮوري ﺑﺮ ﻣﻄﺎﻟﺐ ﻓﺼﻞ 285.............................................................................................................
ﺿﻤﺎﺋﻢ
ﺿﻤﻴﻤﻪ :1ﻋﻤﻠـﮕﺮﻫﺎ )286............................................................. (OPERATORS
ﺿﻤﻴﻤﻪ ﺷﻤﺎره 290............................................... Instruction Set Summary :2
ﺿﻤﻴﻤﻪ ﺷﻤﺎره 293................................................................. Instruction times : 3
ﺿﻤﻴﻤﻪ ﺷﻤﺎره :4ﻛﺪ ﻣﺎﺷﻴﻦ دﺳﺘﻮراﻟﻌﻤﻞﻫﺎ 300..............................................................
ﺿﻤﻴﻤﻪ ﺷﻤﺎره :5ﺟﺪول ﻛﺪ اﺳﻜﻲ 302..............................................................................
ﺿﻤﻴﻤﻪ ﺷﻤﺎره :6ﻛﺪ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ 303..............................................................................
ﺳﺌﻮاﻻت ﭼﻬﺎر ﮔﺰﻳﻨﻪاي 318............................................................................................................
واژه ﻧﺎﻣﻪ 368.......................................................................................................................................
[email protected]
WWW.IRANMEET.COM
١
ﭘﻴﺸﮕﻔﺘﺎر
ﺑﺎ ﻟﻄﻒ و ﻋﻨﺎﻳﺖ ﭘﺮودﮔﺎر ﻣﺘﻌﺎل ﻛﺘـﺎب زﺑـﺎن ﻣﺎﺷـﻴﻦ و ﺑﺮﻧﺎﻣـﻪ ﺳـﺎزي
ﺳﻴﺴﺘﻢ ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﻧﻴﺎز داﻧﺸﺠﻮﻳﺎن داﻧﺸﮕﺎه ﭘﻴﺎم ﻧﻮر در رﺷﺘﻪ ﻣﻬﻨﺪﺳﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ
ﺑﺼﻮرت ﺧﻮدآﻣﻮز و ﺑﺎ ﻣﺜﺎﻟﻬﺎي زﻳﺎد و ﺳﺎده و روان ﺗﻬﻴﻪ ﮔﺮدﻳﺪه اﺳﺖ .ﻣﻄﺎﻟﺐ
اراﺋﻪ ﺷﺪه ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﺠﺮﺑﻴﺎت ﺗﺪرﻳﺲ در درس ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ زﺑﺎن اﺳﻤﺒﻠﻲ در
ﺳﺎﻟﻴﺎن ﻣﺘﻤﺎدي در داﻧﺸﮕﺎه ﻣﻲﺑﺎﺷﺪ .اﻳﻦ ﻛﺘﺎب در ده ﻓﺼﻞ آﻣﺎده ﺷﺪه ﻛـﻪ ﻫـﺮ
ﻓﺼﻞ داراي اﻫﺪاف ﻓﺼﻞ ،ﺗﻤﺮﻳﻦ و ﻣـﺮوري ﺑـﺮ ﻣﻄﺎﻟـﺐ ﻓـﺼﻞ ﻣـﻲﺑﺎﺷـﺪ .در
اﻧﺘﻬﺎي ﻛﺘﺎب ﺳﺆاﻻت ﭼﻬﺎر ﮔﺰﻳﻨﻪاي و ﻧﻬﺎﻳﺘﺎً واژه ﻧﺎﻣﻪ ﮔﻨﺠﺎﻧﺪه ﺷﺪه اﺳﺖ.
اﻳﻦ ﻛﺘﺎب ﻗﺪرداﻧﻲ و ﺳﭙﺎﺳﮕﺰاري ﻧﻤﻮده و اﻳﻦ ﻛﺘﺎب را ﺑـﻪ ﻫﻤـﺴﺮ ﻣﻬﺮﺑـﺎﻧﻢ و
ﺩﺍﺭﻳﻮﺵ ﻧﻴﻚﻣﻬﺮ
[email protected]
WWW.IRANMEET.COM
٢
ﻓﺼﻞ اول
ﺳﻴﺴﺘﻢ اﻋﺪاد
ﻫﺪف ﻛﻠﻲ
ﻧﻤﺎﻳﺶ ﻣﻘﺎدﻳﺮ در ﺳﻴﺴﺘﻢ دودوﺋﻲ و ﻧﺤﻮه ﺗﺒﺪﻳﻞ آﻧﻬﺎ ﺑﻪ ﺳﺎﻳﺮ ﺳﻴﺴﺘﻤﻬﺎ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻮارد زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ.
-1ﻣﻘﺎدﻳﺮ دودوﺋﻲ ﻳﺎ ﺑﺎﻳﻨﺮي.
-2واﺣﺪﻫﺎي ﻣﺨﺘﻠﻒ اﻧﺪازهﮔﻴﺮي ﺣﺎﻓﻈﻪ.
-3ﻧﻤﺎﻳﺶ اﻋﺪاد ﻣﻨﻔﻲ.
-4ﺗﺒﺪﻳﻞ ﻣﻘﺎدﻳﺮ ﺑﺎﻳﻨﺮي ﺑﻪ ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ و ﺑﺮﻋﻜﺲ.
[email protected]
WWW.IRANMEET.COM
٣
ﻣﺜﺎل 1-1
[email protected]
WWW.IRANMEET.COM
٤
ﺑﻪ ﻣﻨﻈﻮر ﺗﺒﺪﻳﻞ ﻣﻘﺪاري از ﺳﻴﺴﺘﻢ ﺑﺎﻳﻨﺮي ﺑﻪ ﺳﻴﺴﺘﻢ دﻫـﺪﻫﻲ ،ارﻗـﺎم ﻋـﺪد را
ﻣﻲﺑﺎﻳﺴﺘﻲ ﺑﺘﺮﺗﻴﺐ از راﺳﺖ ﺑﻪ ﭼﭗ در … 16 ،8 ،2 ،1ﺿﺮب ﻧﻤﻮده ﺑـﺎ ﻫـﻢ ﺟﻤـﻊ
ﻧﻤﺎﺋﻴﻢ .ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻋﺪد 11010در ﺳﻴﺴﺘﻢ دودوﻳﻲ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﻣﺜﺎل 1-2
1 1 0 1 0
16 8 4 2 1
16*1+ 16+
8*1 8
4*0 0
2*1 2
1*0 0
26
[email protected]
WWW.IRANMEET.COM
٥
ﻣﺜﺎل 1-4
ﻋﺪد 1101101را ﺑﻪ ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
64+
32
8
4
1
109
[email protected]
WWW.IRANMEET.COM
٦
1 Carry
1010+
11
1101
ﻣﺜﺎل 1-5
ﻣﺠﻤﻮع دو ﻣﻘﺪار 20و 17را ﺑﺪﺳﺖ آورﻳﺪ.
اﺑﺘﺪا ﻣﻘﺎدﻳﺮ 17و 20را ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻣﻲﻧﻤﺎﺋﻴﻢ.
[email protected]
WWW.IRANMEET.COM
٧
1 Carry
10001+
10100
100101
ﻛﻪ اﻳﻦ ﻣﻘﺪار ﻳﻌﻨﻲ 100101اﮔﺮ ﺑﻪ ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺗﺒﺪﻳﻞ ﺷﻮد ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ
32+
4
1
37
[email protected]
WWW.IRANMEET.COM
٨
-1-3ﺑﺎﻳﺖ )(Byte
در ﺣﺎﻓﻈﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻓﻘﻂ ﻣﻘﺎدﻳﺮ 0و 1ذﺧﻴﺮه ﻣﻴﺸﻮد .ﺑـﻪ ارﻗـﺎم 0و 1ﺑﻴـﺖ
ﮔﻔﺘﻪ ﻣﻴﺸﻮد .ﺑﻴﺖ ﻣﺨﻔﻒ ﻛﻠﻤﺎت binary digitﻣﻲﺑﺎﺷﺪ .ﺑﻪ ﻫﺮ ﻫﺸﺖ ﺑﻴﺖ ﻛﻨﺎر ﻫـﻢ
در ﺣﺎﻓﻈﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎﻳﺖ ﮔﻔﺘﻪ ﻣﻴﺸﻮد .ﺑﻴﺖﻫﺎي ﻳﻚ ﺑﺎﻳﺖ از 0ﺗـﺎ 7ﺷـﻤﺎره ﮔـﺬاري
ﺷﺪه و ﺑﻴﺖ ﺷﻤﺎره 0ﺑﻴﺖ ﻛﻢ ارزشﺗﺮﻳﻦ ﻳﺎ LSBو ﺑﻴﺖ ﺷﻤﺎره 7ﺑﻴﺖ ﺑﺎ ﺑﻴـﺸﺘﺮﻳﻦ
ارزش ﻳﺎ MSBﻣﻲﺑﺎﺷﺪ.
ﻫﺮ ﺑﺎﻳﺖ 256وﺿﻌﻴﺖ ﻣﺨﺘﻠﻔﻪ از 0و 1را اﻳﺠﺎد ﻣـﻲﻧﻤﺎﻳـﺪ .ﺑﻨـﺎﺑﺮاﻳﻦ اﻋـﺪاد
ﺻﺤﻴﺢ ﺑﻴﻦ 0ﺗﺎ 255را ﻣﻲﺗﻮان در ﻳﻚ ﺑﺎﻳﺖ ﻗﺮار داد .از ﻃﺮف دﻳﮕﺮ در ﻛﺎﻣﭙﻴﻮﺗﺮ از
256ﻛﺎرﻛﺘﺮ ﻣﺨﺘﻠﻒ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد .ﺑﺎ اﺳﺘﻔﺎده از ﺟﺪول ﻛﺪ ASCIIﻣﻲﺗـﻮان
ﺑﻪ ﻫﺮ ﻛﺎراﻛﺘﺮ ﻳﻚ ﻛﺪ ﻣﻨﺤﺼﺮ ﺑﻔﺮد ﺑﻴﻦ 0ﺗﺎ 255ﺗﺨﺼﻴﺺ داد .ﺑﻨﺎﺑﺮاﻳﻦ ﻫﺮ ﻛـﺎراﻛﺘﺮ
ﻋﻤﻼً ﻳﻚ ﺑﺎﻳﺖ اﺷﻐﺎل ﻣﻲﻧﻤﺎﻳﺪ.
-1-4ﻣﻘﺎدﻳﺮ ﻣﻨﻔﻲ
اﻋﺪاد و ﻣﻘﺎدﻳﺮ ﻣﻨﻔﻲ در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎ اﺳـﺘﻔﺎده از روش ﻣﻜﻤـﻞ 2ﻧﻤـﺎﻳﺶ داده
ﻣﻲﺷﻮﻧﺪ .ﺑﺮاي ﻧﻤﺎﻳﺶ ﻳﻚ ﻣﻘﺪار ﻣﻨﻔﻲ در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎﻳﺴﺘﻲ ﻣﺮاﺣﻞ زﻳﺮ را ﻃﻲ ﻧﻤﻮد.
[email protected]
WWW.IRANMEET.COM
٩
-1اﺑﺘﺪا ﻋﺪد را ﺑﺪون ﻋﻼﻣﺖ ﺗﺼﻮر ﻧﻤﻮده آﻧﺮا ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-2ﺳﭙﺲ آﻧﻘﺪر رﻗﻢ 0در ﺳﻤﺖ ﭼﭗ ﻧﺘﻴﺠﻪ ﻣﺮﺣﻠﻪ 1ﻗﺮار ﻣﻲدﻫﻴﻢ ﺗﺎ ﺗﻌﺪاد ارﻗـﺎم آن
ﻣﻀﺮﺑﻲ از ﻫﺸﺖ ﮔﺮدد .ﭼﻨﺎﻧﭽﻪ ﻧﺘﻴﺠﻪ ﻣﺮﺣﻠﻪ 1از ﻫﺸﺖ رﻗـﻢ ﺑﻴـﺸﺘﺮ ﺑﺎﺷـﺪ ﺑﺎﻳـﺴﺘﻲ
آﻧﻘﺪر 0در ﺳﻤﺖ ﭼﭗ ﻗﺮار دﻫﻴﻢ ﺗﺎ ﺷﺎﻧﺰده رﻗﻤﻲ ﮔﺮدد.
-3ﺳﭙﺲ ارﻗﺎم ﻧﺘﻴﺠﻪ ﻣﺮﺣﻠﻪ 2را ﻣﻜﻤﻞ ﻣﻲﻧﻤـﺎﺋﻴﻢ ﻳﻌﻨـﻲ 0ﺑـﻪ 1و 1ﺑـﻪ 0ﺗﺒـﺪﻳﻞ
ﻣﻲﻛﻨﻴﻢ.
-4ﻧﺘﻴﺠﻪ ﺑﺪﺳﺖ آﻣﺪه را در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺑﺎ 1ﺟﻤﻊ ﻣﻲﻧﻤﺎﺋﻴﻢ.
ﻣﺜﺎل 1-7
ﻋﺪد –26را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .اﺑﺘـﺪا ﻋـﺪد 26را ﺑـﻪ ﺳﻴـﺴﺘﻢ دودوﻳـﻲ ﺗﺒـﺪﻳﻞ
ﻣﻲﻧﻤﺎﺋﻴﻢ.
26 2 13 0
13 2 6 1
6 2 3 0
3 2 1 1
1 2 0 1
11100101+
1
11100110
[email protected]
WWW.IRANMEET.COM
١٠
ﻋﺪد 11100110در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻧﻤﺎﻳﺶ –26ﻣﻲ ﺑﺎﺷـﺪ ﻛـﻪ ﻳـﻚ ﺑﺎﻳـﺖ
اﺷﻐﺎل ﻣﻲﻧﻤﺎﻳﺪ .ﻧﻜﺘﻪ ﻣﻬﻤﻲ ﻛﻪ ﺑﺎﻳﺴﺘﻲ در ﻧﻈﺮ داﺷﺖ اﻳـﻦ اﺳـﺖ ﻛـﻪ MSBاﻋـﺪاد
ﻣﻨﻔﻲ در روش ﻣﻜﻤﻞ 2ﻫﻤﻴﺸﻪ 1ﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل 1-8
ﻋﺪد –35را ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
1101100 +
1
11011101
[email protected]
WWW.IRANMEET.COM
١١
ﻣﺜﺎل 1-9
ﻋﻤﻞ زﻳﺮ را ﺑﺎ اﺳﺘﻔﺎده از روش ﻣﻜﻤﻞ 2اﻧﺠﺎم دﻫﻴﺪ.
27-
20
ﻣﻘﺪار 27ﻣﻌﺎدل 11011در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻣﻲﺑﺎﺷﺪ .ﺣﺎل اﺑﺘﺪا ﻣﻘـﺪار 20را
ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﻮد.
[email protected]
WWW.IRANMEET.COM
١٢
11101011+
1
11101100
ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار –20ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ 11101100در ﺳﻴﺴﺘﻢ دودوﻳـﻲ.
ﺣﺎل دو ﻣﻘﺪار –20و 27را در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﻧﻤﺎﺋﻴﻢ.
11101100 +
11011
100000111
ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ آﻧﻜﻪ ﻧﺘﻴﺠﺔ ﺟﻤﻊ دو ﺑﺎﻳﺖ ﺑﺼﻮرت ﻳـﻚ ﺑﺎﻳـﺖ ﻣـﻲﺑﺎﺷـﺪ ﺑﻴـﺖ 1
ﺳﻤﺖ ﭼﭗ ﺑﺎﻳﺴﺘﻲ ﺣﺬف ﮔﺮدد ،ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد 111ﻛﻪ ﺑﺮاﺑﺮ ﺑﺎ 7ﻣﻲﺑﺎﺷﺪ.
-1-5ﮔﺮوهﺑﻨﺪي ﺑﻴﺖﻫﺎ
ﺑﻪ ﻫﺮ ﻫﺸﺖ ﺑﻴﺖ ﻛﻨﺎر ﻫﻢ ﺑﺎﻳﺖ ﮔﻔﺘـﻪ ﻣـﻲﺷـﻮد .دو ﺑﺎﻳـﺖ ﻛﻨـﺎر ﻫـﻢ ﻳﻌﻨـﻲ
ﺷﺎﻧﺰده ﺑﻴﺖ ﻣﺘﻮاﻟﻲ را wordﻣﻲﻧﺎﻣﻨﺪ)اﻟﺒﺘﻪ در ﺑﻌﻀﻲ از ﻛﺎﻣﭙﻴﻮﺗﺮ ﻫـﺎ ﻫـﺮ ﻛﻠﻤـﻪ ﻣـﻲ
ﺗﻮاﻧــــﺪ ﺷــــﺎﻣﻞ 4ﺑﺎﻳــــﺖ ﺑﺎﺷــــﺪ( .ﺑﻴــــﺖﻫــــﺎي ﻳــــﻚ wordاز 0ﺗــــﺎ 15
ﺷــﻤﺎرهﮔــﺬاري ﻣــﻲ ﮔــﺮدد .در ﻳــﻚ wordﺑﺎﻳــﺖ ﺳــﻤﺖ راﺳــﺖ را ﺑﺎﻳــﺖ
ﻣﺮﺗﺒــﻪ ﭘــﺎﺋﻴﻦ ) (Low order byteو ﺑﺎﻳــﺖ ﺳــﻤﺖ ﭼــﭗ را ﺑﺎﻳــﺖ ﻣﺮﺗﺒــﻪ ﺑــﺎﻻ
)(High order byteﮔﻔﺘﻪ ﻣﻲﺷﻮد.
[email protected]
WWW.IRANMEET.COM
١٣
ﺟﺪول 1-1
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻋﻤﻠﻴﺎت ﺑﺎﻳﻨﺮي روي ﺑﻴﺖﻫﺎ اﻧﺠﺎم ﻣـﻲﺷـﻮد .ﺟـﺪول
ﻋﻤﻠﮕﺮ ﺟﻤﻊ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
ﺟﺪول 1-2
ﺑﻴﺖ 1 ﺑﻴﺖ 2 ﻧﺘﻴﺠﻪ دوﺑﺮﻳﻚ )(carry
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1
[email protected]
WWW.IRANMEET.COM
١٤
ﺟﺪول 1-3
ﺑﻴﺖ 1 ﺑﻴﺖ 2 ﻧﺘﻴﺠﻪ ﻳﻚ ﻗﺮﺿﻲ )(borrow
0 0 0 0
0 1 0 1
1 0 1 0
1 1 0 0
A 10
B 11
C 12
D 13
E 14
F 15
ﺑﺮاي ﺗﺒﺪﻳﻞ ﻣﻘﺪاري از ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺑﻪ ﺳﻴـﺴﺘﻢ ﻣﺒﻨـﺎي ﺷـﺎﻧﺰده آن ﻋـﺪد را
ﺑﻄﻮر ﻣﺘﻮاﻟﻲ ﺑﺮ 16ﺗﻘﺴﻴﻢ ﻣﻲﻧﻤﺎﺋﻴﻢ .ﺑﻌﻨﻮان ﻣﺜﺎل ﻋﺪد 174را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﻣﺜﺎل 1-10
ﻣﻘﺪار ﺗﻘﺴﻴﻢ ﺑﺮ ﻧﺘﻴﺠﻪ ﺑﺎﻗﻴﻤﺎﻧﺪه
174 16 10 14 E
10 16 0 10 A
ﻣﺜﺎل 1-11
ﻋﺪد 3740را از ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
[email protected]
WWW.IRANMEET.COM
١٥
ﻣﺜﺎل 1-12
ﻣﻘﺪار 27845را ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
ﻣﻘﺪار ﺗﻘﺴﻴﻢ ﺑﺮ ﻧﺘﻴﺠﻪ ﺑﺎﻗﻴﻤﺎﻧﺪه
27845 16 1740 5
1740 16 108 12 C
108 16 6 11 B
6 16 0 6
ﻣﺜﺎل 1-13
ﻋﺪد 2AF5را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
2 A F 5
163 162 16 1
[email protected]
WWW.IRANMEET.COM
١٦
ﻣﺜﺎل 1-14
ﻣﻘــﺪار 4F2در ﺳﻴــﺴﺘﻢ ﻣﺒﻨــﺎي ﺷــﺎﻧﺰده ﭼــﻪ ﻣﻘــﺪار در ﺳﻴــﺴﺘﻢ دﻫــﺪﻫﻲ
ﻣــﻲﺑﺎﺷــﺪ؟ ﺑــﺮاي اﻳﻨﻜــﺎر اﺑﺘــﺪا رﻗــﻢ 2را در ،1رﻗــﻢ Fرا در 16و رﻗــﻢ 4را
در 162ﺿﺮب ﻣﻲﻧﻤﺎﺋﻴﻢ .ﺳﭙﺲ ﻣﻘﺎدﻳﺮ ﺑﺪﺳﺖ آﻣﺪه را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﻛﻨﻴﻢ.
4*162+
F*16
2*1
[email protected]
WWW.IRANMEET.COM
١٧
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111
ﺣﺎل ﺑﺮاي ﺗﺒﺪﻳﻞ ﻳﻚ ﻣﻘﺪار در ﺳﻴـﺴﺘﻢ ﻣﺒﻨـﺎي ﺷـﺎﻧﺰده ﺑـﻪ ﺳﻴـﺴﺘﻢ دودوﻳـﻲ
ﻣﻲﺗﻮان از ﺟﺪول ﻣﺬﻛﻮر اﺳﺘﻔﺎده ﻧﻤﻮده و ارﻗﺎم را ﺑﺎ ﻣﻘﺪار ﻣﻌﺎدل آن ﺟﺎﻳﮕﺰﻳﻦ ﻧﻤﻮد.
ﺑﻪ ﻋﻨﻮان ﻣﺜﺎل ﻋﺪد 2FA5Bرا در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ .ﺑﺎ ﺟﺎﻳﮕﺰﻳﻨﻲ ﻫﺮ رﻗﻢ ﺑـﺎ ﭼﻬـﺎر رﻗـﻢ
ﻣﻌﺎدل آن در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻧﺘﻴﺠﻪ زﻳﺮ ﺣﺎﺻﻞ ﻣﻲﮔﺮدد.
00101111101001011011
ﺑﻪ ﻣﻨﻈﻮر ﺗﺒﺪﻳﻞ ﻳﻚ ﻣﻘﺪار از ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨـﺎي ﺷـﺎﻧﺰده اﺑﺘـﺪا
ارﻗﺎم را از ﺳﻤﺖ راﺳﺖ ﭼﻬﺎر ﺗﺎ ﭼﻬﺎر ﺗﺎ ﺟﺪا ﻧﻤﻮده ﺳﭙﺲ ﺑﺎ اﺳﺘﻔﺎده از ﺟﺪول ﻓـﻮق
ﻣﻘﺎدﻳﺮ ﻣﻌﺎدل را ﻗﺮار ﻣﻲدﻫﻴﻢ.
ﻣﺜﺎل 1-15
111011001011101
ﻛﻪ اﺑﺘﺪا ﺑﺼﻮرت زﻳﺮ در ﻣﻲآورﻳﻢ.
0111 0110 0101 1101
ﻛﻪ ﻣﻌﺎدل 765Dﻣﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
١٨
ﻣﺜﺎل 1-16
ﻣﻘﺪار ﺗﻘﺴﻴﻢ ﺑﺮ ﻧﺘﻴﺠﻪ ﺑﺎﻗﻴﻤﺎﻧﺪه
125 8 15 5
15 8 1 7
1 8 0 1
ﻛﻪ ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد 175در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ.
ﻣﺜﺎل 1-17
ﺑﻤﻨﻈﻮر ﺗﺒﺪﻳﻞ ﻣﻘﺪاري از ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﺑﻪ ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ،ارﻗﺎم ﻋـﺪد
را از ﺳــﻤﺖ راﺳــﺖ ﺑﺘﺮﺗﻴــﺐ در … ،83 ،82 ،8 ،1ﺿــﺮب ﻧﻤــﻮده ﻧﺘــﺎﻳﺞ ﺣﺎﺻــﻠﻪ
را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣﻲﻧﻤﺎﺋﻴﻢ .ﺑﻌﻨﻮان ﻣﺜﺎل ﻋﺪد 237در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫـﺸﺖ را در ﻧﻈـﺮ
ﺑﮕﻴﺮﻳﺪ.
2 3 7
82 8 1
7*1+ 7
3*8 24
2*82 128
159
[email protected]
WWW.IRANMEET.COM
١٩
ﻣﺜﺎل 1-18
ﻋﺪد 4260را از ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
ﻣﺜﺎل 1-19
ﻋﺪد 382را ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
ﻣﺜﺎل 1-20
ﻣﻘﺪار 4327را از ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫـﺸﺖ ﺑـﻪ ﺳﻴـﺴﺘﻢ دﻫـﺪﻫﻲ ﺗﺒـﺪﻳﻞ ﻧﻤﺎﺋﻴـﺪ.
ﺑﺮاي اﻳﻨﻜـﺎر اﺑﺘـﺪا رﻗـﻢ 7را در ،1رﻗـﻢ 2را در ،8رﻗـﻢ 3را در 82و ﻧﻬﺎﻳﺘـﺎً رﻗـﻢ
4را در 83ﺿــﺮب ﻣــﻲﻧﻤــﺎﺋﻴﻢ ﺳــﭙﺲ ﻣﺠﻤــﻮع ﻣﻘــﺎدﻳﺮ ﺑﺪﺳــﺖ آﻣــﺪه را ﻣﺤﺎﺳــﺒﻪ
ﻣﻲﻧﻤﺎﺋﻴﻢ.
[email protected]
WWW.IRANMEET.COM
٢٠
4327
83 82 8 1
ﻛﻪ ﻧﺘﻴﺠﻪ ﻣﻲﺷﻮد
4*83 +
3*82
2*8
7*1
ﻛﻪ ﻣﻌﺎدل اﺳﺖ ﺑﺎ
4*512+
3*64
2*8
7*1
ﻛﻪ ﻧﻬﺎﻳﺘﺎًﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ
2048+
192
16
7
2263
ﺑﻨﺎﺑﺮاﻳﻦ ﻣﻘﺪار 4327در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﺑﺮاﺑﺮ اﺳﺖ ﺑﺎ 2263در ﺳﻴـﺴﺘﻢ
دﻫﺪﻫﻲ.
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ ﻧﻤﻮد ﻛﻪ ﻫﺮ رﻗﻢ در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ را ﻣﻲﺗﻮان ﺑﻮﺳﻴﻠﻪ ﺳـﻪ
رﻗﻢ در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻧﻤﺎﻳﺶ داد.
[email protected]
WWW.IRANMEET.COM
٢١
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
ﺑﺮاي ﺗﺒﺪﻳﻞ ﻣﻘﺪاري از ﺳﻴﺴﺘﻢ ﻫﺸﺖ ﺗﺎﺋﻲ ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻛﺎﻓﻲ اﺳﺖ ﻛـﻪ
ﺑﻪ ﺟﺎي ﻫﺮ رﻗﻢ در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﺳﻪ رﻗﻢ ﻣﻌﺎدل آﻧـﺮا ﻗـﺮار داد .ﺑﻌﻨـﻮان ﻣﺜـﺎل
ﻋﺪد 417در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﻣﻌﺎدل 100001111در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻣﻲﺑﺎﺷﺪ.
ﺑﻤﻨﻈﻮر ﺗﺒﺪﻳﻞ ﻣﻘﺪاري از ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺑﻪ ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﻛﺎﻓﻲ اﺳﺖ
ﻛﻪ ارﻗﺎم ﻋﺪد از ﻃﺮف راﺳﺖ ﺳﻪ ﺗﺎ ﺳﻪ ﺗﺎ ﺟﺪا ﻧﻤﻮده و ﺑﻪ ﺟﺎي آﻧﻬﺎ ﻣﻘﺪار ﻣﻌـﺎدل در
ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﻗﺮار دﻫﻴﻢ.
ﻣﺜﺎل 1-21
ﻋﺪد 10110111010111در ﺳﻴﺴﺘﻢ دودوﻳﻲ در ﻧﻈﺮ ﺑﮕﻴﺮﻳـﺪ ﻛـﻪ ﻣـﻲﺗـﻮان
ﺑﺼﻮرت زﻳﺮ ﺟﺪا ﻧﻤﻮد.
010 110 111 010 111
[email protected]
WWW.IRANMEET.COM
٢٢
ﻣﺜﺎل 1-22
ﻋﺪد 2AFB5را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
2AFB5
2 A F B 5
0010 1010 1111 1011 0101
-1-8ﻣﻘﺎدﻳﺮ اﻋﺸﺎري
ﺑﻪ ﻣﻨﻈﻮر ﺗﺒﺪﻳﻞ ﻳﻚ ﻣﻘﺪار اﻋﺸﺎري ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ اﺑﺘﺪا ﻗـﺴﻤﺖ ﺻـﺤﻴﺢ
آﻧﺮا ﺑﻪ ﻃﺮﻳﻖ ﮔﻔﺘﻪ ﺷﺪه ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﻮده ،ﺳﭙﺲ ﻗﺴﻤﺖ اﻋﺸﺎري آﻧـﺮا
ﺟﺪا ﻧﻤﻮده ﺑﻄﻮر ﻣﻜﺮر در 2ﺿﺮب ﻣﻲﻧﻤﺎﺋﻴﻢ .ﺑﻌﻨﻮان ﻣﺜﺎل ﻋـﺪد 14.725را در ﻧﻈـﺮ
ﺑﮕﻴﺮﻳﺪ .ﻋﺪد 14ﺑﺼﻮرت 1110در ﺳﻴﺴﺘﻢ دودوﻳﻲ ﻣﻲﺑﺎﺷﺪ .ﺑـﺮاي ﺗﺒـﺪﻳﻞ ﻗـﺴﻤﺖ
اﻋﺸﺎري ﻳﻌﻨﻲ 0.725ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ آﻧﺮا در 2ﺿﺮب ﻣﻲﻧﻤﺎﺋﻴﻢ.
ﻣﺜﺎل 1-23
*0.725
2
1.450
ﻗــﺴﻤﺖ ﺻــﺤﻴﺢ ﻳﻌﻨــﻲ 1را ﺟــﺪا ﻧﻤــﻮده ،ﻗــﺴﻤﺖ اﻋــﺸﺎر را در 2ﺿــﺮب
ﻣﻲﻧﻤﺎﺋﻴﻢ.
*0.45
2
0.90
[email protected]
WWW.IRANMEET.COM
٢٣
ﻗﺴﻤﺖ ﺻﺤﻴﺢ ﻳﻌﻨﻲ 0را ﺟﺪا ﻧﻤﻮده ،ﻗﺴﻤﺖ اﻋﺸﺎر را در 2ﺿﺮب ﻣﻲﻛﻨﻴﻢ.
*0.8
2
1.6
و ﺑﻪ ﻫﻤﻴﻦ روال ﻛﺎر را اداﻣﻪ ﻣﻲدﻫﻴﻢ.
*0.6
2
1.2
ﻣﺜﺎل 1-24
1 1 0 1 . 0 1 0 1 1
1 1 1 1 1
8 4 2 1
2 4 8 16 32
[email protected]
WWW.IRANMEET.COM
٢٤
در ﺣﺎﻓﻈﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻓﻘﻂ ارﻗﺎم 0و 1ذﺧﻴﺮه ﻣﻲﮔﺮدد .ﺑﻪ اﻳﻦ ارﻗﺎم 0و 1ﺑﻴﺖ
ﮔﻔﺘﻪ ﻣﻲﺷﻮد .ﺑﻪ ﻫﺮ ﻫﺸﺖ ﻛﻨﺎر ﻫﻢ ﺑﺎﻳﺖ و ﺑﻪ ﻫﺮ ﺷﺎﻧﺰده ﺑﻴﺖ ﻛﻨﺎر ﻫﻢ wordﮔﻔﺘـﻪ
ﻣﻲﺷﻮد .ﺑﺮاي ذﺧﻴﺮه ﻳﻚ ﻣﻘﺪار در ﺣﺎﻓﻈﻪ ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا آﻧﺮا ﺑﺼﻮرت ﻳﻚﺳـﺮي ﺑﻴـﺖ
درآورد .و ﺑﺮاي ﻧﻤﺎﻳﺶ ﻣﻘﺎدﻳﺮ روي ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر ﺑﺎﻳﺴﺘﻲ آﻧﻬﺎ را ﺑﻪ ﺳﻴـﺴﺘﻢ دهﺗـﺎﻳﻲ
ﺗﺒﺪﻳﻞ ﻧﻤﻮد .در ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﻓﻘﻂ از ارﻗﺎم 0ﺗﺎ 9اﺳـﺘﻔﺎده ﻣـﻲﮔـﺮدد .در ﺳﻴـﺴﺘﻢ
دودوﻳﻲ ﻓﻘﻂ از ارﻗﺎم 0و 1اﺳﺘﻔﺎده ﻣﻲﮔـﺮدد .اﻋـﺪاد ﻣﻨﻔـﻲ را ﻣـﻲﺗـﻮان در ﺣﺎﻓﻈـﻪ
ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎ اﺳﺘﻔﺎده از روش ﻣﻜﻤﻞ 2ﻧﺸﺎن داد .اﺳﺘﻔﺎده از ﺳﻴﺴﺘﻢﻫﺎﻳﻲ ﻣﺒﻨﺎي ﺷـﺎﻧﺰده
و ﻣﺒﻨﺎي ﻫﺸﺖ ﻧﻴﺰ اﻣﻜﺎن ﭘﺬﻳﺮ ﻣﻲﺑﺎﺷﺪ .در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷﺎﻧﺰده از ارﻗﺎم 0ﺗﺎ 9و A
ﺗﺎ Fاﺳﺘﻔﺎده ﻣﻴﮕﺮدد .در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ ﻓﻘﻂ از ارﻗﺎم 0ﺗﺎ 7ﻣـﻲﺗـﻮان اﺳـﺘﻔﺎده
ﻧﻤﻮد .ﻣﻘﺎدﻳﺮ اﻋﺸﺎري را ﻧﻴﺰ ﻣﻲﺗﻮان در ﺣﺎﻓﻈﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ ﻗﺮار داد.
[email protected]
WWW.IRANMEET.COM
٢٥
ﺗﻤﺮﻳﻦ
-1ﻫﺮ ﺑﺎﻳﺖ از ……… .ﺑﻴﺖ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
-2ﻫﺮ ﻛﻠﻴﻮ ﺑﺎﻳﺖ ﻣﻌﺎدل ……… .ﺑﺎﻳﺖ ﻣﻲﺑﺎﺷﺪ.
-3در ﻫﺮ Wordاﻋﺪاد 0ﺗﺎ ……… .را ﻣﻲﺗﻮان ﺟﺎ داد.
-4در ﻫﺮ ﺑﺎﻳﺖ اﻋﺪاد ……… – .ﺗﺎ ……… +.را ﻣﻲﺗﻮانﻗﺮار داد.
-5در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺮاي ﻧﻤﺎﻳﺶ اﻋﺪاد ﻣﻨﻔﻲ از ……… .اﺳﺘﻔﺎده ﻣﻲﺷﻮد.
-6در ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﻪ ﺟﺎي ﻋﻤﻞ ﺗﻔﺮﻳﻖ از ……… .اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
-7در ﻫﺮ Wordﺑﻪ ﺗﻌﺪاد ……… .وﺿﻌﻴﺖ ﻣﺨﺘﻠﻔﻪ 1و 0وﺟﻮد دارد.
-8ﻋﺪد –20را ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-9ﻋﻤﻞ 25-18را ﺑﺎ اﺳﺘﻔﺎده از روش ﻣﻜﻤﻞ دو اﻧﺠﺎم دﻫﻴﺪ.
-10ﻋﺪد 1101101را ﺑﻪ ﺳﻴﺴﺘﻢ دﻫﺪﻫﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-11ﻋﺪد 101101.11001را ﺑﻪ ﺳﻴﺴﺘﻢ ده ﺗﺎﺋﻲ ﺗﺒﺪﻳﻞ ﻛﻨﻴﺪ.
-12ﻋﺪد 2FABCرا ﺑﻪ ﺳﻴﺴﺘﻢ ﻫﺸﺖ ﺗﺎﺋﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-13ﻋﺪد 43271در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﻫﺸﺖ را ﺑﻪ ﺳﻴﺴﺘﻢ دودوﻳﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-14ﻣــﺸﺨﺺ ﻧﻤﺎﺋﻴــﺪ ﻛــﻪ اﮔــﺮ MSBﻳــﻚ ﻣﻘــﺪاري ﻳــﻚ ﺑﺎﺷــﺪ آﻳــﺎ آن ﻣﻘــﺪار
ﻣﻨﻔﻲ اﺳﺖ؟
-15ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ ﻛﻪ آﻳﺎ ﻣﻲﺗﻮان ﻋﻤﻞ ﺿﺮب و ﺗﻔﺮﻳﻖ و ﺗﻘﺴﻴﻢ را ﺑـﻪ ﻋﻤـﻞ ﺟﻤـﻊ
ﺗﺒﺪﻳﻞ ﻧﻤﻮد؟
-16اﮔﺮ ﻣﻘﺪاري ﻣﻨﻔﻲ ﺑﺎﺷﺪ.
ب MSB-آن ﻳﻚ اﺳﺖ. اﻟﻒ MSB-آن ﺻﻔﺮ اﺳﺖ.
د-.ﻫﻴﭽﻜﺪام. ج LSB-آن ﻳﻚ اﺳﺖ.
[email protected]
WWW.IRANMEET.COM
٢٦
-17اﮔﺮ ﻣﻘﺪاري از ﻧﻮع double wordداﺷﺘﻪ ﺑﺎﺷـﻴﻢ ﺑـﻪ ﭼﻨـﺪ ﺑﺎﻳـﺖ ﺣﺎﻓﻈـﻪ ﻧﻴـﺎز
اﺳﺖ؟
ب3- اﻟﻒ2-
د-ﻫﻴﭽﻜﺪام ج4-
[email protected]
WWW.IRANMEET.COM
٢٧
ﻓﺼﻞ دوم
ﻣﻌﻤﺎري رﻳﺰﭘﺮدازﻧﺪه 80286
ﻫﺪف ﻛﻠﻲ
ﻣﻌﺮﻓﻲ رﻳﺰﭘﺮدازﻧﺪه 80286
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻮارد زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ
-1ﻳﺰﭘﺮدازﻧﺪه 80286و ﻋﻤﻠﻴﺎت آن.
-2ﻣﻌﻤﺎري رﻳﺰﭘﺮدازﻧﺪه 80286و اﺟﺰاء ﺗﺸﻜﻴﻞ دﻫﻨﺪه.
-3ﺛﺒﺎتﻫﺎ
-4ﻓﻠﮓﻫﺎ
-2-1رﻳﺰ ﭘﺮدازﻧﺪه 80286
اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه داراي وﻳﮋﮔﻴﻬﺎي ﭘﻴﺸﺮﻓﺘﻪاي ﺑﺮاي ﻋﻤﻠﻜﺮد در ﺳﻄﺢ ﺑﺎﻻﺋﻲ را
دارد .در ،80286ﻫﻤﭽﻨﻴﻦ اﺳﺘﻔﺎده از وﻳﮋﮔﻲﻫﺎي ذﻳﻞ اﻣﻜﺎن ﭘﺬﻳﺮ ﻣﻲﺑﺎﺷﺪ.
Multitasking -1
[email protected]
WWW.IRANMEET.COM
٢٨
Multiuser systems -2
،AX ( ﺷﺎﻧﺰده ﺑﻴﺘـﻲ ﺑﻨﺎﻣﻬـﺎيRegister) اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه داراي ﻫﺸﺖ ﺛﺒﺎت
راDX ،CX ، BX،AX ﭼﻬـﺎر ﺛﺒـﺎت. ﻣﻲﺑﺎﺷﺪDI ،SI ،BP ،SP ،DX ،CX ،BX
ﻣﻲﺗﻮان ﺑﻌﻨﻮان ﺛﺒﺎﺗﻬﺎي ﺷﺎﻧﺰده ﺑﻴﺘﻲ در ﻧﻈﺮ ﮔﺮﻓﺖ ﻳـﺎ ﻫـﺮ ﻛـﺪام را ﺑﻌﻨـﻮان دو ﺛﺒـﺎت
.ﻫﺸﺖ ﺑﻴﺘﻲ در ﻧﻈﺮ ﮔﺮﻓﺖ و اﺳﺘﻔﺎده ﻧﻤﻮد
15 8 7 0
AH AL AX
BH BL BX
CH CL CX
DH DL DX
AX Accumulator
BX Base
CX Count
DX Data
15 0
SP
BP
SI
DI
SP Stack pointer
BP Base pointer
SI Source index
[email protected]
WWW.IRANMEET.COM
٢٩
ﻣﻌﻤﻮﻻً از ﺛﺒﺎﺗﻬﺎي SPو BPدر ﻣﻮرد ﻋﻤﻠﻴﺎت روي ﭘﺸﺘﻪﻫﺎ و از ﺛﺒﺎﺗﻬـﺎي SI
و DIﺑﻌﻨﻮان ﺷﺎﺧﺺ در ﺳـﺎﺧﺘﺎرﻫﺎي ﭘﻴﭽﻴـﺪهﺗـﺮ اﺳـﺘﻔﺎده ﻣـﻲ ﮔـﺮدد .رﻳﺰﭘﺮدازﻧـﺪه
ﻫﻤﭽﻨﻴﻦ داراي ﭼﻬﺎر ﺛﺒﺎت ﺷﺎﻧﺰدهﺑﻴﺘﻲ ﻣﻌﺮوف ﺑـﻪ ﺛﺒﺎﺗﻬـﺎي ﺳـﮕﻤﻨﺖ ﻣـﻲﺑﺎﺷـﺪ ﻛـﻪ
ﺑﻤﻨﻈﻮر آدرس دﻫﻲ از آﻧﻬﺎ اﺳﺘﻔﺎده ﻣﻲﻧﻤﺎﻳﺪ .اﻳـﻦ ﺛﺒـﺎتﻫـﺎ ﺑﻨﺎﻣﻬـﺎي ،SS ، DS،CS
ESﻣﻲﺑﺎﺷﻨﺪ.
15 0
CS
DS
SS
ES
[email protected]
WWW.IRANMEET.COM
٣٠
رﺷﺘﻪﻫﺎ اﺳـﺘﻔﺎده ﺷـﻮد آدرس اﺑﺘـﺪاي آن ﻧﺎﺣﻴـﻪ در ﺣﺎﻓﻈـﻪ در ﺛﺒـﺎت ESﻗـﺮار داده
ﻣﻲﺷﻮد.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
// NT IO PL OF DF IF TF SF ZF // AF // PF // CF
[email protected]
WWW.IRANMEET.COM
٣١
ﺻﻔﺮ ﻣﻲﮔﺮدد .ﺑﻌﺒﺎرت دﻳﮕﺮ اﮔﺮ ﺗﻌﺪاد ﺑﻴﺖﻫﺎي ﻳـﻚ در ﺑﺎﻳـﺖ ﻣﺮﺗﺒـﻪ ﭘـﺎﺋﻴﻦ word
زوج ﺑﺎﺷﺪ ﻣﻘﺪار PFﺑﺮاﺑﺮ ﻳﻚ ﻣﻲﮔﺮدد .در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار PFﺑﺮاﺑـﺮ ﺑـﺎ ﺻـﻔﺮ
ﻣﻲﮔﺮدد.
در ﻋﻤﻞ ﺟﻤﻊ دو ﻣﻘﺪار اﮔﺮ ﻛﻠﻴﻪ ﺑﻴﺖﻫﺎي ﻧﺘﻴﺠﻪ ﺻﻔﺮ ﮔﺮدد ﻣﻘـﺪار ZFﺑﺮاﺑـﺮ
ﺑﺎ ﻳﻚ ﻣﻲﮔﺮدد .در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار ZFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻣﻲﺷﻮد.
در ﻋﻤﻞ ﺟﻤﻊ دو ﻣﻘﺪار ﺑﺎﻳﻨﺮي اﮔﺮ از MSBﻧﺘﻴﺠﻪ ﻳﻚ carryﺧﺎرج ﮔـﺮدد
ﻣﻘﺪار CFﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﻲﺷﻮد .در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار CFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻣﻲﺷﻮد.
در ﻋﻤﻞ ﺟﻤﻊ دو ﻣﻘﺪار ﺑﺎﻳﻨﺮي اﮔﺮ MSBﻧﺘﻴﺠﻪ ﺑﺮاﺑـﺮ ﺑـﺎ ﻳـﻚ ﺑﺎﺷـﺪ ﻣﻘـﺪار
ﻓﻠﮓ SFﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﻴﺸﻮد .در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار SFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻣﻲﺑﺎﺷﺪ.
در ﻋﻤﻞ ﺟﻤﻊ دو ﻣﻘﺪار ﺑﺎﻳﻨﺮي اﮔﺮ ﻳﻚ carryدر ﺑﻴﺖ ﻗﺒـﻞ از MSBﻧﺘﻴﺠـﻪ
داﺷﺘﻪ ﺑﺎﺷﻴﻢ وﻟﻲ در ﺑﻴﺖ carry MSBﻧﺪاﺷﺘﻪ ﺑﺎﺷﻴﻢ و ﻳﺎ ﺑﺎﻟﻌﻜﺲ ﻣﻘﺪار ﻓﻠـﮓ OF
1ﻣﻲﺷﻮد .در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﻘﺪار ﻓﻠﮓ OFﺻﻔﺮ ﻣﻲﮔﺮدد .زﻣﺎﻧﻴﻜﻪ OFﺑﺮاﺑﺮ ﺑـﺎ 1
ﻣﻲﺷﻮد ﻳﻌﻨﻲ ﻧﺘﻴﺠﻪ ﻣﺤﺎﺳﺒﻪ در ﻣﺤﻞ ﺗﻌﻴﻴﻦ ﺷﺪه در ﺣﺎﻓﻈﻪ ﺟـﺎ ﻧﻤـﻲﮔﻴـﺮد و ﺑﺎﻋـﺚ
ﻣﻲﺷﻮد ﻛﻪ ﺗﻌﺪادي از ﺑﻴﺖﻫﺎي ﻧﺘﻴﺠﻪ ﺣﺬف ﺷﻮد.
ﻓﻠﮓ AFدر ﻣﻮرد ﻋﻤﻠﻴﺎت BCDﻛﺎرﺑﺮد دارد ﻛﻪ در ﺑﺨﺸﻬﺎي ﺑﻌـﺪي ﺑﺤـﺚ
ﻣﻴﺸﻮد .در ﻋﻤﻞ ﺟﻤﻊ دو ﻣﻘﺪار ﺑﺎﻳﻨﺮي ﻣﻘـﺪار ﻓﻠـﮓ AFﻳـﻚ ﻣﻴـﺸﻮد اﮔـﺮ از ﺑﻴـﺖ
ﺷﻤﺎره 3ﻳﻚ carryﺧﺎرج ﮔﺮدد.
ﻣﺜﺎل 2-1
دو ﻣﻘﺪار 2345و 3219را در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷﺎﻧﺰده در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ و ﺑﺎ ﻫﻢ
ﺟﻤﻊ ﻧﻤﺎﺋﻴﺪ و ﻣﻘﺪار ﻓﻠﮓﻫﺎ را ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ.
00110010 00011001+
0010001101000101
0101010101011110
[email protected]
WWW.IRANMEET.COM
٣٢
ﻣﺜﺎل 2-2
ﺣﺎل ﻣﺠﻤﻮع دو ﻣﻘﺪار 5439و 456Aدر ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷـﺎﻧﺰده را ﻣﺤﺎﺳـﺒﻪ
ﻧﻤﻮده ﺳﭙﺲ ﻣﻘﺪار ﻓﻠﮓﻫﺎ را ﻣﺸﺨﺺ ﻣﻲﻧﻤﺎﺋﻴﻢ.
(5439)16=(0101010000111001)2
(456A)16=(0100010101101010)2
0101010000111001 +
0100010101101010
1001100110100011
ﻛﻪ ﻓﻠﮓﻫﺎ ﺑﺼﻮرت زﻳﺮ ﺗﻐﻴﻴﺮ ﻣﻲﻳﺎﺑﻨﺪ.
[email protected]
WWW.IRANMEET.COM
٣٣
ﻧﻜﺘﻪاي ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ اﻳﻦ اﺳـﺖ ﻛـﻪ ﺗﻤـﺎم دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎ ﻣﺤﺘـﻮي
ﻓﻠﮓﻫﺎ را ﺗﻐﻴﻴﺮ ﻧﻤﻲدﻫﻨﺪ .ﺑﻌﻨﻮان ﻣﺜﺎل دﺳﺘﻮراﻟﻌﻤﻞ MOVﻛـﻪ ﺑـﺮاي اﻧﺘﻘـﺎل دادهﻫـﺎ
اﺳﺘﻔﺎده ﻣﻲﺷﻮد روي ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
-2-1-2ﺛﺒــﺎت IP
ﺛﺒﺎت IPﻳﻚ ﺛﺒﺎت ﺷﺎﻧﺰدهﺑﻴﺘﻲ ﻣﻲﺑﺎﺷـﺪ ﻛـﻪ آدرس دﺳـﺘﻮراﻟﻌﻤﻞ ﺑﻌـﺪي ﻛـﻪ
ﺑﺎﻳﺴﺘﻲ اﺟﺮا ﮔﺮدد در اﻳﻦ ﺛﺒﺎت ﻗﺮار داده ﻣﻴﺸﻮد .رﻳﺰﭘﺮدازﻧﺪه ﺑﺎ اﺳﺘﻔﺎده از اﻳﻦ آدرس
دﺳﺘﻮراﻟﻌﻤﻞ ﺑﻌﺪي را ﻣﻮرد ﭘﺮدازش ﻗﺮار ﻣﻲدﻫﺪ .ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ ﺑﻪ اﻳﻦ ﺛﺒﺎت دﺳﺘﺮﺳﻲ
ﻧﺪاﺷﺘﻪ و ﻣﺤﺘﻮي آﻧﺮا ﻧﻤﻲﺗﻮاﻧﺪ ﺗﻐﻴﻴﺮ دﻫﺪ.
[email protected]
WWW.IRANMEET.COM
٣٤
[email protected]
WWW.IRANMEET.COM
٣٥
[email protected]
WWW.IRANMEET.COM
٣٦
ﺗﻤﺮﻳﻦ
-1ﺗﻌﺪاد ﺛﺒﺎﺗﻬﺎي ﻫﺸﺖ ﺑﻴﺘﻲ را ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ.
-2ﻛﺎر Flag Registerرا ﺷﺮح دﻫﻴﺪ.
-3ﻣﻜﺎﻧﻴﺰﻣﻬﺎي اﻧﺘﻘﺎل دادهﻫﺎ را ﺑﻨﻮﻳﺴﻴﺪ.
-4دو ﻣﻘﺪار A2FBو CD1Aرا در ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻧﻤﻮده ﺳـﭙﺲ ﻣﻘـﺪار
ﻓﻠﮓﻫﺎي F، PF، ZF، SF، OF،AFو را ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ.
-5دو ﻣﻘﺪار C2BFو A5B2را در ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻧﻤـﻮده ﺳـﭙﺲ ﻣﻘـﺪار
ﻓﻠﮓﻫﺎي CF ،ZF ،PF ،SF ،OFو AFرا ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ.
-6ﻣﻮرد اﺳﺘﻔﺎده ﺛﺒﺎﺗﻬﺎي SS ، ES، DS ،CSرا ﺑﻨﻮﻳﺴﻴﺪ.
-7ﺻﻒ دﺳﺘﻮراﻟﻌﻤﻞ و ﻣﻮرد اﺳﺘﻔﺎده آﻧﺮا ﺑﻨﻮﻳﺴﻴﺪ.
-8دو ﻣﻘﺪار 54C2و 3271در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷـﺎﻧﺰده را از ﻫـﻢ ﻛـﻢ ﻧﻤـﻮده ﺳـﭙﺲ
ﻣﻘﺪار ﻓﻠﮓﻫﺎي CF ، PF ، ZF ، SF ، OF ، AFرا ﻣﺸﺨﺺ ﻧﻤﺎﺋﻴﺪ.
-9آﻳﺎ ﺗﻤﺎم دﺳﺘﻮر اﻟﻌﻤﻞﻫﺎ روي ﻓﻠﮓﻫﺎ اﺛﺮدارﻧﺪ؟
-10ﻛﺎر BUSرا ﺑﻨﻮﻳﺴﻴﺪ.
[email protected]
WWW.IRANMEET.COM
٣٧
ﻓﺼﻞ ﺳﻮم
ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ
ﻫﺪف ﻛﻠﻲ
آﺷﻨﺎﺋﻲ ﺑﺎ ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر اﻟﻌﻤﻠﻬﺎ و ﺗﻜﻨﻴﻜﻬﺎي اﻧﺘﻘﺎل داده .
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ.
-1ﺑﺮﻧﺎﻣﻪ و ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ.
-2ﻧﺎﻣﮕﺬاري ﻓﻴﻠﺪﻫﺎ.
-3اﻧﻮاع ﻓﻴﻠﺪﻫﺎ و ﻛﺎرﺑﺮد آﻧﻬﺎ.
-4ﺗﻜﻨﻴﻜﻬﺎي آدرس دﻫﻲ.
[email protected]
WWW.IRANMEET.COM
٣٨
-3-1ﺑﺮﻧﺎﻣﻪ و دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ
در زﺑﺎن اﺳﻤﺒﻠﻲ ﺑﺮﻧﺎﻣﻪ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ از ﺗﻌﺪادي دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي اﺟﺮاﺋـﻲ
ﻛﻪ ﺑﻴﺎﻧﮕﺮ ﻋﻤﻠﻴﺎﺗﻲ اﺳﺖ ﻛﻪ ﺑﺎﻳﺴﺘﻲ اﻧﺠﺎم ﺷﻮد .اﻳﻦ ﺳﺮي دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻫﻤﺎﻧﻄﻮرﻳﻜـﻪ
ﻣﻴﺪاﻧﻴﻢ SOURCE CODEﻳﺎ ﻛﺪ ﻣﻨﺒﻊ ﻧﺎﻣﻴﺪه ﻣﻲﺷﻮد .ﻣﺎﻧﻨﺪ ﻫﺮ زﺑﺎن ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺴﻲ
دﻳﮕﺮ زﺑﺎن اﺳﻤﺒﻠﻲ ﺷﻜﻞ و ﻗﺎﻟﺐ از ﭘﻴﺶ ﺗﻌﺮﻳﻒ ﺷـﺪهاي ﺑـﺮاي ﻛـﺪ ﻣﻨﺒـﻊ دارد .ﻫـﺮ
دﺳﺘﻮراﻟﻤﻞ اﺳﻤﺒﻠﻲ ﺷﺎﻣﻞ ﭼﻬﺎر ﻓﻴﻠﺪ ﻣﻲﺑﺎﺷﺪ.
ﻓﻴﻠﺪاﺳﻢ ﻓﻴﻠﺪﻋﻤﻠﻴﺎت ﻓﻴﻠﺪ ﻋﻤﻠﻮﻧﺪ ﻓﻴﻠﺪ ﻣﻼﺣﻈﺎت
اﻟﺒﺘﻪ ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟـﻪ داﺷـﺖ ﻛـﻪ در ﺑﻌـﻀﻲ از دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎ از ﺗﻤـﺎم ﻓﻴﻠـﺪﻫﺎ
اﺳﺘﻔﺎده ﻧﻤﻲﮔﺮدد.
-3-2ﻗﺎﻧﻮن ﻧﺎﻣﮕﺬاري
ﻧﺎم در زﺑﺎن اﺳﻤﺒﻠﻲ ﺣﺪاﻛﺜﺮ ﻣﻲﺗﻮاﻧـﺪ ﺷـﺎﻣﻞ 31ﻛـﺎراﻛﺘﺮ ﺑﺎﺷـﺪ .ﻛﺎراﻛﺘﺮﻫـﺎ
ﺷﺎﻣﻞ ﺣﺮوف Zﺗﺎ Aو ارﻗﺎم 9ﺗﺎ 0و ﺳﻴﻤﺒﻠﻬﺎي ﻣﺨـﺼﻮص @ ؟ $ .ـ ﻣـﻲﺑﺎﺷـﺪ.
ﻣﻮارد ذﻳﻞ ﺑﺎﻳﺴﺘﻲ در ﻧﺎﻣﮕﺬاري رﻋﺎﻳﺖ ﮔﺮدد.
-1اﺳﻢ ﻧﻤﻲﺗﻮاﻧﺪ ﺑﺎ ﻳﻚ رﻗﻢ ﺷﺮوع ﮔﺮدد.
-2اﺳﻢ ﻧﺒﺎﻳﺴﺘﻲ ﻳﻜﻲ از ﻛﻠﻤﺎت ذﺧﻴﺮه ﺷﺪه در اﺳﻤﺒﻠﻲ ﺑﺎﺷﺪ.
-3در ﺻﻮرﺗﻴﻜﻪ از 0در ﻧﺎم اﺳﺘﻔﺎده ﮔﺮدد ،ﺑﺎﻳﺴﺘﻲ اوﻟﻴﻦ ﻛﺎراﻛﺘﺮ ﻧـﺎم ﺑﺎﺷـﺪ .ﻛﻠﻤـﺎت
زﻳﺮ اﺳﺎﻣﻲ ﻣﺠﺎز در اﺳﻤﺒﻠﻲ ﻣﻲﺑﺎﺷﻨﺪ.
LOOP1 B@A2
X . XY2
Y2A SUM2
A_5B ADDX
COUNT
ﻛﻠﻤﺎت زﻳﺮ ﻣﺠﺎز ﻧﻤﻲﺑﺎﺷﻨﺪ.
[email protected]
WWW.IRANMEET.COM
٣٩
LOOP NEAR
LABEL ADD
2AB (5AX
FAR A2.B
-3-3ﻣﺘﻐﻴﺮﻫﺎ )(Variables
ﻧﺎم ﻣﺘﻐﻴﺮ ﻣﺸﺨﺺ ﻛﻨﻨﺪه ﻣﺤﻠﻲ از ﺣﺎﻓﻈﻪ ﻣﻲ ﺑﺎﺷـﺪ ﻛـﻪ ﺑﻮﺳـﻴﻠﻪ ﺑﺮﻧﺎﻣـﻪ ﻗﺎﺑـﻞ
دﺳﺘﺮﺳﻲ ﻣﻲﺑﺎﺷﺪ و ﻣﺤﺘﻮي آﻧﺮا در ﺣﻴﻦ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣـﻲﺗـﻮان ﺗﻐﻴﻴـﺮ داد .ﺗﻌﺮﻳـﻒ
ﻣﺘﻐﻴﺮ ﺷﺎﻣﻞ آدرس ،ﻧﻮع داده و اﻧﺪازه آن ﻣﻲﺑﺎﺷﺪ .از ﻣﺘﻐﻴﺮﻫﺎ ﻣﻲﺗﻮان ﺑﻌﻨﻮان ﻋﻤﻠﻮﻧـﺪ
در دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ اﺳﺘﻔﺎده ﻧﻤﻮد .ﺑﺮاي ﻣﺘﻐﻴﺮﻫﺎ از ﻧﻮع ﺑﺎﻳﺖ از ،DBﻣﺘﻐﻴﺮﻫـﺎي از ﻧـﻮع
wordاز DWو ﻣﺘﻐﻴﺮﻫﺎي از ﻧﻮع double wordاز DDاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
-3-4ﺑﺮﭼﺴﺐﻫﺎ )(Labels
از ﺑﺮﭼﺴﺐﻫﺎ ﺑﻌﻨﻮان آدرس دﺳـﺘﻮراﻟﻌﻤﻞ در ﺑﺮﻧﺎﻣـﻪﻫـﺎي ﻛـﺎرﺑﺮدي اﺳـﺘﻔﺎده
ﻣﻲﺷﻮد .از ﺑﺮﭼﺴﺐﻫﺎ ﺑﻪ دو ﺻـﻮرت اﺳـﺘﻔﺎده ﻣـﻲﮔـﺮدد .اﮔـﺮ ﺑﺮﭼـﺴﺐ در ﻫﻤـﺎن
ﺳﮕﻤﻨﺖ ﻛﺪ ﺑﺎﺷﺪ ﻧﻮع آن NEARدر ﻏﻴﺮ اﻳﻨـﺼﻮرت از ﻧـﻮع FARﻣـﻲﺑﺎﺷـﺪ .در
ﺻﻮرﺗﻴﻜﻪ ﻧﻮع آن NEARﺑﺎﺷﺪ ﻣﻲﺗﻮان ﺑﻌـﺪ از ﻧـﺎم ﺑﺮﭼـﺴﺐ از :اﺳـﺘﻔﺎده ﻧﻤـﻮد و
دﻳﮕﺮ ﻧﻴﺎزي ﺑﻪ ﻛﻠﻤﻪ NEARﻧﻤﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
٤٠
-3-5ﺛﺎﺑﺖﻫﺎ )(Constants
ﺛﺎﺑﺖﻫﺎ ﻣﻘﺎدﻳﺮي ﻫﺴﺘﻨﺪ ﻛﻪ در دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺑﺮﻧﺎﻣﻪﻫـﺎ ﻣـﻮرد اﺳـﺘﻔﺎده ﻗـﺮار
ﻣﻲﮔﻴﺮﻧﺪ .ﺛﺎﺑﺖﻫﺎ از اﻧﻮاع ذﻳﻞ ﻣﻲﺑﺎﺷﻨﺪ.
: Binary -1ﺷﺎﻣﻞ ﻳﻚ ﺳﺮي 0و 1ﻣﻲﺑﺎﺷﺪ ﻛﻪ در اﻧﺘﻬﺎي آﻧﻬـﺎ ﺣـﺮف B
ﻗﺮار داده ﻣﻲﺷﻮد.
ﻣﺜﺎل 3-2
110111 B
1000 B
40
ﻳﺎ
40D
: Hexadecimal -3ﺷﺎﻣﻞ ارﻗﺎم 0ﺗﺎ 9و ﺣﺮوف Aﺗﺎ Fﻣﻲﺑﺎﺷﺪ ﻛـﻪ در
اﻧﺘﻬﺎي آﻧﻬﺎ ﺣﺮف Hاﺿﺎﻓﻪ ﻣﻲﮔﺮدد.
ﻣﺜﺎل 3-4
32H
0FFH
اﮔﺮ ﻣﻘﺪاري در ﺳﻴﺴﺘﻢ ﻣﺒﻨﺎي ﺷﺎﻧﺰده ﺑﺎ ﻳﻜﻲ از ﺣﺮوف Aﺗﺎ Fﺷـﺮوع ﮔـﺮدد
ﺑﺎﻳﺴﺘﻲ 0ﺑﻪ اﺑﺘﺪاي آن اﺿﺎﻓﻪ ﮔﺮدد .در اﻳﻦ ﺻﻮرت ﻛﺎﻣﭙﻴﻮﺗﺮ آﻧﺮا ﺑﺎ ﻧﺎم ﻳﻚ ﺑﺮﭼـﺴﺐ
ﻳﺎ ﻣﺘﻐﻴﺮ اﺷﺘﺒﺎه ﻧﻤﻲﮔﻴﺮد.
[email protected]
WWW.IRANMEET.COM
٤١
:Octal -4ﺷﺎﻣﻞ ارﻗﺎم 0ﺗﺎ 7ﻣﻲﺑﺎﺷﺪ ﻛـﻪ در اﻧﺘﻬـﺎي آﻧﻬـﺎ ﺣـﺮف Oﻗـﺮار
ﻣﻲﮔﻴﺮد .ﻣﻲﺗﻮان ﺑﻪ ﺟﺎي Oاز ﺣﺮف Qﻧﻴﺰ اﺳﺘﻔﺎده ﻧﻤﻮد.
ﻣﺜﺎل 3-5
6O
24O
12Q
ﻣﺜﺎل 3-5
′B′
″JOHN″
′BOB′
ﻣﺜﺎل 3-6
[email protected]
WWW.IRANMEET.COM
٤٢
-3-6ﻓﻴﻠﺪ ﻋﻤﻠﻴﺎت
در ﻓﻴﻠﺪ ﻋﻤﻠﻴﺎت ﻧﺎم دﺳﺘﻮراﻟﻌﻤﻞ واﻗﻌﻲ رﻳﺰﭘﺮدازﻧـﺪه ﻳـﺎ ﻋﻤﻠـﻲ ﻛـﻪ ﺑﺎﻳـﺴﺘﻲ
اﻧﺠﺎم ﺷﻮد ذﻛﺮ ﻣﻲﮔﺮدد .ﻧﺎم دﺳﺘﻮراﻟﻌﻤﻞ ﺑﻴﻦ 2ﺗﺎ 6ﻛﺎراﻛﺘﺮ ﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل 3-8
MOV REP
CMP LOOP
REPNE
LEA
-3-7ﻓﻴﻠﺪ ﻋﻤﻠﻮﻧﺪ
اﻳﻦ ﻓﻴﻠﺪ ﺷﺎﻣﻞ آدرس dataﻫﺎﺋﻲ ﻛﻪ ﺑﺎﻳﺴﺘﻲ ﺑﻮﺳـﻴﻠﻪ ﻓﻴﻠـﺪ ﻋﻤﻠﻴـﺎت ﭘـﺮدازش
ﮔﺮدد ﻣﻲﺑﺎﺷﺪ .ﻓﻴﻠﺪ ﻋﻤﻠﻮﻧﺪ ﺑﺎ ﺣﺪاﻗﻞ ﻳﻚ ﻓﺎﺻﻠﻪ از ﻓﻴﻠﺪ ﻋﻤﻠﻴﺎت ﺟﺪا ﻣﻴﺸﻮد .ﺑﻌﻀﻲ
از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻓﺎﻗﺪ ﻋﻤﻠﻮﻧﺪ ﻣﻲﺑﺎﺷﻨﺪ .ﺳﺎﻳﺮ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻳﻚ ﻳﺎ دو ﻋﻤﻠﻮﻧـﺪ دارﻧـﺪ
ﻛﻪ ﺑﺎ ﻛﺎﻣﺎ از ﻫﻢ ﺟﺪا ﻣﻲﺷﻮﻧﺪ .ﻣﺎﻧﻨﺪ
CBW ﻋﻤﻠﻮﻧﺪ ﻧﺪارد
NOP ﻋﻤﻠﻮﻧﺪ ﻧﺪارد
CLC ﻋﻤﻠﻮﻧﺪ ﻧﺪارد
NOT AL ﻳﻚ ﻋﻤﻠﻮﻧﺪ دارد
MOV AX , Y دو ﻋﻤﻠﻮﻧﺪ دارد
[email protected]
WWW.IRANMEET.COM
٤٣
در ﻣﻮاردي ﻛﻪ ﻓﻴﻠﺪ ﻋﻤﻠﻮﻧﺪ داراي دو ﻋﻤﻠﻮﻧﺪ ﻣﻲﺑﺎﺷﺪ ﻋﻤﻠﻮﻧﺪ اول را ﻋﻤﻠﻮﻧﺪ
ﻣﻘﺼﺪ و ﻋﻤﻠﻮﻧﺪ دوم را ﻋﻤﻠﻮﻧﺪ ﻣﺒﺪاء ﻣﻲﻧﺎﻣﻨﺪ.
ﻣﺜﺎل 3-10
AND AX , X
ﻛﻪ AXرا ﻋﻤﻠﻮﻧﺪ ﻣﻘﺼﺪ و Xرا ﻋﻤﻠﻮﻧﺪ ﻣﺒﺪاء ﻣﻲﻧﺎﻣﻨﺪ.
ﻣﺜﺎل 3-11
MOV AH, 45H; Parameter for reading a character
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻣﻲﺗﻮاﻧﻨﺪ ﻓﻘﻂ ﺷﺎﻣﻞ ﻓﻴﻠـﺪ Commentﺑﺎﺷـﻨﺪ .در اﻳﻨـﺼﻮرت
دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎ ; ﺷﺮوع ﻣﻲﺷﻮد.
ﻣﺜﺎل 3-12
; This is an assembly Program
; For calculating the n factorial.
-3-9ﺗﻜﻨﻴﻜﻬﺎي آدرسدﻫﻲ
رﻳﺰﭘﺮدازﻧﺪه 80286از ﻫﻔﺖ روش آدرسدﻫﻲ اﺳﺘﻔﺎده ﻣﻲﻧﻤﺎﻳﺪ ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از
-1آدرسدﻫﻲ ﺑﺪون واﺳﻄﻪ
-2آدرسدﻫﻲ ﺛﺒﺎت
-3آدرسدﻫﻲ ﻣﺴﺘﻘﻴﻢ
-4آدرسدﻫﻲ ﻏﻴﺮﻣﺴﺘﻘﻴﻢ ﺛﺒﺎت
[email protected]
WWW.IRANMEET.COM
٤٤
-5آدرسدﻫﻲ ﻣﺒﻨﺎ
-6آدرسدﻫﻲ اﻧﺪﻳﺲ ﻣﺴﺘﻘﻴﻢ
-7آدرسدﻫﻲ اﻧﺪﻳﺲ ﻣﺒﻨﺎ
از اﻳﻦ اﻣﻜﺎﻧﺎت ﻣﺘﻨﻮع آدرسدﻫﻲ ﺑﺮاي ﻋﻤﻠﻮﻧﺪﻫﺎ اﺳﺘﻔﺎده ﻣﻲﺷﻮد.
ﻣﺜﺎل 3-13
MOV BL , 10
داده
-3-9-2آدرسدﻫﻲ ﻣﺴﺘﻘﻴﻢ
در اﻳﻦ روش آدرس داده ﻛﻪ ﺷﺎﻧﺰدهﺑﻴﺖ ﻣﻲﺑﺎﺷﺪ ﺟﺰء دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻲﺑﺎﺷـﺪ.
ﻣﺜﺎل
MOV AX,TABLE
دﺳﺘﻮراﻟﻌﻤﻞ ﺣﺎﻓﻈﻪ
آدرس داده
-3-9-3آدرسدﻫﻲ ﺛﺒﺎت
در اﻳﻦ ﻣـﺪ آدرسدﻫـﻲ داده در ﺛﺒـﺎﺗﻲ ﻗـﺮار دارد ﻛـﻪ ﺑﻮﺳـﻴﻠﻪ دﺳـﺘﻮراﻟﻌﻤﻞ
ﻣﺸﺨﺺ ﻣﻲﺷﻮد.
[email protected]
WWW.IRANMEET.COM
٤٥
دﺳﺘﻮراﻟﻌﻤﻞ ﺛﺒﺎت
ﺛﺒﺎت داده
ﺑــﺮاي ﻋﻤﻠﻮﻧــﺪ ﺷــﺎﻧﺰدهﺑﻴﺘــﻲ از ﺛﺒﺎﺗﻬــﺎي DI ،SI ،BP ،DX ،CX ،BX ،AX
اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ﻣﺜﺎل 3-15
MOV AX , CX
و در ﻣﻮرد ﻋﻤﻠﻮﻧﺪ ﻫﺸﺖ ﺑﻴﺘﻲ از ﺛﺒﺎﺗﻬـﺎي ،CH ،CL ،BH ،BL ،AL ، AH
DH ، DLاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ﻣﺜﺎل 3-16
MOV DL , AL
]MOV AX , [BX
-3-9-5آدرسدﻫﻲ ﻣﺒﻨﺎ
در اﻳﻦ روش آدرس داده در ﻳﻜﻲ از ﺛﺒﺎﺗﻬـﺎي DI ، SI ،BP ،BXﻗـﺮار داده
ﻣﻲﺷﻮد .در اﻳﻦ روش ﻳﻚ ﺟﺎﺑﻪﺟﺎﺋﻲ ﺑﺎﻧﺪازه 8ﺑﻴﺖ ﻳﺎ 16ﺑﻴﺖ دارد.
[email protected]
WWW.IRANMEET.COM
٤٦
MOV AX,[BX]+4
ﻛﻪ ،4ﻣﻘﺪار ﺟﺎﺑﻪﺟﺎﺋﻲ و آدرس داده در BXﻗﺮار داده ﺷﺪه اﺳﺖ .دو دﺳﺘﻮر
ذﻳﻞ ﻣﻌﺎدل دﺳﺘﻮر ﻓﻮق ﻣﻲﺑﺎﺷﺪ.
دﺳﺘﻮراﻟﻌﻤﻞ
ﺛﺒﺎت ﺟﺎﺑﻪﺟﺎﺋﻲ
آدرس ﺣﺎﻓﻈﻪ
+ داده
ﺛﺒﺎت
آدرس
دﺳﺘﻮراﻟﻌﻤﻞ ﺛﺒﺎت
ﺛﺒﺎت ﭘﺎﻳﻪ ﺛﺒﺎت اﻧﺪﻳﺲ اﻧﺪﻳﺲ
آدرس ﺣﺎﻓﻈﻪ
+ داده
ﺛﺒﺎت
آدرس ﭘﺎﻳﻪ
[email protected]
WWW.IRANMEET.COM
٤٧
ﻣﺜﺎل 3-17
]MOV AX,[BX][DI
ﻣﺜﺎل 3-18
]MOV AX, VALUE [BX][DI
]MOV AX, [BX+2][DI
]MOV AX,[BX] [DI+2
دﺳﺘﻮر اﻟﻌﻤﻞ
ﺛﺒﺎت ﺛﺒﺎت ﺟﺎﺑﻪﺟﺎﺋﻲ
ﭘﺎﻳﻪ اﻧﺪﻳﺲ
ﺛﺒﺎت آدرس ﺣﺎﻓﻈﻪ
اﻧﺪﻳﺲ + داده
ﺛﺒﺎت
آدرس ﭘﺎﻳﻪ
[email protected]
WWW.IRANMEET.COM
٤٨
[email protected]
WWW.IRANMEET.COM
٤٩
ﺗﻤﺮﻳﻦ
[email protected]
WWW.IRANMEET.COM
٥٠
ﻓﺼﻞ ﭼﻬﺎرم
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي اﺳﺎﺳﻲ
ﻫﺪف ﻛﻠﻲ
ﻣﻌﺮﻓﻲ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي اﺳﺎﺳﻲ در زﺑﺎن اﺳﻤﺒﻠﻲ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ.
-1اﻧﺘﻘﺎل دادهﻫﺎ در ﺣﺎﻓﻈﻪ
-2دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺟﻤﻊ و ﺗﻔﺮﻳﻖ
-3دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺟﻤﻊ و ﺗﻔﺮﻳﻖ ﻣﻘﺎدﻳﺮ ﺑﺰرگ
-4ﺿﺮب و ﺗﻘﺴﻴﻢ
-5دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺿﺮب ﻣﻘﺎدﻳﺮ ﺑﺰرگ
-6دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻛﺎﻫﺶ و اﻓﺰاﻳﺶ
-7دﺳﺘﻮراﻟﻌﻤﻞ ﻣﺤﺎﺳﺒﻪ ﻣﻜﻤﻞ 2ﻳﻚ ﻣﻘﺪار.
[email protected]
WWW.IRANMEET.COM
٥١
[email protected]
WWW.IRANMEET.COM
٥٢
[email protected]
WWW.IRANMEET.COM
٥٣
آدرس ﺣﺎﻓﻈﻪ
2401
2402
2403
2404 65 X
2405
2406
2407
2408
300 Y
2409
2410
2411
در ﺑﺎﻻ ﺣﺎﻓﻈﻪ اﺻﻠﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ ﻛﻪ Xﻣﺘﻐﻴﺮي از ﻧﻮع ﺑﺎﻳﺖ ﺑـﺎ ﻣﺤﺘـﻮي
65و آدرس آن 2404ﻣﻲﺑﺎﺷﺪ .ﻫﻤﭽﻨﻴﻦ Yﻣﺘﻐﻴﺮي اﺳﺖ از ﻧﻮع wordﺑﺎ ﻣﺤﺘـﻮي
300ﻛﻪ آدرس آن 2408ﻣﻲﺑﺎﺷﺪ .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ آدرس ﻫـﺮ dataآدرس
ﺑﺎﻳﺖ ﺷﺮوع آن dataﻣﻲﺑﺎﺷﺪ .ﻣﺘﻐﻴﺮ yﭼﻮن ﺑﺎﻳﺘﻬـﺎي 2408و 2409را در ﺣﺎﻓﻈـﻪ
اﺷﻐﺎل ﻣﻲﻛﻨﺪ آدرس آن 2408ﻣﻲﺑﺎﺷﺪ .ﺣﺎل ﭼﻨﺎﻧﭽﻪ ﺑﺨﻮاﻫﻴﻢ آدرس ﻣﺘﻐﻴـﺮي را در
ﺛﺒﺎت BXﻗﺮار دﻫﻴﻢ از دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
٥٤
BX Y
2408 300
BX Y
300 300
ﻣﻌﻤﻮﻻً آدرس ﻣﺘﻐﻴﺮﻫـﺎ را در ﻳﻜـﻲ از ﺛﺒﺎﺗﻬـﺎي SI, DI, BP, BXﻗـﺮار داده
ﻣﻲﺷﻮد .ﺣﺎل ﺳﻪ دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﻫﻤﺎﻧﻄﻮر ﻛﻪ در ﺷﻜﻞ زﻳﺮ ﻧﺸﺎن داده ﺷﺪه اﺳﺖ X .ﻣﻜﺎﻧﻲ از ﺣﺎﻓﻈﻪ اﺳﺖ ﻛﻪ
ﻳﻚ wordرا اﺷﻐﺎل ﻧﻤﻮده اﺳﺖ .دﺳﺘﻮراﻟﻌﻤﻞ دوم آدرس ﻣﺘﻐﻴﺮ Xرا در ﺛﺒﺎت BX
ﻗﺮار ﻣﻲدﻫﺪ .دﺳﺘﻮراﻟﻌﻤﻞ آﺧﺮ ﻣﺤﺘـﻮي ﻣﻜـﺎﻧﻲ از ﺣﺎﻓﻈـﻪ ﻛـﻪ ﺑﻮﺳـﻴﻠﻪ BXاﺷـﺎره
ﻣﻲﺷﻮد را ﺑﻪ ﺛﺒﺎت AXﻣﻨﺘﻘﻞ ﻣﻲﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
٥٥
3600
3601
3602
400 X
3603
3604
BX 3605 AX
4-1 ﻣﺜﺎل
.دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ
X DW 613,248,365,126
MOV BX, OFFSET X
MOV AX, [BX] +4
[email protected]
WWW.IRANMEET.COM
٥٦
آدرس
4000
4001
4002 X
613
4003
4004
248
4005
[email protected]
WWW.IRANMEET.COM
٥٧
ﻣﺜﺎل 4-2
دﺳﺘﻮراﻟﻌﻤﻞﻫﺎي ذﻳﻞ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
آدرس
1A00 X
126
1A01 X+1
1A02 X+2
248
1A03 X+3
AX 1A04 X+4 DI
613
613 1A05 X+5 4
1A06 X+6
1260
1A07 X+7
1A08 X+8
1A09
دﺳﺘﻮراﻟﻌﻤﻞ اول اﻳﺠﺎد ﻳﻚ آراﻳﻪ ﻣﻲﻧﻤﺎﻳﺪ ﺑﻨـﺎم Xاز ﻧـﻮع wordﺑـﺎ ﻣﻘـﺎدﻳﺮ
1260،613،248 ،126ﺑﺘﺮﺗﻴـــﺐ در آدرﺳـــﻬﺎي 1A06 ،1A04 ،1A02 ،1A00از
[email protected]
WWW.IRANMEET.COM
٥٨
ﺣﺎﻓﻈﻪ .دﺳﺘﻮراﻟﻌﻤﻞ دوم ﻣﻘﺪار 4را در ﺛﺒﺎت DIﻗﺮار ﻣﻲدﻫﺪ .آﺧﺮﻳﻦ دﺳـﺘﻮراﻟﻌﻤﻞ
ﻣﺤﺘﻮي X+4ﻳﻌﻨﻲ ﻣﻘﺪار 613را در ﺛﺒﺎت AXﻗﺮار ﻣﻲدﻫﺪ.
ﻣﺜﺎل 4-3
دﺳﺘﻮراﻟﻌﻤﻞ ذﻳﻞ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
ﻣﺜﺎل 4-4
MOV ]AX, X[BP][DI
MOV ]AX, X[BX][SI
MOV ]AX, X[BP][SI
[email protected]
WWW.IRANMEET.COM
٥٩
ﻛﺎﻣﭙﻴﻮﺗﺮ آدرس ﺷﺮوع اﻳﻦ ﺳﮕﻤﻨﺖﻫﺎ را ﻃﻮري اﻧﺘﺨﺎب ﻣـﻲﻧﻤﺎﻳـﺪ ﻛـﻪ ﻗﺎﺑـﻞ
ﺗﻘﺴﻴﻢ ﺑﺮ 16ﺑﺎﺷﻨﺪ ﻳﻌﻨﻲ ﭼﻬﺎر ﺑﻴﺖ ﺳﻤﺖ راﺳﺖ آدرس ﺷﺮوع ﺳـﮕﻤﻨﺖﻫـﺎ 0000
ﺑﺎﺷﺪ .در ﺣﻘﻴﻘﺖ آدرس ﺷﺮوع ﺳﮕﻤﻨﺖﻫﺎ ﺑﻴﺴﺖ ﺑﻴﺘﻲ ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﭼﻮن ﭼﻬـﺎر ﺑﻴـﺖ
ﺳـﻤﺖ راﺳـﺖ آﻧﻬـﺎ 0000ﻣـﻲﺑﺎﺷـﺪ ﺑــﻪ ﺷـﺎﻧﺰده ﺑﻴـﺖ ﺗﻘﻠﻴـﻞ ﻳﺎﻓﺘـﻪ و در ﺛﺒﺎﺗﻬــﺎي
ES ،SS ،DS ،CSﻗﺮار داده ﻣﻴﺸﻮﻧﺪ .ﺑﺮا ﻳﺎﻓﺘﻦ آدرس واﻗﻌﻲ ﻳﺎ ﻓﻴﺰﻳﻜـﻲ ﺳـﮕﻤﻨﺖ
dataدر ﺣﺎﻓﻈﻪ ﺑﺎﻳﺴﺘﻲ ﻣﺤﺘﻮي DSرا در 16ﺿﺮب ﻧﻤﻮد .ﻫﻤﺎﻧﻄﻮرﻳﻜـﻪ ﻧﻴـﺰ ﻗـﺒﻼً
ﺑﻴﺎن ﺷﺪ اﻧﺪازه ﺳﮕﻤﻨﺖﻫﺎ ﺗﺎ 64Kﺑﺎﻳﺖ ﻣﻲﺗﻮاﻧﺪ ﺑﺎﺷﺪ .آدرس ﻫـﺮ dataدر ﺣﺎﻓﻈـﻪ
ﭼــﻮن اﻳــﻦ dataدر data segmentﻗــﺮار دارد ﻣــﻲﺗــﻮان ﻧــﺴﺒﺖ ﺑــﻪ اﺑﺘــﺪاي آن
segmentﻣﺸﺨﺺ ﻧﻤﻮد ﻛﻪ ﺑﻪ اﻳﻦ آدرس offsetﮔﻔﺘﻪ ﻣﻴﺸﻮد.
آدرس در ﺣﺎﻓﻈﻪ
2A4B0ﺷﺮوع ﺳﮕﻤﻨﺖ
offset
data
64K
در ﺣﻘﻴﻘﺖ آدرس ﺳﮕﻤﻨﺖ 2A4Bدر ﺛﺒﺎت DSﻗﺮار داده ﻣﻴﺸﻮد .ﺣﺎل ﺑﺮاي
ﺑﺪﺳﺖ آوردن آدرس ﻓﻴﺰﻳﻜﻲ ﻳﺎ واﻗﻌﻲ dataﺑﻄﺮﻳﻖ ذﻳﻞ ﻋﻤﻞ ﻣﻲﻧﻤﺎﺋﻴﻢ.
*16+offsetﻣﺤﺘﻮي DS
[email protected]
WWW.IRANMEET.COM
٦٠
-4-2دﺳﺘﻮراﻟﻌﻤﻞ LEA
دﺳــــﺘﻮراﻟﻌﻤﻞ LEAﻧﻴــــﺰ آدرس ﻣﺘﻐﻴــــﺮ را در ﻳﻜــــﻲ از ﺛﺒﺎﺗﻬــــﺎي
BP ،BX ،DI ،SIﻣﻲدﻫﺪ .ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل 4-5
X DW 613
LEA BX , X
آدرس ﺣﺎﻓﻈﻪ
4000
4001
4002 X
613
4003
BX 4004
4002 4005
[email protected]
WWW.IRANMEET.COM
٦١
ﻣﺜﺎل 4-6
LEA ]SI, COL[BX
ﻣﺜﺎل 4-7
X DB ?
LEA BX, X
ﻣﺘﻐﻴﺮ Xاز ﻧﻮع ﺑﺎﻳﺖ ﺗﻌﺮﻳﻒ ﮔﺮدﻳـﺪه و آدرس آن در ﺛﺒـﺎت BXﻗـﺮار داده
ﺷﺪه اﺳﺖ.
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ دﺳﺘﻮراﻟﻌﻤﻞ LEAﺑﺮ ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
-4-3ﻣﺒﺎدﻟﻪ دادهﻫﺎ
ﺑــﺮاي ﻣﺒﺎدﻟــﻪ ﻣﺤﺘــﻮي دو آدرس داده از دﺳــﺘﻮراﻟﻌﻤﻞ XCHGاﺳــﺘﻔﺎده
ﻣﻲﮔﺮدد .ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﺤﺘﻮي srcﺑﺎ dstرا ﻣﺒﺎدﻟﻪ ﻣﻲﻧﻤﺎﻳﺪ ﻳﻌﻨﻲ ﻣﺤﺘـﻮي srcدر
dstﻗﺮار ﻣﻲﮔﻴﺮد و ﻣﺤﺘﻮي dstدر .src
در ﻣﻮرد دﺳﺘﻮراﻟﻌﻤﻞ XCHGﺑﺎﻳﺴﺘﻲ در ﻧﻈﺮ داﺷﺖ ﻛﻪ:
dst , src -1ﻧﻤﻲﺗﻮاﻧﺪ ﺛﺎﺑﺖ ﺑﺎﺷﻨﺪ.
dst , src -2ﺑﺎﻳﺴﺘﻲ ﻫﺮ دو از ﻧﻮع ﺑﺎﻳﺖ ﻳﺎ ﻫﺮ دو از ﻧﻮع wordﺑﺎﺷﻨﺪ.
dst , src -3ﻫﺮ دو ﻣﺘﻐﻴﺮ ﻧﻤﻲﺗﻮاﻧﻨﺪ ﺑﺎﺷﻨﺪ.
-4اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺮ روي ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
[email protected]
WWW.IRANMEET.COM
٦٢
ﻣﺜﺎل 4-8
MOV AX, 1000
MOV X, 3000
XCHG X, AX
ﻣﺜﺎل 4-9
XCHG AX , BX
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻓﻮق ﺑﺎﻋﺚ ﻣﺒﺎدﻟﻪ ﻣﻘـﺎدﻳﺮ Xو Yﻛـﻪ ﻫـﺮ دو از ﻧـﻮع ﺑﺎﻳـﺖ
ﻣﻲﺑﺎﺷﻨﺪ ﻣﻲﺷﻮد .ﻗﺒﻞ از اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞﻫﺎي ﻓﻮق
X Y
65 48
[email protected]
WWW.IRANMEET.COM
٦٣
-4-4ﺟﻤﻊ و ﺗﻔﺮﻳﻖ
ﺟﻤﻊ دو ﻣﻘﺪار ﺑﻮﺳﻴﻠﻪ دﺳﺘﻮراﻟﻌﻤﻞ ADDاﻧﺠﺎم ﻣﻲﺷـﻮد .ﺷـﻜﻞ ﻛﻠـﻲ اﻳـﻦ
دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
ADD dst , src
ﻣﺜﺎل 4-10
MOV AX , 613
MOV BX, 248
ADD AX , BX
[email protected]
WWW.IRANMEET.COM
٦٤
-3ﺑﻪ ﺟـﺰء در ﻣﻮاردﻳﻜـﻪ ﻳﻜـﻲ از ﻋﻤﻠﻮﻧـﺪﻫﺎ ﺛﺎﺑـﺖ ﺑﺎﺷـﺪ ﺣﺘﻤـﺎً ﻳﻜـﻲ از
ﻋﻤﻠﻮﻧﺪﻫﺎ ﺑﺎﻳﺴﺘﻲ از ﻧﻮع ﺛﺒﺎت ﺑﺎﺷﺪ.
-4دﺳﺘﻮراﻟﻌﻤﻞ ADDﺑﺮ روي ﻓﻠﮓﻫﺎي AF, CF, OF, PF, SF, ZFاﺛﺮ
دارد.
ﻣﺜﺎل 4-11
X DB 13
MOV AL , 10
ADD X , AL
دﺳﺘﻮراﻟﻌﻤﻞ اول Xرا از ﻧﻮع ﺑﺎﻳـﺖ ﺗﻌﺮﻳـﻒ ﻧﻤـﻮده و ﻣﻘـﺪار آﻧـﺮا 13ﻗـﺮار
ﻣﻲ دﻫﺪ .دﺳﺘﻮراﻟﻌﻤﻞ دوم ﻣﻘﺪار 10را در ﺛﺒﺎت ALﻗﺮار ﻣﻲدﻫﺪ .دﺳﺘﻮراﻟﻌﻤﻞ ﺳﻮم
ﻣﻘﺪار ALرا ﺑﺎ ﻣﺤﺘﻮي Xﺟﻤﻊ ﻧﻤﻮده ﻧﺘﻴﺠﻪ ﻛﻪ ﻣﻲﺷﻮد 23را در Xﻗﺮار ﻣﻲدﻫـﺪ.
و ﻣﺤﺘﻮي ALﻧﻴﺰ 10ﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل 4-12
[email protected]
WWW.IRANMEET.COM
٦٥
2000
2001
2002 X
613
2003
2004 BX
248
2005 2002
2006
126
2007
2008 AX
2009 1248
ﻣﺜﺎل 4-13
[email protected]
WWW.IRANMEET.COM
٦٦
ﻣﺜﺎل 4-14
X DB 12,20,5,14,26,30
MOV DI , 5
MOV AL , 20
ADD X [DI] , AL
آدرس ﺣﺎﻓﻈﻪ
A100
A101
A102 12 X
A103 20 X+1
A104 5 X+2
A105 14 X+3
A106 26 X+4
A107 30 X+5
A108
A109
AL DI
20 4
[email protected]
WWW.IRANMEET.COM
٦٧
A100
A101
A102 12 X
A103 20 X+1
A104 5 X+2
A105 14 X+3
A106 26 X+4
A107 50 X+5
A108
A109
از دﺳﺘﻮراﻟﻌﻤﻞ ADCﻧﻴﺰ ﺑﺮاي ﺟﻤﻊ ﻣﻘﺎدﻳﺮ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد .ﻓﺮم ﻛﻠـﻲ
اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ اﺳﺖ.
ADC dst , src
ﻛﻪ ﻣﺤﺘﻮي srcرا ﺑﺎ ﻣﺤﺘﻮي dstﺟﻤﻊ ﻧﻤﻮده ﻧﺘﻴﺠـﻪ را ﺑـﺎ ﻣﻘـﺪار ﻓﻠـﮓ CF
ﺟﻤﻊ ﻧﻤﻮده و ﻧﻬﺎﻳﺘﺎً ﻧﺘﻴﺠﻪ ﺑﺪﺳﺖ آﻣﺪه را در dstﻗﺮار ﻣﻲدﻫﺪ.
[email protected]
WWW.IRANMEET.COM
٦٨
-3ﺑﻪ ﺟﺰء در ﻣﻮاردﻳﻜﻪ ﻳﻜﻲ از ﻋﻤﻠﻮﻧﺪﻫﺎي src , dstﺛﺎﺑﺖ ﺑﺎﺷﺪ ﻳﻜﻲ از ﻋﻤﻠﻮﻧﺪﻫﺎ
ﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎً از ﻧﻮع ﺛﺒﺎت ﺑﺎﺷﺪ.
-4دﺳﺘﻮراﻟﻌﻤﻞ ADCروي ﻓﻠﮓﻫﺎي CF ،OF ،PF ،AF ،SF ، ZFاﺛﺮ دارد.
ﻣﺜﺎل 4-15
X DW ?
MOV AX , 1000
MOV X, 3000
ADC AX , X
[email protected]
WWW.IRANMEET.COM
٦٩
X
X+2
M
Y
Y+2
M
Z
Z+2
[email protected]
WWW.IRANMEET.COM
٧٠
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﻛﻪ دو ﻣﺘﻐﻴﺮ Xو Yاز ﻧـﻮع double wordرا ﺑـﺎ ﻫـﻢ ﺟﻤـﻊ
ﻧﻤﻮده و ﻧﺘﻴﺠﻪ را در ﻣﺘﻐﻴﺮ Zاز ﻧﻮع double wordﻗـﺮار ﻣـﻲدﻫـﺪ ﺑـﺼﻮرت ذﻳـﻞ
ﻣﻲﺑﺎﺷﺪ:
X DD 60000
Y DD 40000
Z DD ?
MOV AX , X
ADD AX , Y
MOV Z , AX
MOV AX, X+2
ADC AX , Y+2
MOV Z +2, AX
[email protected]
WWW.IRANMEET.COM
٧١
در wordﺑﺎ ارزش ﻛﻢ Zﻗﺮار ﻣﻲدﻫﺪ .ﺳﻪ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﻌﺪي دو ﺗﺎ wordﺑﺎ ارزش
ﺑﻴﺸﺘﺮ Xو Yرا ﺑﺎ ﻫﻢ ﺟﻤـﻊ ﻧﻤـﻮده ﺑـﺎ اﺳـﺘﻔﺎده از ADCو ﻧﺘﻴﺠـﻪ را در wordﺑـﺎ
ارزش ﺑﻴــﺸﺘﺮ Zﻗــﺮار ﻣــﻲدﻫــﺪ .ﺑﺎﻳــﺴﺘﻲ ﺗﻮﺟــﻪ داﺷــﺖ ﻛــﻪ در دﺳــﺘﻮراﻟﻌﻤﻠﻬﺎي
ADC ،ADD ، MOVﻫﺮ دو ﻋﻤﻠﻮﻧﺪ ﻧﻤﻲﺗﻮاﻧﻨﺪ ﻣﺘﻐﻴﺮ ﺑﺎﺷﻨﺪ.
ﻣﺜﺎل 4-16
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻣﻘﺪار Xاز ﻧﻮع double wordرا ﺑﺎ ﻣﻘﺪار ﺛﺒﺎﺗﻬـﺎي DXو
AXﺟﻤﻊ ﻧﻤﻮده ﻧﺘﻴﺠﻪ را در Xﻗﺮار ﻣﻲدﻫﺪ.
DX AX
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ذﻳﻞ ﻣﺠﻤﻮع ﻣﺘﻐﻴﺮﻫـﺎي Xو Yاز ﻧـﻮع double wordو ﻋـﺪد
24را ﻣﺤﺎﺳﺒﻪ و ﻧﺘﻴﺠﻪ را در ﻣﺘﻐﻴﺮ Wﻗﺮار ﻣﻲدﻫﺪ .ﻳﻌﻨﻲ :
[email protected]
WWW.IRANMEET.COM
٧٢
ﻣﻘﺪار srcاز dstﻛﻢ ﻣﻲﺷﻮد ﻧﺘﻴﺠﻪ در dstﻗﺮار ﻣﻲﮔﻴﺮد .در ﺑﻜـﺎرﮔﻴﺮي اﻳـﻦ
دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﻳﺴﺘﻲ ﻣﻮارد زﻳﺮ را در ﻧﻈﺮ داﺷﺖ.
-1ﻫﺮ دو ﻋﻤﻠﻮﻧﺪ ﺑﺎﻳﺴﺘﻲ از ﻳﻚ ﻧﻮع ﺑﺎﺷﻨﺪ ﻫﺮ دو از ﻧﻮع ﺑﺎﻳـﺖ ﻳـﺎ ﻫـﺮ دو از ﻧـﻮع
wordﺑﺎﺷﻨﺪ.
-2ﻫﺮ دو ﻋﻤﻠﻮﻧﺪ ﻧﺒﺎﻳﺴﺘﻲ از ﻧﻮع ﻣﺘﻐﻴﻴﺮ ﺑﺎﺷﻨﺪ.
-3ﺑﻪ ﺟـﺰء در ﻣﻮاردﻳﻜـﻪ ﻳﻜـﻲ از ﻋﻤﻠﻮﻧـﺪﻫﺎ ﺛﺎﺑـﺖ ﺑﺎﺷـﺪ ﺣﺘﻤـﺎً ﺑﺎﻳـﺴﺘﻲ ﻳﻜـﻲ از
ﻋﻤﻠﻮﻧﺪﻫﺎ از ﻧﻮع ﺛﺒﺎت ﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
٧٣
-4دﺳﺘﻮراﻟﻌﻤﻞ SUBﺑﺮ روي ﻓﻠﮓﻫﺎي SF ،AF ،PF ،OF ،CF ، ZFاﺛﺮ دارد.
-5ﻣﺤﺘﻮي ﻋﻤﻠﻮﻧﺪ dstدر ﻋﻤﻞ SUBﺗﻐﻴﻴﺮ ﻧﻤﻲﻛﻨﺪ.
ﻣﺜﺎل 4-17
MOV AL , 10
MOV BL , 6
SUB AL , BL
دﺳﺘﻮراﻟﻌﻤﻞ اول ﻣﻘﺪار 10را در ALﻗﺮار ﻣﻲدﻫﺪ .دﺳﺘﻮراﻟﻌﻤﻞ دوم ﻣﻘﺪار 6
را در BLﻗﺮار ﻣﻲدﻫﺪ و دﺳﺘﻮراﻟﻌﻤﻞ ﺳﻮم ﻣﺤﺘﻮي BLرا از ﻣﺤﺘﻮي ALﻛﻢ ﻧﻤﻮده
ﻧﺘﻴﺠﻪ را در ALﻗﺮار ﻣﻲدﻫﺪ و ﻣﻘﺪار BLﺗﻐﻴﻴﺮ ﻧﻤﻲﻛﻨﺪ.
ﻣﺜﺎل 4-18
X DW 300
Y DW 613
Z DW ?
MOV AX, X
SUB AX , Y
MOV Z , AX
ﺳﻪ دﺳﺘﻮراﻟﻌﻤﻞ اول ﺳﻪ ﻣﺘﻐﻴﺮ Xﺑﺎ ﻣﻘـﺪار 300و Yﺑـﺎ ﻣﻘـﺪار 613و Zاز
ﻧﻮع wordﺗﻌﺮﻳﻒ ﻣﻲﻧﻤﺎﻳﺪ .دﺳﺘﻮراﻟﻌﻤﻞ ﭼﻬﺎرم ﻣﺤﺘﻮي ﻣﺘﻐﻴﺮ Xرا ﺑﻪ AXﻣﻨﺘﻘـﻞ
ﻣﻲﻧﻤﺎﻳﺪ .دﺳﺘﻮراﻟﻌﻤﻞ ﺑﻌﺪي ﻣﺤﺘﻮي ﻣﺘﻐﻴﺮ Yرا از ﻣﺤﺘـﻮي ﺛﺒـﺎت AXﻛـﻢ ﻧﻤـﻮده
ﻧﺘﻴﺠﻪ را در AXﻗﺮار ﻣﻲدﻫﺪ .آﺧﺮﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﺤﺘﻮي ﺛﺒﺎت AXرا ﺑﻪ ﻣﺘﻐﻴﺮ Z
[email protected]
WWW.IRANMEET.COM
٧٤
X
300
AX
-313
M
Y
613
M
Z
-313
ﻣﺜﺎل 4-19
ARR DB 26,126,64,13,40,60
MOV SI, 4
MOV AL, 20
SUB ]AL, ARR [SI
اوﻟــﻴﻦ دﺳــﺘﻮراﻟﻌﻤﻞ ﻳــﻚ آراﻳــﻪ ﺷــﺶ ﻋﻨــﺼﺮي از ﻧــﻮع ﺑﺎﻳــﺖ ﺑــﺎ ﻣﻘــﺎدﻳﺮ
6,126,64,13,40,60ﺗﻌﺮﻳﻒ ﻣﻲ ﻧﻤﺎﻳﺪ .دﺳﺘﻮراﻟﻌﻤﻞ دوم ﻣﻘـﺪار 4را در ﺛﺒـﺎت SI
[email protected]
WWW.IRANMEET.COM
٧٥
ﻗﺮار ﻣﻲدﻫﺪ .دﺳﺘﻮراﻟﻌﻤﻞ ﺳﻮم ﻣﻘﺪار 20را در ﺛﺒـﺎت ALﻗـﺮار ﻣـﻲدﻫـﺪ .آﺧـﺮﻳﻦ
دﺳﺘﻮراﻟﻌﻤﻞ ،ﻣﺤﺘﻮي ARR+4را از ALﻛﻢ ﻧﻤﻮده ﻧﺘﻴﺠﻪ را ﻛـﻪ ﻣـﻲﺷـﻮد –20در
ALﻗﺮار ﻣﻲدﻫﺪ .و ﻣﻘﺪار ﻓﻠﮓ SFﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﻲﺷﻮد.
26 X
SI 126 X+1
4 64 X+2
AL 13 X+3
-20 40 X+4
60
ﻣﺜﺎل 4-20
X DW 613
MOV AX , 248
SUB AX, 48
SUB X , AX
[email protected]
WWW.IRANMEET.COM
٧٦
AX
240 400 X
از دﺳﺘﻮراﻟﻌﻤﻞ SBBﻧﻴﺰ ﺑﺮاي ﻋﻤﻞ ﺗﻔﺮﻳﻖ اﺳﺘﻔﺎده ﻣﻴﮕﺮدد .ﺷﻜﻞ ﻛﻠـﻲ اﻳـﻦ
دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
SBB dst , src
dst dst – src – CF
ﻣﺤﺘﻮي srcاز ﻣﺤﺘﻮي dstﻛﻢ ﻣﻲﺷـﻮد ﺳـﭙﺲ ﻣﻘـﺪار CFرا از ﻧﺘﻴﺠـﻪ ﻛـﻢ
ﻧﻤﻮده آﻧﮕﺎه ﻧﺘﻴﺠﻪ را در dstﻗﺮار ﻣﻲدﻫﺪ.
ﻣﺜﺎل 4-21
MOV AX , 1000
SBB AX , 800
[email protected]
WWW.IRANMEET.COM
٧٧
-3ﺑﺠﺰ در ﻣﻮاردﻳﻜﻪ ﻳﻜﻲ از ﻋﻤﻠﻮﻧﺪﻫﺎ ﺛﺎﺑﺖ ﺑﺎﺷﺪ ﺣﺘﻤﺎًﺑﺎﻳﺴﺘﻲ ﻳﻜﻲ از ﻋﻤﻠﻮﻧﺪﻫﺎ از
ﻧﻮع ﺛﺒﺎت ﺑﺎﺷﺪ.
-4دﺳﺘﻮراﻟﻌﻤﻞ SBBروي ﻓﻠﮓﻫﺎي CF ،OF ،SF ،ZF ،PF ،AFاﺛﺮ دارد.
ﻣﺜﺎل 4-22
ﺑﺎ در ﻧﻈﺮ ﮔﺮﻓﺘﻦ اﻳﻨﻜﻪ ﻣﻘﺪار ﻓﻠﮓ CFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻣﻲﺑﺎﺷﺪ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ
را اﺟﺮا ﻧﻤﺎﺋﻴﺪ.
MOV AL , 100
SBB AL , 60
[email protected]
WWW.IRANMEET.COM
٧٨
X DD 300000
Y DD 250000
Z DD ?
MOV AX, X
SUB AX, Y
MOV Z , AX
MOV AX , X+2
SBB AX, Y+2
MOV Z+2, AX
X
300000
X+2
M
Y
250000
Y+2
M
Z
Z+2
[email protected]
WWW.IRANMEET.COM
٧٩
و ﻧﺘﻴﺠﻪ را در دو ﺑﺎﻳﺖ اول Zﻗﺮار ﻣﻲدﻫﺪ .ﺳﻪ دﺳﺘﻮراﻟﻌﻤﻞ آﺧﺮ ﺗﻔﺎﺿـﻞ دو ﺑﺎﻳـﺖ
آﺧﺮ Xو دو ﺑﺎﻳﺖ آﺧﺮ Yرا ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮراﻟﻌﻤﻞ SBBﻣﺤﺎﺳﺒﻪ ﻧﻤﻮده و ﻧﺘﻴﺠﻪ
ﻣﺜﺎل 4-23
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪرﻳﺰ ﺗﻔﺎﺿﻞ ﻣﻘـﺪار ﻣﺘﻐﻴـﺮ Xاز ﻧـﻮع double wordﺑـﺎ ﻣﺤﺘـﻮي
[email protected]
WWW.IRANMEET.COM
٨٠
AX DX
Y
-4-5ﺿﺮب دو ﻣﻘﺪار
دﺳﺘﻮراﻟﻌﻤﻞ MULو IMULﺑﺮاي ﺿﺮب دو ﻣﻘﺪار اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
دﺳﺘﻮراﻟﻌﻤﻞ MULوﻗﺘﻲ اﺳﺘﻔﺎده ﻣﻲﮔـﺮدد ﻛـﻪ ﻋﻤﻠﻮﻧـﺪﻫﺎ ﺑـﺼﻮرت ﺑـﺪون
ﻋﻼﻣﺖ ) (unsignedدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮﻧﺪ .از دﺳﺘﻮر IMULوﻗﺘﻲ اﺳﺘﻔﺎده ﻣﻲﮔﺮدد
[email protected]
WWW.IRANMEET.COM
٨١
ﻛﻪ ﻋﻤﻠﻮﻧﺪﻫﺎ ﺑﺼﻮرت ﻋﻼﻣﺖ دار) (signedدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﻮﻧﺪ .ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر
MULﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
MUL Opr
ﻣﺜﺎل 4-24
MOV BL, 11H
MOV AL, 0B4H
MUL BL
[email protected]
WWW.IRANMEET.COM
٨٢
ﻣﺜﺎل 4-25
X DB ?
MOV X, 0A5H
MOV AL, 62O
MUL X
AL
00110010
165 * 50 = 8250
165 X
AX
8250
[email protected]
WWW.IRANMEET.COM
٨٣
ﻣﺜﺎل 4-26
MOV AL , 5
MOV DL , 21
MUL DL
در اﻳﻨﺠﺎ ﻣﻘﺪار OFو CFﻫﺮ دو ﺻﻔﺮ ﻣﻲﺷﻮد ﻛﻪ ﻧﺸﺎن دﻫﻨـﺪه اﻳﻨـﺴﺖ ﻛـﻪ
ﻧﺘﻴﺠﻪ ﺣﺎﺻﻠﻀﺮب دو ﺑﺎﻳﺖ در ﻳﻚ ﺑﺎﻳﺖ ﺟﺎي ﻣﻲﺷﻮد و ﻧﺘﻴﺠﻪ در ALﻗﺮار ﻣﻲﮔﻴﺮد
و ﻣﻘﺪار ﺛﺒﺎت AHﺻﻔﺮ ﻣﻲﺑﺎﺷﺪ.
دﺳﺘﻮراﻟﻌﻤﻞ MULﻧﻴﺰ ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺣﺎﺻﻠـﻀﺮب دو ﻣﻘـﺪار از ﻧـﻮع word
ﻧﻴﺰ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد .ﺑﺮاي اﻳﻦ ﻛﺎر ﻳﻜﻲ از ﻋﻤﻠﻮﻧﺪﻫﺎ ﺑﺎﻳﺴﺘﻲ ﺣﺘﻤﺎًدر ﺛﺒﺎت AX
ﻗﺮار ﮔﻴﺮد .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻧﺘﻴﺠـﻪ ﺣﺎﺻﻠـﻀﺮب در ﺛﺒﺎﺗﻬـﺎي DX:AXﻗـﺮار
ﻣﻲﮔﻴﺮد.
ﻣﺜﺎل 4-27
MOV AX, 2000
MOV BX, 15
MUL BX
[email protected]
WWW.IRANMEET.COM
٨٤
ﻣﺜﺎل 4-28
[email protected]
WWW.IRANMEET.COM
٨٥
2000
BX 2001
2002 2002 X
5000
2003
AX 2004
3000 2005
DX AX
15000000
AL
00010001
[email protected]
WWW.IRANMEET.COM
٨٦
BL
10110100
128 + 32 + 16 + 4 = 180
180 – 28 = 180-256 = -76
[email protected]
WWW.IRANMEET.COM
٨٧
ﻣﺜﺎل 4-29
X ? DW
MOV X, -300
MOV AX, 20
IMUL X
اوﻟﻴﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺪار Xرا از ﻧﻮع ﺑﺎﻳﺖ ﺑﺼﻮرت زﻳﺮ ﺗﻌﺮﻳﻒ ﻣﻲﻧﻤﺎﻳﺪ.
ﻣﺘﻐﻴﺮ X
10110110
[email protected]
WWW.IRANMEET.COM
٨٨
128 + 32 + 16 + 4 + 2 = 192
192 – 256 = -64
ﺣﺎل
1 0 0 1 0 0 0 1
128 64 32 16 8 4 2 1
128 + 16 + 1 = 145
145 – 256 = -91
ﻣﺜﺎل 4-30
1 2 4 *
1 0 3
3 7 2 ﺣﺎﺻﻠﻀﺮب ﺟﺰﺋﻲ 1
0 0 0 ﺣﺎﺻﻠﻀﺮب ﺟﺰﺋﻲ 2
1 2 4 ﺣﺎﺻﻠﻀﺮب ﺟﺰﺋﻲ 3
1 2 7 7 2 ﺣﺎﺻﻠﻀﺮب ﻧﻬﺎﺋﻲ
[email protected]
WWW.IRANMEET.COM
٨٩
ﺑﺎ اﻳﻦ ﻃﺮﻳﻖ ﻣﻲﺗﻮان ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﻮر MULدو ﻣﻘﺪار 32ﺑﻴﺘـﻲ را ﺑـﺪون
ﻋﻼﻣﺖ را در ﻫﻢ ﺿﺮب و ﺑﻪ ﻳﻚ ﻧﺘﻴﺠﻪ 64ﺑﻴﺘﻲ رﺳﻴﺪ .در ﺷﻜﻞ زﻳـﺮ B ، C ، Dو
،Aﻫﺮ ﻛﺪام ﺑﺼﻮرت 2ﺑﺎﻳﺖ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه اﺳﺖ.
[email protected]
WWW.IRANMEET.COM
٩٠
-4-7ﺗﻘﺴﻴﻢ دو ﻣﻘﺪار
ﺑﺎاﺳﺘﻔﺎده از دﺳﺘﻮراﻟﻌﻤﻞ DIVﻣﻲﺗﻮان دو ﻣﻘﺪار را ﺑﺮ ﻫﻢ ﺗﻘﺴﻴﻢ ﻧﻤﻮد .ﺷﻜﻞ
ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ DIVﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
DIV Opr
ﻣﺜﺎل 4-31
MOV AX , 130
MOV BL , 5
DIV BL
AX
0000000010000010
[email protected]
WWW.IRANMEET.COM
٩١
BL
00000101
AH ﺑﺎﻗﻴﻤﺎﻧﺪه
00000000
BL
00000101
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ دﺳﺘﻮراﻟﻌﻤﻞ DIVﺑﺮ روي ﻫﻴﭻ ﻓﻠﮕـﻲ اﺛـﺮ ﻧـﺪارد و
ﻣﻘﺪار ﻓﻠﮓﻫﺎي CF ،ZF ،SF ،PF ،OF ،AFﺗﻌﺮﻳـﻒ ﻧـﺸﺪه ﻣـﻲﺑﺎﺷـﻨﺪ .در ﺿـﻤﻦ
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻣﻘﺪار ﻋﻤﻠﻮﻧﺪ oprﺑﺪون ﺗﻐﻴﻴﺮ ﺑﺎﻗﻲ ﻣﻲﻣﺎﻧﺪ.
ﻣﺜﺎل 4-32
X DB 10110100B
MOV AX, 0400H
DIV X
X
10110100
[email protected]
WWW.IRANMEET.COM
٩٢
AX
0000010000000000
AH
01111100
ﻣﺘﻐﻴﺮ X
10110100
ﻣﺜﺎل 4-33
X DW 2600
MOV AX, 00A2H
MOV DX, 0B1CH
DIV X
DX AX
0000101100001100 0000000010100010
[email protected]
WWW.IRANMEET.COM
٩٣
ﻣﺜﺎل 4-34
MOV BL, 0B4H
MOV AX, 0400H
IDIV BL
BL
10110100
AX
0000010000000000
[email protected]
WWW.IRANMEET.COM
٩٤
128 + 32 + 16 + 4 = 180
180 – 256 = -76
دوﻣﻴﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺪار 400Hرا در ﺛﺒﺎت AXﻗﺮار ﻣﻲدﻫﺪ ،ﻛﻪ ﻣﻘﺪار آن
ﺑﺮاﺑﺮ ﺑﺎ 1024ﻣﻲﺑﺎﺷﺪ .آﺧﺮﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺪار 1024را ﺑﺮ –76ﺗﻘـﺴﻴﻢ ﻧﻤـﻮده،
ﻧﺘﻴﺠﻪ ﺗﻘﺴﻴﻢ ﺑﺮاﺑﺮ ﺑﺎ –13ﻣﻲﺑﺎﺷﺪ ﻛﻪ در ﺛﺒﺎت ALﻗـﺮار داده ﻣـﻲﺷـﻮد و ﺑﺎﻗﻴﻤﺎﻧـﺪه
راﻛــﻪ ﺑﺮاﺑــﺮ ﺑــﺎ 36ﻣــﻲﺑﺎﺷــﺪ در ﺛﺒــﺎت AHﻗــﺮار ﻣــﻲدﻫــﺪ و ﻣﻘــﺪار BL
ﺑــﺪون ﺗﻐﻴﻴــﺮ ﺑــﺎﻗﻲ ﻣــﻲﻣﺎﻧــﺪ .ﻣﻘــﺎدﻳﺮ ﺛﺒﺎﺗﻬــﺎ ﭘــﺲ از اﺟــﺮاي دﺳــﺘﻮراﻟﻌﻤﻠﻬﺎ
ﻋﺒﺎرﺗﻨﺪ از :
AL
11110011
AH
00100100
BL
10110100
[email protected]
WWW.IRANMEET.COM
٩٥
ﻣﺜﺎل 4-35
MOV AX, 2ACH
MOV DX, 0B2H
MOV BX, 004AH
IDIV BX
ﻣﺜﺎل 4-36
X DB 0A2H
MOV AX, 0502H
IDIV X
ﻣﺘﻐﻴﺮ X
10100010
128 + 32 + 2 = 162
162 – 256 = -94
[email protected]
WWW.IRANMEET.COM
٩٦
1 0 1 0 0 0 0 0 0 1 0
1024 512 256 128 64 32 16 8 4 2 1
ﻣﺘﻐﻴﺮ X
10100010
AL
11110011
AH
00111100
ﻣﺜﺎل4-37
MOV AX, 3000
DEC AX
[email protected]
WWW.IRANMEET.COM
٩٧
ﻣﺜﺎل 4-38
X DB 130
LEA BX , X
DEC ][BX
BX 2000
2002 2001
2002 130 X
2003
2004
[email protected]
WWW.IRANMEET.COM
٩٨
BX 2000
2002 2001
2002 129
2003
در ﻣﻮرد اﺳﺘﻔﺎده از اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﻳﺴﺘﻲ ﻧﻜﺎت ذﻳﻞ را رﻋﺎﻳﺖ ﻧﻤﻮد.
اﻟﻒ( oprﻧﻤﻲﺗﻮاﻧﺪ ﺛﺎﺑﺖ ﺑﺎﺷﺪ.
ب( oprﺑﺎﻳﺴﺘﻲ از ﻧﻮع ﺛﺒﺎت ﻳﺎ ﻣﺘﻐﻴﺮ ﺑﺎﺷﺪ.
ج( oprﺑﺎﻳﺴﺘﻲ از ﻧﻮع ﺑﺎﻳﺖ ﻳﺎ wordﺑﺎﺷﺪ.
د( اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ روي ﻓﻠﮓﻫﺎي AF ، ZF ،OF ، SFو PFاﺛﺮ دارد.
ﻣﺜﺎل 4-39
MOV AL, 100
INC AL
ﻣﻘﺪار ALرا ﺑﻪ 101اﻓﺰاﻳﺶ ﻣﻲدﻫﺪ.
ﻣﺜﺎل 4-40
X DB 10,20,26,44,6
MOV SI , 2
MOV BX, OFFSET X
INC ][BX] [SI
[email protected]
WWW.IRANMEET.COM
٩٩
2999
3000 10 X
3001 20
BX 3002 26
3000 3003 41
3004 6
SI
2
در ﺣﻘﻴﻘﺖ ﻣﻘﺪار ﺧﺎﻧﻪ ﺣﺎﻓﻈﻪ ﺑﺎ آدرس 3002از 26ﺑﻪ 27اﻓﺰاﻳﺶ ﻣﻲﻳﺎﺑﺪ.
[email protected]
WWW.IRANMEET.COM
١٠٠
ﻣﺜﺎل 4-41
MOV AX, -100
NEG AX
در ﻓﺼﻞ ﻧﻬﻢ ﻧﺤﻮه ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪ و اﺟﺰاي آن ﺑﻴﺎن ﮔﺮدﻳﺪه اﺳﺖ.
[email protected]
WWW.IRANMEET.COM
١٠١
در اﻳﻦ ﻓﺼﻞ دﺳﺘﻮراﻟﻌﻤﻞ ADDﺑﺮاي ﺟﻤﻊ ﻧﻤﻮدن دو ﻣﻘﺪار از ﻧﻮع ﺑﺎﻳﺖ ﻳﺎ
wordو دﺳﺘﻮراﻟﻌﻤﻞ SUBﺑﺮاي ﺗﻔﺮﻳﻖ ﻛﺮدن دو ﻣﻘﺪار از ﻧﻮع ﺑﺎﻳﺖ ﻳﺎ wordداده
ﺷﺪ .ﺷﻜﻞ ﻛﻠﻲ آﻧﻬﺎ ﺑﺼﻮرت زﻳﺮ ﻣﻲ ﺑﺎﺷﺪ.
MUL Opr
IMUL Opr
[email protected]
WWW.IRANMEET.COM
١٠٢
aﺗﻤﺮﻳﻦ
-1دﺳﺘﻮراﻟﻌﻤﻞ ADDروي ﻛﺪام ﻓﻠﮓ اﺛﺮ دارد؟
-2دﺳﺘﻮراﻟﻌﻤﻞ DECروي ﻛﺪام ﻓﻠﮓ اﺛﺮ ﻧﺪارد؟
-3در دﺳﺘﻮراﻟﻌﻤﻞ IDIVﻣﻘﺎدﻳﺮ ﻛﺪام ﻓﻠﮓ ﺗﻌﺮﻳﻒ ﻧﺸﺪه ﻣﻲﺑﺎﺷﺪ؟
-4اﻟﮕﻮرﻳﺘﻤﻲ را اراﻳﻪ دﻫﻴﺪ ﻛﻪ دو ﻣﻘﺪار از ﻧـﻮع double wordرا در ﻫـﻢ ﺿـﺮب
ﻧﻤﺎﻳﺪ.
-5ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﺮاي اﻟﮕﻮرﻳﺘﻢ ﺗﻤﺮﻳﻦ 4اراﻳﻪ ﻛﻨﻴﺪ.
-6دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻻزم ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﻣﺠﻤﻮع ﺛﺒﺎﺗﻬﺎي CX ،BX ،AXو DXاراﻳﻪ
ﻛﻨﻴﺪ.
-7ﺑﻪ ﭼﻨﺪ ﻃﺮﻳﻖ ﻣﻲﺗﻮان ﻣﻘﺪار ﺛﺒـﺎت AXرا ﺻـﻔﺮ ﻧﻤـﻮد؟ دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ﻻزم را
اراﻳﻪ ﻛﻨﻴﺪ.
-8دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ MULﺑﺮ ﭼﻪ ﻓﻠﮓﻫﺎﺋﻲ اﺛﺮ ﻧﺪارد؟
-9ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ آراﻳـﻪ 5ﻋﻨـﺼﺮي Xاز ﻧـﻮع wordرا
ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
-10ﻗﻄﻌــﻪ ﺑﺮﻧﺎﻣــﻪاي ﺑﻨﻮﻳــﺴﻴﺪ ﻛــﻪ ﻣﺠﻤــﻮع ﻋﻨﺎﺻــﺮ آراﻳــﻪ 5ﻋﻨــﺼﺮي Xاز ﻧــﻮع
double wordرا ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
-11دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻌﺎدل LEAﻣﺸﺨﺺ ﻛﻨﻴﺪ.
-12دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻌﺎدل INC BXﻣﺸﺨﺺ ﻛﻨﻴﺪ.
-13ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ را ﺑﻪ اﺳﻤﺒﻠﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
;long int x,y,z,w
;w=x+y-z+30
-14ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺣﺎﺻﻠﻀﺮب ﻣﻘﺎدﻳﺮ ﺛﺒﺎﺗﻬﺎي CL ،BL ،ALو DLرا
ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
-15ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ را ﺑﻪ اﺳﻤﺒﻠﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
[email protected]
WWW.IRANMEET.COM
١٠٣
VAR
; X, Y, Z, W : 1 ..20
;W : = X + Y * Z-W + 100
-16ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺣﺎﺻﻠﻀﺮب ﻋﻨﺎﺻﺮ آراﻳﻪ ﭼﻬﺎر ﻋﻨـﺼﺮي Xاز ﻧـﻮع
ﺑﺎﻳﺖ را ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ؟ در ﺻﻮرﺗﻴﻜﻪ ﺑﺎ ﻣﺸﻜﻠﻲ روﺑﺮو ﺷﺪﻳﺪ ذﻛﺮ ﻧﻤﺎﺋﻴﺪ.
-17ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻌﺎدل زﻳﺮ ﺑﻪ اﺳﻤﺒﻠﻲ ﺑﺪﻫﻴﺪ.
;int x, y, z, w
;w = x –y + z – 200
-18ﭼﻨﺎﻧﭽﻪ ﺑﺨﻮاﻫﻴﻢ ﻣﺤﺘﻮي ALرا ﺑﻴﻚ wordﺗﺒﺪﻳﻞ ﻧﻤـﻮده و ﻧﺘﻴﺠـﻪ را در AX
ﻗﺮار دﻫﻴﻢ ﻣﺤﺘﻮي AHﭼﻴﺴﺖ؟
-19در ﻣﻮرد ﺗﻤﺮﻳﻦ 18ﭼﻨﺎﻧﭽﻪ MSBﺛﺒـﺎت ALﺑﺮاﺑـﺮ ﻳـﻚ ﺑﺎﺷـﺪ ﻣﺤﺘـﻮي AH
ﭼﻴﺴﺖ؟
-20دﺳﺘﻮراﻟﻌﻤﻞ ﻻزم ﺑﺮاي اﻧﺠﺎم ﻣﺤﺎﺳﺒﻪ زﻳﺮ را ﻣﺸﺨﺺ ﻛﻨﻴﺪ.
;int x,y,z,w
;w = x/y * z-10
[email protected]
WWW.IRANMEET.COM
١٠٤
ﻓﺼﻞ ﭘﻨﺠﻢ
اﻧﺸﻌﺎب و ﺗﻜﺮار
ﻫﺪف ﻛﻠﻲ
آﺷﻨﺎﺋﻲ ﺑﺎ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي اﻧﺸﻌﺎب و ﺗﻜﺮار در زﺑﺎن اﺳﻤﺒﻠﻲ
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻔﺎﻫﻴﻢ و ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ.
-1ﭘﺮش ﻏﻴﺮ ﺷﺮﻃﻲ
-2ﭘﺮﺷﻬﺎي ﺷﺮﻃﻲ
-3ﻣﻘﺎﻳﺴﻪ
-4اﻧﻮاع دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺗﻜﺮار
[email protected]
WWW.IRANMEET.COM
١٠٥
ﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ .اﻳﻦ دﺳﺘﻮر روي ﻫـﻴﭻ ﻓﻠﮕـﻲ اﺛـﺮ
ﻧﺪارد.
JMP آدرس
ﻣﺜﺎل 5-1
JMP LAB2
ﻣﺜﺎل 5-2
MOV AL, 5
ADD AL, BL
JMP LAB1
MUL BL
INC BL
LAB1: SUB CX , 2
M
در ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق اﺑﺘﺪا ﻣﻘﺪار 5در ﺛﺒﺎت ALﻗﺮار ﻣﻲﮔﻴﺮد ،ﺳـﭙﺲ ﻣﻘـﺪار
BLﺑﻪ آن اﺿﺎﻓﻪ ﮔﺮدﻳﺪ .آﻧﮕﺎه ﻛﻨﺘـﺮل ﺑـﻪ LAB1ﻣﻨﺘﻘـﻞ ﻣـﻲﮔـﺮدد و دﺳـﺘﻮراﻟﻌﻤﻞ
SUBﺑﻪ ﺑﻌﺪ اﺟﺮا ﻣﻲﮔﺮدد .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ دو دﺳﺘﻮر MULو INCاﺟﺮا
ﻧﻤﻲﺷﻮﻧﺪ.
[email protected]
WWW.IRANMEET.COM
١٠٦
JX آدرس
ﻣﺜﺎل 5-3
JZ LAB2
ﻣﺜﺎل 5-4
JS LAB5
ﭼﻨﺎﻧﭽﻪ ﻣﻘﺪار OFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﺑﺎﺷﺪ ﻛﻨﺘـﺮل ﺑـﻪ LAB20در ﺑﺮﻧﺎﻣـﻪ ﻣﻨﺘﻘـﻞ
ﻣﻲﮔﺮدد .از اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻌﻤﻮﻻً ﭘﺲ از اﺟﺮاي ﻋﻤﻠﻴﺎت رﻳﺎﺿﻲ اﺳﺘﻔﺎده ﻣﻲﺷﻮد.
ﻣﺜﺎل 5-6
MOV AX, -100
ADD AX, BX
SUB AX, CX
JNZ LABNEXT
M
LABNEXT: MOV CX,10
M
[email protected]
WWW.IRANMEET.COM
١٠٧
در ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ اﺑﺘﺪا ﻣﻘـﺪار –100در ﺛﺒـﺎت AXﻗـﺮار داده ﻣـﻲﺷـﻮد و
ﺳﭙﺲ ﻣﻘﺪار BXﺑﻪ آن اﻓﺰوده ﻣﻲﮔﺮدد و ﺳﭙﺲ ﻣﻘـﺪار CXاز آن ﻛـﺴﺮ ﻣـﻲﮔـﺮدد.
ﺣﺎل ﭼﻨﺎﻧﭽﻪ ﻧﺘﻴﺠﻪ ﻣﺤﺎﺳﺒﻪ ﻳﻌﻨﻲ ﻣﻘﺪار AXﻣﺨﺎﻟﻒ ﺻـﻔﺮ ﺑﺎﺷـﺪ ﻛﻨﺘـﺮل ﺑـﻪ آدرس
LABNEXTدر ﺑﺮﻧﺎﻣﻪ ﻣﻨﺘﻘﻞ ﻣﻲﮔﺮدد.
ﺟﺪول ذﻳﻞ اﻧﻮاع دﺳﺘﻮراﻟﻌﻤﻞﻫﺎي ﭘﺮش ﺷﺮﻃﻲ را ﻧﺸﺎن ﻣﻲدﻫﺪ.
ﺟﺪول 5-1
ﻧﺎم دﻳﮕﺮ
ﻋﻤﻞ ﻧﺎم دﺳﺘﻮراﻟﻌﻤﻞ ﺷﺮط ﺗﺴﺖ
دﺳﺘﻮراﻟﻌﻤﻞ
اﻧﺸﻌﺎب روي ﺻﻔﺮ JZ JE ZF=1
اﻧﺸﻌﺎب روي ﻣﺨﺎﻟﻒ ﺻﻔﺮ JNZ JNE ZF=0
اﻧﺸﻌﺎب روي ﻋﻼﻣﺖ ﻣﻨﻔﻲ JS SF=1
اﻧﺸﻌﺎب روي ﻋﻼﻣﺖ ﻏﻴﺮ ﻣﻨﻔﻲ JNS SF=0
اﻧﺸﻌﺎب روي ﺳﺮرﻳﺰي JO OF=1
اﻧﺸﻌﺎب روي ﻋﺪم ﺳﺮرﻳﺰي JNO OF=0
اﻧﺸﻌﺎب روي اﻳﺠﺎد ﺑﻴﺖ ﺗﻮازن JP JPE PF=1
اﻧﺸﻌﺎب روي ﻋﺪم اﻳﺠﺎد ﺑﻴﺖ ﺗﻮازن JNP JPO PF=0
اﻧﺸﻌﺎب روي اﻳﺠﺎد ﺑﻴﺖ ﻧﻘﻠﻲ JC CF=1
اﻧﺸﻌﺎب روي ﻋﺪم اﻳﺠﺎد ﺑﻴﺖ ﻧﻘﻠﻲ JNC CF=0
[email protected]
WWW.IRANMEET.COM
١٠٨
Z ZERO
S SIGN
N NOT
P PARITY
O OVERFLOW
O ODD در JPO
E EQUAL
J JUMP
E EVEN در JPE
C CARRY
ﻣﺜﺎل 5-7
TOT ? DW
MOV TOT, 0
MOV CX, 10
BEGIN: ADD TOT, CX
DEC CX
JNZ BEGIN
در ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ ﻣﺘﻐﻴﺮ TOTاز ﻧﻮع wordﺗﻌﺮﻳـﻒ ﮔﺮدﻳـﺪه و ﻣﻘـﺪار آن
ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻗﺮار داده ﺷﺪه اﺳﺖ .ﻣﻘﺪار اوﻟﻴﻪ CXﻧﻴﺰ ﺑﺮاﺑﺮ ﺑﺎ 10ﻣـﻲﺑﺎﺷـﺪ .ﻗﻄﻌـﻪ
ﺑﺮﻧﺎﻣﻪ ﻧﻘﺶ ﻳﻚ ﺣﻠﻘﻪ ﺗﻜﺮار دارد ﻛﻪ ﻣﻘﺎدﻳﺮ 1ﺗﺎ 10را ﺑﺎ ﻫﻢ ﺟﻤﻊ ﻣـﻲﻧﻤﺎﻳـﺪ ﻳﻌﻨـﻲ
ﺗﺎ ﻣﺎداﻣﻴﻜﻪ ﻣﻘﺪار CXﻣﺨﺎﻟﻒ ﺻﻔﺮ ﻣﻲﺑﺎﺷﺪ ،ﻣﻘﺪار CXﺑﺎ TOTﺟﻤﻊ ﻣـﻲﮔـﺮدد و
ﻳﻚ واﺣﺪ از CXﻛﻢ ﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
١٠٩
ﻣﺜﺎل 5-8
X ? DW
MOV AX ,X
SUB AX, 100
NEG AX
JNS ACT2
M
ACT2 : ADD BX , AX
M
ﻣﻘﺪار Xدر ﺛﺒﺎت AXﻗﺮار داده ﺷﺪه آﻧﮕﺎه 100واﺣـﺪ ﻛـﺎﻫﺶ داده ﺷـﺪه
ﺳﭙﺲ ﻣﻘﺪار AXدر ﻣﻨﻔﻲ ﻳﻚ ﺿﺮب ﺷﺪه ﺣﺎل ﭼﻨﺎﻧﭽـﻪ ﻣﻘـﺪار AXﻣﻨﻔـﻲ ﻧﺒﺎﺷـﺪ
ﻛﻨﺘﺮل ﺑﻪ ACT2ﻣﻨﺘﻘﻞ ﻣﻲﮔﺮدد .در ﻏﻴﺮ اﻳﻨﺼﻮرت اﺟـﺮاي دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ﺑﻌـﺪي
اداﻣﻪ ﻣﻲﻳﺎﺑﺪ.
-5-3دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺎﻳﺴﻪ
دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺎﻳﺴﻪ در زﺑﺎن اﺳﻤﺒﻠﻲ CMPﻣﻲﺑﺎﺷﺪ .ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ
[email protected]
WWW.IRANMEET.COM
١١٠
ﻣﺜﺎل 5-9
CMP AX , BX
[email protected]
WWW.IRANMEET.COM
١١١
B Below
A Above
G Greater than
E Equal to
L Less than
C Carry
N Not
ﻣﻘﺪار اول در AXﺑﺎ ﻣﻘﺪار دوم ﻣﻘﺎﻳﺴﻪ ﻣﻲﺷﻮد ; ]CMP AX, [DI
آﻳﺎ ﻣﻘﺪار اول ﻛﻤﺘﺮ ﻳﺎ ﻣﺴﺎوي ﻣﻘﺪار دوم ﻣﻲﺑﺎﺷﺪ؟ ; JBE DONE
; ]XCHG AX , [DI در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﺒﺎدﻟﺔ ﻣﻘﺎدﻳﺮ
MOV [BX] , AX
DONE:
M
در ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣـﻪ ﺑـﺎﻻ دو ﻣﻘـﺪار از ﺣﺎﻓﻈـﻪ ﻛـﻪ ﺑﻮﺳـﻴﻠﻪ ﺛﺒﺎﺗﻬـﺎي DIو BX
ﻣﺸﺨﺺ ﻣﻲﺷﻮﻧﺪ را ﺑﺘﺮﺗﻴﺐ ﺻﻌﻮدي ﻣﺮﺗﺐ ﻣﻲﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١١٢
ﻣﺜﺎل 5-11
M
CMP AL , BL
JE ZERO
ﻣﺜﺎل 5-12
MOV AX , -100
CMP BX , AX
JG LAB2
[email protected]
WWW.IRANMEET.COM
١١٣
ﻣﺜﺎل 5-13
MOV AX , 100
CMP BX, AX
JA LAB2
ﻋﻤﻠﻮﻧﺪﻫﺎي CMPﺑﺪون ﻋﻼﻣﺖ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮﻧﺪ.
-5-4دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺗﻜﺮار
ﻫـﺮ وﻗــﺖ ﺑﺨـﻮاﻫﻴﻢ ﺗﻌــﺪادي دﺳـﺘﻮراﻟﻌﻤﻞ ﺑــﺼﻮرت ﻣﻜـﺮر اﺟــﺮا ﮔــﺮدد از
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺗﻜﺮار ﺑﺎﻳﺴﺘﻲ اﺳﺘﻔﺎده ﻧﻤﺎﺋﻴﻢ .دﺳـﺘﻮراﻟﻌﻤﻞ ﺗﻜـﺮار در زﺑـﺎن اﺳـﻤﺒﻠﻲ
LOOPﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺷﻜﻞ ﻛﻠﻲ آن ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
LOOP آدرس
ﻫﺮ وﻗﺖ ﻛﻨﺘﺮل ﺑﺪﺳﺘﻮر LOOPﻣﻴﺮﺳﺪ اﺑﺘﺪا ﻣﻘـﺪار ﺛﺒـﺎت CXﻳـﻚ واﺣـﺪ
ﻛﺎﻫﺶ ﻳﺎﻓﺘﻪ ﺳﭙﺲ ﻣﺤﺘﻮي ﺛﺒـﺎت CXﺑـﺎ ﺻـﻔﺮ ﻣﻘﺎﻳـﺴﻪ ﻣـﻲﮔـﺮدد و در ﺻـﻮرﺗﻴﻜﻪ
ﻣﺤﺘﻮي ﺛﺒﺎت CXﻣﺨﺎﻟﻒ ﺻﻔﺮ ﺑﺎﺷﺪ ﻛﻨﺘﺮل ﺑـﻪ آدرس داده ﺷـﺪه ﻣﻨﺘﻘـﻞ ﻣـﻲﮔـﺮدد.
ﺗﻌﺪاد دﻓﻌﺎت ﺗﻜﺮار ﻋﻤﻼً ﺑﺎﻳﺴﺘﻲ در ﺛﺒﺎت CXﻗﺮار داد .دﺳـﺘﻮراﻟﻌﻤﻞ LOOPروي
ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
ﻣﺜﺎل 5-14
MOV CX , 10
LABI:
M
LOOP LABI
اﻳﻦ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻌﺎدل ﺑﺮﻧﺎﻣﻪ ﭘﺎﺳﻜﺎل زﻳﺮ ﻣﻲﺑﺎﺷﺪ ﻳﻌﻨﻲ داﻣﻨـﻪ ﺗﻜـﺮار ده ﺑـﺎر
اﺟﺮا ﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
١١٤
FOR I: =1 TO 10 DO
BEGIN
M
; END
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﻣﺠﻤﻮع ﻋﻨﺎﺻﺮ آراﻳـﻪ Xﻛـﻪ از ﻧـﻮع Wordو Nﻋﻨـﺼﺮي
ﻣﻲﺑﺎﺷﺪ را ﻣﺤﺎﺳﺒﻪ ﻧﻤﻮده ﻧﺘﻴﺠﻪ را در ﻣﺘﻐﻴﺮ TOTALﻗﺮار ﻣﻲدﻫﺪ.
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ آراﻳـﻪ Nﻋﻨـﺼﺮي Aاز ﻧـﻮع wordرا ﺑـﺼﻮرت ﺻـﻌﻮدي
[email protected]
WWW.IRANMEET.COM
١١٥
Bubble ; Sort
N DW ?
MOV CX , N
DEC CX
LOOP 1: MOV DI , CX
MOV BX , 0
LOOP2: MOV AX , A[BX]
CMP AX, A[BX+2]
JGE CONTINUE
XCHG AX, A[BX+2]
MOV A [BX] , AX
CONTINUE: ADD BX,2
LOOP LOOP2
MOV CX , DI
LOOP LOOP1
[email protected]
WWW.IRANMEET.COM
١١٦
ﻣﺜﺎل5-15
ARR DB
N DW
MOV CX , N
MOV SI , -1
MOV AL, 20H; ASCII code for blank
NEXT: INC SI
CMP AL, ARR[SI]; test for blank
LOOPNE NEXT
JNZ NOT_FOUND
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺎﻻ رﺷﺘﺔ داده ﺷﺪه Nﻋﻨﺼﺮي ARRاز ﻧﻮع ﺑﺎﻳـﺖ را ﺟـﺴﺘﺠﻮ
ﻣﻲﻧﻤﺎﻳﺪ ﻛﻪ آﻳﺎ ﻛﺎرﻛﺘﺮ blankﻳﺎ ﻓﺎﺻﻠﻪ در رﺷﺘﻪ وﺟﻮد دارد ﻳﺎ ﺧﻴﺮ؟
ﺗﻮﺟﻪ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ دﺳﺘﻮر ﺗﻜﺮار ﺑﺎﻻ وﻗﺘﻲ ﻣﺘﻮﻗﻒ ﻣﻲﺷﻮد ﻛﻪ ﻋﻨﺎﺻﺮ رﺷﺘﻪ
ﻫﻤﻪ ﻣﻮرد ﺑﺮرﺳﻲ ﻗﺮار ﮔﺮﻓﺘﻪ ﺑﺎﺷﻨﺪ ﻳﺎ ﺑﻪ ﻛﺎرﻛﺘﺮ ﻓﺎﺻﻠﻪ رﺳﻴﺪه ﺑﺎﺷـﻴﻢ .ﺷـﻜﻞ دﻳﮕـﺮ
دﺳﺘﻮراﻟﻌﻤﻞ ﺗﻜﺮار ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
LOOPE آدرس
ﻳﺎ
LOOPZ آدرس
[email protected]
WWW.IRANMEET.COM
١١٧
ﺑﺮﻧﺎﻣﻪ ﻓﻮق ﻳﻚ ﺑﻠﻮك از ﺣﺎﻓﻈـﻪ ﻛـﻪ آدرس ﺷـﺮوع ان ﺗﻮﺳـﻂ ﺛﺒـﺎت BXو
آدرس اﻧﺘﻬﺎي آن ﺗﻮﺳﻂ ﺛﺒﺎت DIﻣﺸﺨﺺ ﺷﺪه را ﺑﺎﻳﺖ ﺑـﻪ ﺑﺎﻳـﺖ ﺟـﺴﺘﺠﻮ ﻧﻤـﻮده
ﺑﺮاي ﻳﺎﻓﺘﻦ ﻋﻨﺼﺮي ﻛﻪ ﻣﺨﺎﻟﻒ ﺻﻔﺮ ﺑﺎﺷﺪ.
ﺷﻜﻞ دﻳﮕﺮ دﺳﺘﻮر ﺗﻜﺮار ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
JCXZ آدرس
در ﺣﻘﻴﻘﺖ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻳﻚ ﻧﻮع دﺳﺘﻮراﻟﻌﻤﻞ ﭘﺮش ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺑﺮاﺳﺎس
ﻓﻠﮕﻬﺎ ﻋﻤﻞ ﻧﻤﻲﻛﻨﺪ ﺑﻠﻜﻪ ﺑﺮاﺳﺎس ﻣﺤﺘﻮي ﺛﺒﺎت CXﻋﻤﻞ ﻣﻲﻛﻨﺪ .ﭼﻨﺎﻧﭽـﻪ ﻣﺤﺘـﻮي
CXﻣﺴﺎوي ﺻﻔﺮ ﺑﺎﺷﺪ ﻛﻨﺘﺮل ﺑﻪ آدرس داده ﺷﺪه ﻣﻨﺘﻘﻞ ﻣﻲﺷﻮد .اﻳـﻦ دﺳـﺘﻮراﻟﻌﻤﻞ
روي ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد .ﻧﻬﺎﻳﺘﺎً ﺟﺪول ذﻳﻞ را دارﻳﻢ.
ﺟﺪول 5-4
ﻋﻤﻞ ﻧﺎم ﻧﺎم دﻳﮕﺮ ﺷﺮط ﺗﻜﺮار
LOOP LOOP CX < > 0
LOOP While equal
LOOPE LOOPZ CX < > 0 and ZF=1
or zero
LOOP while not
LOOPNE LOOPNZ CX < > 0 and ZF=0
equal or nonzero
Branch on CX JCXZ CX=0
[email protected]
WWW.IRANMEET.COM
١١٨
در اﻳﻦ ﻓﺼﻞ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﭘﺮﺳﺶ ﺗﺸﺮﻳﺢ ﮔﺮدﻳـﺪه اﻳـﻦ دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎ ﺑـﺮ
اﺳﺎس ﻓﻠﮓﻫﺎ ﻋﻤﻞ ﻣﻲﻧﻤﺎﻳﻨﺪ .ﺿﻤﻨﺎً دﺳﺘﻮراﻟﻌﻤﻞﻫﺎي ﺗﻜﺮار ﻧﻴﺰ ﻣﻄﺮح ﮔﺮدﻳﺪه اﺳـﺖ
ﻛـﻪ در دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎ ﺗﻜـﺮار ﺗﻌـﺪاد دﻓﻌـﺎت ﺗﻜـﺮار در ﺛﺒـﺎت CXﻗـﺮار ﻣـﻲﮔﻴـﺮد.
دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺎﻳﺴﻪ CMPﻣﻲﺑﺎﺷﺪ ﻛﻪ ﻣﺎﻧﻨﺪ دﺳﺘﻮراﻟﻌﻤﻞ SUBﻋﻤـﻞ ﻧﻤـﻮده وﻟـﻲ
ﻧﺘﻴﺠﻪ در ﺟﺎﺋﻲ ذﺧﻴﺮه ﻧﻤﻲﮔﺮدد ﺑﻠﻜﻪ روي ﻓﻠﮕﻬﺎ اﺛﺮ ﻣﻲﮔﺬارد.
[email protected]
WWW.IRANMEET.COM
١١٩
aﺗﻤﺮﻳﻦ
-6اﮔﺮ در اﺑﺘﺪا ﻣﺤﺘﻮي CXرا ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻗﺮار دﻫﻴﻢ .ﺣﻠﻘﻪ ﺗﻜﺮار ﭼﻨﺪ ﺑﺎر اﺟﺮا ﻣﻲ
ﮔﺮدد؟
;S:=0
FOR I:=1 TO N DO
; S : = S+I
[email protected]
WWW.IRANMEET.COM
١٢٠
-10آﻳﺎ ﻣﻲﺗﻮان ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﻧﻮﺷﺖ ﻛﻪ Nﻣﻘﺪار را ﺑﺮوش ﻣﺮﺗـﺐ ﺳـﺎزي درﺟـﻲ
ﺑﺼﻮرت ﺻﻌﻮدي ﻣﺮﺗﺐ ﻧﻤﺎﻳﺪ؟
-11ﻳﻚ ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﺑﺪﻫﻴﺪ ﻛﻪ آراﻳﻪ Nﻋﻨﺼﺮي Xاز ﻧـﻮع ﺑﺎﻳـﺖ را از ﻧﻈـﺮ ﻣﻜـﺎﻧﻲ
وارون ﻧﻤﺎﻳﺪ.
-12ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﺪﻫﻴﺪ ﻛﻪ آراﻳﻪ Nﻋﻨـﺼﺮي Xاز ﻧـﻮع wordرا در ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ
ﻋﻨﺎﺻﺮ ﻣﺨﺎﻟﻒ ﺻﻔﺮ آﻧﺮا در آراﻳﻪ دﻳﮕﺮي ﺑﻨﺎم Yﻗﺮار دﻫﺪ )در ﺻﻮرت ﻟﺰوم اﻧﺘﻬـﺎي
آراﻳﻪ Yﺧﺎﻟﻲ ﺑﻤﺎﻧﺪ(.
-13ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺪار ﺻﺤﻴﺢ و ﻣﺜﺒﺖ Nرا در ﻧﻈﺮ ﮔﺮﻓﺘـﻪ ﻓﺎﻛﺘﻮرﻳـﻞ
آﻧﺮا ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١٢١
-14ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ آراﻳﻪ Nﻋﻨﺼﺮي Xاز ﻧﻮع wordرا در ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ
ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﻨﺼﺮ آراﻳﻪ را ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ.
-15ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ آراﻳـﻪ Nﻋﻨـﺼﺮي Xاز ﻧـﻮع double wordرا در
ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻛﻮﭼﻜﺘﺮﻳﻦ ﻋﻨﺼﺮ آراﻳﻪ را ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ.
-16ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ آراﻳﻪ Nﻋﻨﺼﺮي Xاز ﻧﻮع wordرا در ﻧﻈـﺮ ﮔﺮﻓﺘـﻪ
اﻧﺪﻳﺲ ﺑﺰرﮔﺘﺮﻳﻦ ﻋﻨﺼﺮ آراﻳﻪ را ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ.
-18ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ آﻳﺎ ﻋﺪد Nاول ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ؟
-19ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ آﻳﺎ ﻋﺪد Nﻛﺎﻣﻞ ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ؟
-20ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛـﻪ ﻣﻘـﺪار Nاز ﻧـﻮع ﺑﺎﻳـﺖ را ﮔﺮﻓﺘـﻪ NXرا ﻣﺤﺎﺳـﺒﻪ
ﻧﻤﺎﻳﺪ.
-21ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ آراﻳﻪ Nﻋﻨﺼﺮي Xاز ﻧﻮع wordرا ﮔﺮﻓﺘﻪ ﻣﻴﺎﻧﻪ آﻧﺮا
ﻣﺸﺨﺺ ﻧﻤﻮد در MIDﻗﺮار دﻫﺪ.
[email protected]
WWW.IRANMEET.COM
١٢٢
ﻓﺼﻞ ﺷﺸﻢ
ﻋﻤﻠﻴﺎت ﺑﻴﺘﻲ
ﻫﺪف ﻛﻠﻲ
آﺷﻨﺎﺋﻲ ﺑﺎ ﻋﻤﻠﻴﺎت روي ﺑﻴﺖﻫﺎ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ.
-1ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ و ﻋﻤﻠﮕﺮﻫﺎي واﺑﺴﺘﻪ
-2ﻋﻤﻠﻴﺎت ﺷﻴﻔﺖ ﺑﻴﺖﻫﺎ
-3ﻋﻤﻠﻴﺎت ﭼﺮﺧﺶ ﺑﻴﺖﻫﺎ
-4ﻋﻤﻠﻴﺎت ﻣﺮﺑﻮط ﺑﻪ ﻓﻠﮓﻫﺎ
-5ﺗﺒﺪﻳﻞ ﺣﺮوف ﻛﻮﭼﻚ ﺑﻪ ﺑﺰرگ و ﺑﺎﻟﻌﻜﺲ.
[email protected]
WWW.IRANMEET.COM
١٢٣
-6-1ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ
از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﻨﻄﻘﻲ ﺑﺮاي اﻧﺠﺎم ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ اﺳﺘﻔﺎده ﻣـﻲﺷـﻮد .اﻳـﻦ
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﺑﺼﻮرت ﺑﻴﺘﻲ روي ﻋﻤﻠﻮﻧﺪﻫﺎ ﻋﻤﻞ ﻣﻲﻧﻤﺎﻳﺪ .ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘـﻲ ﻋﺒﺎرﺗﻨـﺪ
از XOR ،OR ،AND ،NOTو . TEST
-6-1-1دﺳﺘﻮراﻟﻌﻤﻞ NOT
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ NOTﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
NOT opr
ﻣﺜﺎل 6-1
MOV DL , 8AH
NOT DL
[email protected]
WWW.IRANMEET.COM
١٢٤
-6-1-2دﺳﺘﻮراﻟﻌﻤﻞ AND
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ ANDﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
AND dst , src
ﻣﺜﺎل 6-2
MOV AL , 5BH
MOV DH, 4DH
AND AL, DH
AL 01011011
DH 01001101
[email protected]
WWW.IRANMEET.COM
١٢٥
-6-1-3دﺳﺘﻮراﻟﻌﻤﻞOR
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ ORﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
OR dst , src
ﻣﺜﺎل6-3
MOV BL , 0A5H
MOV AL, 2AH
OR AL , BL
[email protected]
WWW.IRANMEET.COM
١٢٦
BL 10100101
AL 00101010
BL 10100101
AL 10101111
-6-1-4دﺳﺘﻮراﻟﻌﻤﻞ XOR
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ XORﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
ﺟﺪول 6-3
[email protected]
WWW.IRANMEET.COM
١٢٧
ﻣﺜﺎل6-4
MOV CL, 2DH
MOV AL , 0C2H
XOR AL , CL
AL 11000010
CL 00111101
دﺳﺘﻮراﻟﻌﻤﻞTEST -6-1-5
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ TESTﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
TEST opr1, opr2
[email protected]
WWW.IRANMEET.COM
١٢٨
ﻣﺜﺎل 6-5
MOV AL , 25
MOV DH , 0E4H
TEST AL , DH
AL 00011001
DH 11100100
AL 00011001
DH 11100100
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ ﻛﺮد ﻛﻪ دﺳﺘﻮراﻟﻌﻤﻞ TESTﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار ZFﺑﺮاﺑـﺮ
ﺑﺎ ﻳﻚ ﮔﺮدد.
ﻣﺜﺎل 6-6
MOV AL , 0ABH
NOT AL
TEST AL, 10100101B
JZ YES
M
YES:
M
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق ﻣﺸﺨﺺ ﻣﻲﻧﻤﺎﻳﺪ ﻛﻪ آﻳﺎ ﻣﻘﺎدﻳﺮ ﺑﻴﺖﻫﺎي 2 ،5 ،7و 0ﺛﺒـﺎت
ALﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ؟ ﻣﻘﺪار 10100101Bﻋﻤﻼً MASKﻣﻲﺑﺎﺷـﺪ ﻛـﻪ
[email protected]
WWW.IRANMEET.COM
١٢٩
در ﺑﻴﺖﻫﺎﺋﻲ ﻛﻪ ﻣﻲﺧﻮاﻫﻴﻢ ﺑﺮاي ﻳﻚ ﺑﻮدن ﺗﺴﺖ ﺷﻮد ﻣﻘﺪار ﻳﻚ و در ﺳﺎﻳﺮ ﺑﻴﺖﻫـﺎ
ﻣﻘﺪار ﺻﻔﺮ را ﻗﺮار ﻣﻲدﻫﻴﻢ.
AL 10101011
AL 01010100
MASK 10100101
ﻣﺜﺎل 6-7
OR DL, 00000101B
XOR DL, 01000010B
AND DL, 11100111B
MOV AL, DL
NOT AL
TEST AL, 10000010B
JZ EXIT
M
EXIT:
M
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق اﺑﺘﺪا ﺑﻴﺖﻫﺎي ﺷﻤﺎره 0و 2ﺛﺒﺎت DLرا ﻳﻚ ﻣﻲﻛﻨﺪ و ﺑﻴـﺖ
ﻫﺎي ﺷﻤﺎره 4و 3را ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﻣﻲﻛﻨﺪ و ﺑﻴﺖﻫﺎي ﺷﻤﺎره 1و 6را ﻣﻜﻤـﻞ ﻣـﻲ-
ﻧﻤﺎﻳﺪ در ﺿﻤﻦ ﭼﻨﺎﻧﭽﻪ ﺑﻴﺖﻫﺎي ﺷﻤﺎره 7و 1ﺑﺮاﺑﺮ ﺑﺎ ﻳـﻚ ﺑﺎﺷـﻨﺪ ﻛﻨﺘـﺮل ﺑـﻪ EXIT
ﻣﻨﺘﻘﻞ ﻣﻲﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١٣٠
ﻣﺜﺎل 6-8
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺑﻴﺖﻫﺎي ﺷﻤﺎره ﻓﺮد ﺛﺒﺎت ALرا ﻣﻜﻤﻞ ﻣﻲﻧﻤﺎﻳﺪ .ﻳﻌﻨﻲ 1ﺑﻪ
0و 0ﺑﻪ 1ﺗﺒﺪﻳﻞ ﻣﻲﻧﻤﺎﻳﺪ.
MOV AL, 0C7H
MOV MASK, 10101010B
XOR AL, MASK
AL 11000111
MASK 10101010
AL 01101101
MASK 10101010
ﻣﺜﺎل 6-9
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺑﻴﺖﻫﺎي ﺷﻤﺎره زوج ﺛﺒﺎت ALرا ﺑﻪ ﻳﻚ ﺗﺒﺪﻳﻞ ﻣﻲﻧﻤﺎﻳﺪ.
AL 10100110
MASK 01010101
[email protected]
WWW.IRANMEET.COM
١٣١
AL 11110111
MASK 01010101
ﻣﺜﺎل 6-10
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺑﻴﺖﻫﺎي ﺷﻤﺎره ﻓﺮد ALرا ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﻣﻲﻧﻤﺎﻳﺪ.
AL 11000111
MASK 01010101
AL 01000101
MASK 01010101
در ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ اﮔﺮ ﺑﻴﺖﻫﺎي ﺷﻤﺎره 1و 14ﻳﺎ ﺑﻴـﺖﻫـﺎي ﺷـﻤﺎره 9و 7
ﺛﺒﺎت AXﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﺑﺎﺷﻨﺪ ﻛﻨﺘﺮل ﺑﻪ TASK 1و اﮔﺮ ﺑﻴﺖ 3ﻳـﺎ 4ﺑﺮاﺑـﺮ ﺑـﺎ ﻳـﻚ
ﺑﺎﺷﻨﺪ ﻛﻨﺘﺮل ﺑﻪ TASK2در ﻏﻴﺮ اﻳﻨﺼﻮرت ﻛﻨﺘﺮل ﺑﻪ TASK3ﻣﻨﺘﻘﻞ ﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
١٣٢
NOT AX
TEST AX, 4002H
JZ TASK1
TEST AX, 280H
JZ TASK1
NOT AX
TEST AX, 18H
JNZ TASK2
TASK3:
M
TASK1:
M
TASK2:
M
-6-2ﻋﻤﻠﻴﺎت ﺷﻴﻔﺖ
ﻋﻤﻠﻴﺎت ﺷﻴﻔﺖ ﺑﺎﻋﺚ ﺗﻐﻴﻴﺮ ﻣﻜﺎن ﺑﻴﺖﻫﺎي ﻳﻚ ﺑﺎﻳﺖ ﻳﺎ ﻳـﻚ wordﺑﻄـﺮف
ﭼﭗ ﻳﺎ راﺳﺖ ﻣﻲﺷﻮد .دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﺘﻌﺪدي ﺑﺮاي اﻳﻦ ﻛـﺎر ﻣـﻮرد اﺳـﺘﻔﺎده ﻗـﺮار
ﻣﻲﮔﻴﺮﻧﺪ ﻛﻪ ﻋﺒﺎرﺗﻨﺪ از:
-6-2-1دﺳﺘﻮراﻟﻌﻤﻞSHL
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ SHLﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
اﻟﻒ( cntﺗﻌﺪاد ﺑﻴﺖﻫﺎﺋﻲ ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺑﻄﺮف ﭼﭗ ﺷﻴﻔﺖ داده ﻣﻲﺷﻮد .در ﺻﻮرﺗﻴﻜﻪ
cntﻣﺨﺎﻟﻒ ﻳﻚ ﺑﺎﺷﺪ از ﺛﺒﺎت CLاﺳﺘﻔﺎده ﻣﻲﻧﻤﺎﺋﻴﻢ.
[email protected]
WWW.IRANMEET.COM
١٣٣
0
CF opr
ﻣﺜﺎل 6-11
SHL AX, CL
SHL BL, CL
SHL AL, 1
STC 1
MOV CL, 3
MOV DL, 8DH
SHL DL , CL
DL 10001101
[email protected]
WWW.IRANMEET.COM
١٣٤
CL 00000011
DL 01101000
CF 0
-6-2-2دﺳﺘﻮراﻟﻌﻤﻞSHR
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ SHRﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
0
opr CF
ﻣﺜﺎل 6-12
SHR DL, 1
SHR AL, CL
[email protected]
WWW.IRANMEET.COM
١٣٥
ﻣﺜﺎل 6-13
STC 1
MOV CL , 3
MOV DL, 8DH
SHR DL, CL
CL 00000011
DL 10001101
CF 1
CL 00000011
DL 00010001
CF 1
-6-2-3دﺳﺘﻮراﻟﻌﻤﻞ SAL
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ SALﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
١٣٦
0
CF opr
ﻣﺜﺎل 6-14
SAL DL, 1
SAL AL, CL
SAL [BX] , CL
SAL ARR [SI], CL
ﻣﺜﺎل 6-15
STC
MOV CL , 3
MOV DL, 8DH
SAL DL, CL
CL 00000011
DL 10001101
CF 1
CL 00000011
DL 01101000
CF 0
[email protected]
WWW.IRANMEET.COM
١٣٧
دﺳﺘﻮراﻟﻌﻤﻞSAR -6-2-4
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ SARﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
SAR opr , cnt
opr CF
ﻣﺜﺎل 6-16
SAR DL, 1
SAR AX , CL
SAR [BX], CL
ﻣﺜﺎل 6-17
MOV CL,3
STC
MOV DL, 8DH
SAR DL, CL
[email protected]
WWW.IRANMEET.COM
١٣٨
CL 00000011
DL 10001101
CF 1
CL 00000011
DL 11110001
CF 1
دﺳﺘﻮراﻟﻌﻤﻞROL -6-3-1
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ ROLﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
١٣٩
CF
opr
ﻣﺜﺎل 6-18
ROL DL, CL
ROL BX , 1
ROL [BX] , CL
ﻣﺜﺎل 6-19
MOV CL,3
MOV DL, 8DH
STC 1
ROL DL, CL
CL 00000011
DL 10001101
CF 1
[email protected]
WWW.IRANMEET.COM
١٤٠
CL 00000011
DL 01101100
CF 0
-6-3-2دﺳﺘﻮراﻟﻌﻤﻞROR
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ RORﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
CF
opr
[email protected]
WWW.IRANMEET.COM
١٤١
6-20 ﻣﺜﺎل
ROR DL, 1
ROR BX, CL
ROR AL, CL
ROR X[DI],CL
6-21 ﻣﺜﺎل
MOV CL, 3
STC
MOV DL, 8DH
ROR DL, CL
CL 00000011
DL 10001101
CF 1
CL 00000011
DL 10110001
CF 1
RCL دﺳﺘﻮراﻟﻌﻤﻞ-6-3-3
. ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪRCL ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ
[email protected]
WWW.IRANMEET.COM
١٤٢
اﻟﻒ( ﭼﻨﺎﻧﭽﻪ ﻣﻘﺪار cntﻳـﻚ ﺑﺎﺷـﺪ ﻣﻘـﺪار 1ﻧﻮﺷـﺘﻪ ﻣـﻲﺷـﻮد در ﻏﻴـﺮ اﻳﻨـﺼﻮرت
از ﺛﺒﺎت CLاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ب( oprﺑﺎﻳﺴﺘﻲ از ﻧﻮع ﺑﺎﻳﺖ ﻳﺎ wordﺑﺎﺷﺪ.
ج( oprﺑﺎﻳﺴﺘﻲ ﻣﺘﻐﻴﺮ ﻳﺎ ﺛﺒﺎت ﺑﺎﺷﺪ opr .ﻣﻘﺪار ﺛﺎﺑﺖ ﻧﻤﻲﺗﻮاﻧﺪ ﺑﺎﺷﺪ.
د( روي ﻓﻠﮓ CFاﺛﺮ دارد.
ﻫـ ( دﺳﺘﻮراﻟﻌﻤﻞ RCLﺑﺎﻧﺪازه cntﺑﻴﺖ از ﺑﻴـﺖﻫـﺎي oprرا از ﻃـﺮف ﭼـﭗ و از
ﻃﺮﻳﻖ ﺑﻴﺖ CFﭼﺮﺧﺶ ﻣﻲدﻫﺪ.
CF opr
ﻣﺜﺎل 6-22
RCL DL, 1
RCL BX, CL
RCL AL, CL
RCL BL, 1
RCL [BX],CL
ﻣﺜﺎل 6-23
MOV CL, 3
MOV DL, 8DH
STC
RCL DL, CL
ﻣﻘﺎدﻳﺮ ﻗﺒﻞ از اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞ RCL
DL 10001101
CL 00000011
CF 1
[email protected]
WWW.IRANMEET.COM
١٤٣
CL 00000011
DL 01101110
CF 0
-6-3-4دﺳﺘﻮراﻟﻌﻤﻞRCR
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ RCRﺑﺼﻮرت ذﻳﻞ ﻣﻲﺑﺎﺷﺪ:
opr CF
[email protected]
WWW.IRANMEET.COM
١٤٤
6-24 ﻣﺜﺎل
RCR DL, 1
RCR [BX], CL
RCR AL, CL
RCR X[BX][DI],CL
RCR [BX], 1
6-25 ﻣﺜﺎل
MOV CL, 3
MOV DL, 8DH
STC
RCR DL, CL
CL 00000011
DL 10001101
CF 1
CL 00000011
DL 01110001
CF 1
[email protected]
WWW.IRANMEET.COM
١٤٥
-6-4ﻋﻤﻠﻴﺎت ﻓﻠﮓﻫﺎ
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﺮﺑﻮط ﺑﻪ ﻋﻤﻠﻴﺎت روي ﻓﻠﮕﻬﺎ در ذﻳـﻞ داده ﺷـﺪه اﻧـﺪ .اﻳـﻦ
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻋﺒﺎرﺗﻨﺪ از:
ﺟﺪول 6-4
Clear Carry CLC CFﺻﻔﺮ ﻣﻲﺷﻮد
Complement Carry CMC CFﻣﻜﻤﻞ ﻣﻲﺷﻮد
Set Carry STC CFﻳﻚ ﻣﻲﺷﻮد
Clear Direction CLD DFﺻﻔﺮ ﻣﻲﺷﻮد
Set Direction STD DFﻳﻚ ﻣﻲﺷﻮد
Clear Interrupt CLI IFﺻﻔﺮ ﻣﻲﺷﻮد
Set Interrupt STI IFﻳﻚ ﻣﻲﺷﻮد
LAHF
[email protected]
WWW.IRANMEET.COM
١٤٦
⎯
→⎯
Flag register AH
SAHF
ﻣﻲﻛﻨﺪ.
-6-5ﺗﺒﺪﻳﻞ ﺣﺮوف
ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﻣﻴﺪاﻧﻴﺪ ﺑﻪ ﻫﺮ ﻛﺎرﻛﺘﺮ ﻳﻚ ﻛﺪ اﺳﻜﻲ ﺑـﻴﻦ 0ﺗـﺎ 255ﺗﺨـﺼﻴﺺ
ﻣﻲﻳﺎﺑﺪ .ﻛﺪاﺳﻜﻲ ﺑﺮاي ﺣﺮوف ﺑﺰرگ Aﺗﺎ Zﺑﺘﺮﺗﻴـﺐ از 65ﺗـﺎ 90ﻳـﺎ از 41Hﺗـﺎ
5AHﻣﻲﺑﺎﺷﺪ .ﺣﺮوف ﻛﻮﭼﻚ ﻧﻴﺰ داراي ﻛﺪ اﺳـﻜﻲ ﺑـﻴﻦ 97ﺗـﺎ 122ﻳـﺎ 61Hﺗـﺎ
7AHﻣﻲﺑﺎﺷﻨﺪ.
A 65 01000001
A 97 01100001
Z 90 01011010
Z 122 01111010
[email protected]
WWW.IRANMEET.COM
١٤٧
ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﻣﻼﺣﻈﻪ ﻣﻲﻛﻨﻴﺪ ﺗﻔﺎوت ﻧﻤﺎﻳﺶ ﺑـﻴﻦ Aو aﻳـﺎ Zو zدر ﺑﻴـﺖ
ﺷﻤﺎره 5آﻧﻬﺎ ﻣﻲﺑﺎﺷﺪ .ﺑﻨﺎﺑﺮاﻳﻦ ﻧﺘﻴﺠﻪ ﻣﻲﮔﻴﺮﻳﻢ ﺑﺮاي ﺗﺒﺪﻳﻞ ﺣﺮوف ﻛﻮﭼﻚ ﺑﻪ ﺑﺰرگ
ﻛﺎﻓﻲ اﺳﺖ ﻛﻪ ﺑﺼﻮرت زﻳﺮ ﻋﻤﻞ ﻧﻤﺎﺋﻴﻢ.
,ﺣﺮف ﻛﻮﭼﻚ AND 00100000B
و ﺑﺮاي ﺗﺒﺪﻳﻞ ﺣﺮوف ﺑﺰرگ ﺑﻪ ﺣﺮوف ﻛﻮﭼﻚ ﻛﺎﻓﻲ اﺳﺖ ﻛﻪ ﺑﺼﻮرت زﻳـﺮ
ﻋﻤﻞ ﺷﻮد
OR ,ﺣﺮف ﺑﺰرگ 00100000B
ﻣﺜﺎل 6-26
در رﺷﺘﺔ STRﺣﺮوف ﻛﻮﭼﻚ را ﺑﻪ ﺑﺰرگ ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ .ﺑﺎﻳﺴﺘﻲ ﻛﻨﺘﺮل ﺷﻮد
ﻛﻪ ﻛﺎرﻛﺘﺮ از ﻧﻮع ﺣﺮوف ﻛﻮﭼﻚ ﻣﻲﺑﺎﺷﺪ ﺳﭙﺲ ﺑـﻪ ﺣـﺮوف ﺑـﺰرگ ﻣﺘﻨـﺎﻇﺮ ﺗﺒـﺪﻳﻞ
ﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
١٤٨
در اﻳﻦ ﻓﺼﻞ ﻋﻤﻠﻴﺎت ﺑﻴﺘﻲ ﻣﻮرد ﺑﺤﺚ ﻗﺮار ﮔﺮﻓﺖ .اﺑﺘﺪا ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ ﻣﺎﻧﻨﺪ
TEST ، XOR ، NOT ،OR ،ANDﺑﺤﺚ ﮔﺮدﻳﺪ .اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ روي ﺑﻴﺖﻫﺎ
ﻋﻤــﻞ ﻣــﻲﻧﻤﺎﻳﻨــﺪ و ﻫﻤﺎﻧﻄﻮرﻳﻜــﻪ ﮔﻔﺘــﻪ ﺷــﺪ ﺑ ـﻪ ﺟــﺰء دﺳــﺘﻮراﻟﻌﻤﻞ NOTﺳــﺎﻳﺮ
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ داراي دو ﻋﻤﻠﻮﻧﺪ ﻣﻲﺑﺎﺷﻨﺪ TEST .ﺷﺒﻴﻪ ANDﻣﻲﺑﺎﺷﺪ وﻟـﻲ ﻧﺘﻴﺠـﻪ
در ﺟﺎﺋﻲ ذﺧﻴﺮه ﻧﻤﻲﮔـﺮدد .ﻋﻤﻠﻴـﺎت ﺑﻌـﺪي دﺳـﺘﻮراﻟﻌﻤﻞﻫـﺎي ﺷـﻴﻔﺖ و ﭼـﺮﺧﺶ
ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻧﻴـﺰ روي ﺑﻴـﺖﻫـﺎ ﻋﻤـﻞ ﻣـﻲﻛﻨﻨـﺪ و ﭼﻨﺎﻧﭽـﻪ ﺗﻌـﺪاد
ﺑﻴﺖﻫﺎي ﻣﻮرد ﻋﻤﻞ ﺑﻴﺶ از ﻳﻚ ﺑﺎﺷﺪ ﺑﺎﻳﺴﺘﻲ ﺗﻌﺪاد ﺑﻴـﺖﻫـﺎ را در ﺛﺒـﺎت CLﻗـﺮار
دﻫــــﻴﻢ .دﺳــــﺘﻮراﻟﻌﻤﻠﻬﺎي ﺷــــﻴﻔﺖ ﻋﺒﺎرﺗﻨــــﺪ از SAR ،SAL ،SHR ،SHLو
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﭼﺮﺧﺶ ﻋﺒﺎرﺗﻨﺪ از .RCR ،RCL ،ROR ،ROLدر اﻧﺘﻬـﺎي ﻓـﺼﻞ
ﻋﻤﻠﻴﺎت ﻣﺮﺑﻮط ﺑﻪ ﺗﻐﻴﻴﺮ ﻓﻠﮓﻫﺎ ﻣﻮرد ﺑﺤﺚ ﻗﺮار ﮔﺮﻓﺘـﻪ و در ﻧﻬﺎﻳـﺖ ﺑـﺎ اﺳـﺘﻔﺎده از
ﭼﻨﺪﻳﻦ ﻣﺜﺎل ﻛﺎرﺑﺮد ﻣﻄﺎﻟﺐ ﻓﻮق ﻧﺸﺎن داده ﺷﺪه اﺳﺖ ﻛـﻪ از ﺟﻤﻠـﻪ ﺗﺒـﺪﻳﻞ ﺣـﺮوف
ﻛﻮﭼﻚ در ﻳﻚ ﻣﺘﻦ ﺑﻪ ﺣﺮوف ﺑﺰرگ ﻣﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
١٤٩
aﺗﻤﺮﻳﻦ
[email protected]
WWW.IRANMEET.COM
١٥٠
-6ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﻴﺖﻫﺎي ﺷﻤﺎره ﻓﺮد ﺛﺒﺎت AXرا ﺑﻪ ﻳـﻚ و ﺑﻴـﺖﻫـﺎي زوج
ﺛﺒﺎت AXرا ﺑﻪ ﺻﻔﺮ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﺪ.
-8ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ آﻳﺎ ﺑﻴﺖﻫﺎي ﺷﻤﺎره زوج ﺛﺒﺎت AXﺑﺮاﺑﺮ ﺑـﺎ
ﻳﻚ ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ؟
-9ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺑﻴﺖﻫﺎي ﺛﺒﺎت AXرا آﻧﻘﺪر ﺑﻄﺮف ﭼـﭗ ﺷـﻴﻔﺖ دﻫـﺪ ﺗـﺎ
MSBآن ﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﮔﺮدد .در ﺻﻮرﺗﻴﻜﻪ در اﺑﺘﺪا MSBﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﻣﻲﺑﺎﺷﺪ ﻛﻨﺘﺮل
ﺑﻪ EXITﻣﻨﺘﻘﻞ ﮔﺮدد.
-12ﺑﻪ ﭼﻨﺪ ﻃﺮﻳﻖ ﻣﻲﺗﻮان ﻣﻘﺪار ﺛﺒﺎت AXرا ﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﻗﺮار داد؟
-13ﺑﺮﻧﺎﻣﻪاي ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺪار ﺑﻴﺖ ﺷﻤﺎره nام ﺛﺒﺎت AXرا ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١٥١
ﻓﺼﻞ ﻫﻔﺘﻢ
ﻣﺎﻛﺮوﻫﺎ و روالﻫﺎ و وﻗﻔﻪﻫﺎ
ﻫﺪف ﻛﻠﻲ
ﻣﻌﺮﻓﻲ ﭘﺸﺘﻪ ،ﻣﻜﺮو ،روال ،وﻗﻔﻪﻫﺎ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ.
-1ﺗﻌﺮﻳﻒ ﭘﺸﺘﻪ ،ﻛﺎرﺑﺮد و دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﺮﺑﻮﻃﻪ.
-2ﺗﻌﺮﻳﻒ روال ،ﻛﺎرﺑﺮد ،ﻧﺤﻮه اﻳﺠﺎد و ﻓﺮاﺧﻮاﻧﻲ آﻧﻬﺎ.
-3ﺗﻌﺮﻳﻒ ﻣﺎﻛﺮو ،ﻧﺤﻮه اﻳﺠﺎد ،ﻛﺎرﺑﺮد و ﻓﺮاﺧﻮاﻧﻲ آﻧﻬﺎ.
-4ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﻛﺮو.
-5وﻗﻔﻪﻫﺎ و دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﺮﺑﻮﻃﻪ.
-6رواﻟﻬﺎي ﺗﺒﺪﻳﻞ ﺑﺎﻳﻨﺮي ﺑﻪ اﺳﻜﻲ و ﺑﺎﻟﻌﻜﺲ.
-7اﻧﺪازهﮔﻴﺮي زﻣﺎن اﺟﺮاي ﺑﺮﻧﺎﻣﻪﻫﺎ.
[email protected]
WWW.IRANMEET.COM
١٥٢
-8اﻳﺠﺎد ﺗﺄﺧﻴﺮ.
-7-1ﭘﺸﺘﻪ ) ( Stack
ﭘﺸﺘﻪ ﻗﺴﻤﺘﻲ از ﺣﺎﻓﻈﻪ اﺻﻠﻲ ﻳﺎ RAMﻣﻲﺑﺎﺷﺪ .ﭘﺸﺘﻪ ﺧﺎﺻﻴﺖ LIFOدارد
ﻳﻌﻨﻲ ﻋﻨﺼﺮي ﻛﻪ آﺧﺮ وارد ﭘﺸﺘﻪ ﻣﻲﺷﻮد اوﻟﻴﻦ ﻋﻨـﺼﺮي اﺳـﺖ ﻛـﻪ از ﭘـﺸﺘﻪ ﺧـﺎرج
ﻣﻲﺷﻮد .ﻣﻘﺎدﻳﺮي ﻛﻪ ﭘﺸﺘﻪ در ﺧﻮد ذﺧﻴﺮه ﻣﻲﻧﻤﺎﻳﺪ از ﻧﻮع wordﻣﻲﺑﺎﺷﺪ .ﺛﺒﺎت SP
ﺑﻪ ﻋﻨﺼﺮ topﭘﺸﺘﻪ اﺷﺎره ﻣﻲﻧﻤﺎﻳﺪ.
STACK
SS:01F6
SS:01F8
SS:01FA
SS:01FC
SS:01FE
SP
-7-1-1دﺳﺘﻮراﻟﻌﻤﻞ PUSH
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ PUSHﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
PUSH opr
[email protected]
WWW.IRANMEET.COM
١٥٣
ﻣﺜﺎل 7-1
PUSH AX
SS:01F6
SS:01F8
SS:01FA
SP )(AX SS:01FC
SS:01FE
-7-1-2دﺳﺘﻮراﻟﻌﻤﻞ POP
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ POPﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
POP dst
[email protected]
WWW.IRANMEET.COM
١٥٤
ﻣﺜﺎل 7-2
POP AX
SS:01F6
SS:01F8
SS:01FA
)(AX SS:01FC
SS:01FE
SP
ﻣﺜﺎل 7-3
PUSH AX
PUSH BX
PUSH ES
PUSH DI
M
POP DI
POP ES
POP BX
POP AX
-7-1-3دﺳﺘﻮراﻟﻌﻤﻞPUSHF
[email protected]
WWW.IRANMEET.COM
١٥٥
PUSHF
ﻣﺜﺎل 7-4
PUSHF
-7-1-4دﺳﺘﻮراﻟﻌﻤﻞPOPF
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ POPFﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
POPF
اﻟﻒ( اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻓﺎﻗﺪ ﻋﻤﻠﻮﻧﺪ ﻣﻲﺑﺎﺷﺪ.
ب( اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻘﺪاري ﻛﻪ در ﭘﺸﺘﻪ ﺑﻮﺳﻴﻠﻪ ﺛﺒﺎت SPاﺷﺎره ﻣﻲﺷﻮد را ﺑﻪ ﺛﺒﺎت
ﻓﻠﮓ ﻣﻨﺘﻘﻞ ﻧﻤﻮده و ﻣﺤﺘﻮي ﺛﺒﺎت SPرا دو واﺣﺪ اﻓﺰاﻳﺶ ﻣﻲدﻫﺪ.
ج( روي ﻛﻠﻴﻪ ﻓﻠﮓﻫﺎ اﺛﺮ دارد.
ﻣﺜﺎل 7-5
POPF
-7-2روال )(Procedures
[email protected]
WWW.IRANMEET.COM
١٥٦
ﺑﺮاي راﺣﺘﻲ ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ ،ﺑﺮﻧﺎﻣﻪﻫﺎ را ﻣﻲﺗﻮان ﺑﻪ ﺗﻌﺪادي روال ﺗﻘﺴﻴﻢ ﻧﻤﻮد
و ﻧﻮﺷﺘﻦ ﻫﺮ روال را ﺑﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ واﮔﺬار ﻛﺮد .ﺷﻜﻞ ﻛﻠـﻲ روالﻫـﺎ ﺑـﺼﻮرت
زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
name PROC NEAR
M
1 RET 1
name ENDP
ﻣﺜﺎل 7-6
[email protected]
WWW.IRANMEET.COM
١٥٧
روال ﻓﻮق ﺑﺮاي ذﺧﻴﺮه ﻛﺮدن ﻣﻘﺎدﻳﺮ ﺛﺒﺎﺗﻬﺎي ﻣﺸﺨﺺ ﺷﺪه اﺳﺘﻔﺎده ﻣـﻲﺷـﻮد.
ﺑﻤﻨﻈﻮر ﻓﺮاﺧﻮاﻧﻲ ﻳﻚ روال از دﺳﺘﻮر CALLاﺳﺘﻔﺎده ﻣﻲﮔﺮدد .ﺷﻜﻞ ﻛﻠـﻲ دﺳـﺘﻮر
CALLﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
CALL Name
ﻣﺜﺎل 7-7
CALL SAVEREG
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ زﺑﺎن اﺳﻤﺒﻠﻲ ﺑﺮﻧﺎﻣـﻪ اﺻـﻠﻲ را ﺑﻌﻨـﻮان ﻳـﻚ روال ﺑـﺎ
ﻣﺸﺨﺼﻪ FARدر ﻧﻈﺮ ﻣﻲﮔﻴﺮد ﻛﻪ ﺑﻪ ﻣﺤﺾ رﺳﻴﺪن ﺑﻪ RETﺑﺮﻧﺎﻣﻪ اﺻـﻠﻲ ،ﻛﻨﺘـﺮل
ﺑﻪ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺮ ﻣﻴﮕﺮدد.
[email protected]
WWW.IRANMEET.COM
١٥٨
-7-3ﻣﺎﻛﺮوﻫﺎ )(Macros
ﻣﺎﻛﺮوﻫﺎ ﻋﻤﻼً ﻗﺴﻤﺖﻫﺎﺋﻲ از ﺑﺮﻧﺎﻣﻪ ﻣﺒﺪاء ) (source programﻣﻲﺑﺎﺷﻨﺪ ﻛـﻪ
ﺑﺎ اﺳﺘﻔﺎده از ﻧﺎم آﻧﻬﺎ ﻣﻲﺗﻮان در ﻫﺮ ﺟﺎي ﺑﺮﻧﺎﻣﻪ ﻣﺒﺪاء درج ﻧﻤﻮد .در ﺣﻘﻴﻘﺖ ﻣﺎﻛﺮوﻫﺎ
دﻧﺒﺎﻟﻪاي از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي اﺳﻤﺒﻠﻲ ﻣﻲﺑﺎﺷﻨﺪ ﻛﻪ ﻣﻤﻜﻦ اﺳﺖ ﭼﻨـﺪﻳﻦ ﺑـﺎر در ﺑﺮﻧﺎﻣـﻪ
ﻇﺎﻫﺮ ﺷﻮﻧﺪ .ﺑﻪ ﺟﺎي ﭼﻨﺪﻳﻦ ﺑﺎر ﺗﺎﻳﭗ ﻧﻤﻮدن اﻳﻦ دﻧﺒﺎﻟﻪ از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ ﻣﻲﺗﻮان ﻓﻘﻂ
ﻧﺎم آﻧﻬﺎ را در ﺑﺮﻧﺎﻣﻪ درج ﻧﻤﻮد .ﺷﻜﻞ ﻛﻠﻲ ﻣﺎﻛﺮوﻫﺎ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
name MACRO
M
ENDM
[email protected]
WWW.IRANMEET.COM
١٥٩
ه( ﺗﻔﺎوت ﺑﻴﻦ روال و ﻣﺎﻛﺮو در اﻳﻦ اﺳﺖ ﻛﻪ ﻣﺎﻛﺮو در ﺑﺮﻧﺎﻣﻪ در زﻣﺎن اﺟﺮاي ﺑﺮﻧﺎﻣـﻪ
وﺟﻮد ﺧﺎرﺟﻲ ﻧﺪارد ﺑﻠﻜﻪ روال در زﻣﺎن اﺟـﺮاي ﺑﺮﻧﺎﻣـﻪ وﺟـﻮد داﺷـﺘﻪ و ﻓﺮاﺧـﻮاﻧﻲ
ﻣﻲﮔﺮدد.
ز( macroﻫﺎ ﺑﺎﻳﺴﺘﻲ در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺗﻌﺮﻳﻒ ﺷﻮﻧﺪ.
ﻣﺜﺎل 7-8
TOT MACRO
MOV AX,X
ADD AX,Y
ENDM
اﺑﺘﺪا اﻳﻦ ﺑﺮﻧﺎﻣﻪ ﻗﺒﻞ از اﺟﺮا ﻳﻌﻨﻲ دز زﻣﺎن ﺗﺮﺟﻤﻪ ﺑﺼﻮرت زﻳﺮ در ﻣﻲآﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١٦٠
X ? DW
Y DW ?
S DW ?
MOV X, 1000
MOV Y, 3000
ﺟﺎﻳﮕﺰﻳﻦ ; macro
MOV AX, X
ADD AX, Y
MOV S, AX
SUB X, 10
ﺟﺎﻳﮕﺰﻳﻦ ; macro
MOV AX, X
ADD AX, Y
; 1
ADD S, AX
M
ﻣﺜﺎل 7-9
ADD_W MACRO T1, T2, SUM
1 MOV AX , T1
1 ADD AX, T2
11 MOV SUM, AX
1 ENDM
ﻣﺎﻛﺮو داده ﺷﺪه داراي ﺳﻪ ﭘﺎراﻣﺘﺮ ﺑﻨﺎﻣﻬﺎي T1, T2, SUMﻣﻲﺑﺎﺷﺪ .در ﻣﻮﻗﻊ
اﺳﺘﻔﺎده از اﻳﻦ ﻣﺎﻛﺮو ﺑﺎﻳﺴﺘﻲ ﺳﻪ ﻣﻘﺪار را ﺑﻌﻨﻮان ﺟـﺎﻳﮕﺰﻳﻨﻲ اﻳـﻦ ﭘﺎراﻣﺘﺮﻫـﺎ ﺑـﺪﻫﻴﻢ.
اﮔﺮ ﺑﻨﻮﻳﺴﻴﻢ
ADD_W PRICE, TAX, COST
[email protected]
WWW.IRANMEET.COM
١٦١
ﻣﺜﺎل7-10
ﻣﺎﻛﺮو EXCHGداده ﺷـﺪه در ذﻳـﻞ دو ﻣﻘـﺪار از ﻧـﻮع wordرا ﺟﺎﺑـﻪﺟـﺎ
ﻣﻲﻧﻤﺎﻳﺪ .ﻻزم ﺑﻪ ﺗﻮﺿﻴﺢ اﺳﺖ ﻛﻪ ﺑﻪ ﻣﻨﻈﻮر ﺟﻠﻮﮔﻴﺮي از ﭘﺎك ﺷﺪن ﻣﻘﺪار ﻗﺒﻠﻲ ﺛﺒﺎت
AXاز دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي PUSHو POPاﺳﺘﻔﺎده ﮔﺮدﻳﺪه اﺳﺖ.
EXCHG X,Y
[email protected]
WWW.IRANMEET.COM
١٦٢
PUSH AX
MOV AX, X
XCHG AX, Y
MOV X, AX
PUSH AX
[email protected]
WWW.IRANMEET.COM
١٦٣
7-11 ﻣﺜﺎل
ADD_B MACRO N1, N2, N3, N4
MOV AL, N1
IFB <N2>
ADD AL, 20
ELSE 1
[email protected]
WWW.IRANMEET.COM
١٦٤
ADD AL, N2
ENDIF 1
IFB < N3 >
ADD AL , 30
ELSE 1
ADD AL, N3
ENDIF
IFB < N4 >
ADD AL ,5
ELSE 1
ADD AL, N4
ENDIF
ENDM
[email protected]
WWW.IRANMEET.COM
١٦٥
7-12 ﻣﺜﺎل
ADD_B MACRO X1, X2, X3, X4
PUSH AX
MOV AX, X1
IFNB < X2 >
ADD AX, X2
ENDIF 1
IFNB < X3 >
ADD AX, X3
ENDIF
IFNB < X4 >
ADD AX , X4
ENDIF
ENDM
[email protected]
WWW.IRANMEET.COM
١٦٦
PUSH AX
MOV AX, N1
ADD AX, N3
ADD AX, N4
-7-3-2دﺳﺘﻮراﻟﻌﻤﻞ EXITM
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮر اﻟﻌﻤﻞ EXITMﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ:
EXITM
ﻣﺜﺎل 7-13
IFB > < NUM1
EXITM 1
ENDIF
[email protected]
WWW.IRANMEET.COM
١٦٧
-7-3-3دﺳﺘﻮراﻟﻌﻤﻞ IRP
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ IRPﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
ﻣﺜﺎل 7-14
اﻳﺠﺎد ﻳﻚ آراﻳﻪ 9ﻋﻨﺼﺮي از ﻧـﻮع wordﺑـﺎ ﻣﻘـﺎدﻳﺮ ﻣﻜﻌـﺐ ﻧـﻪ ﻋـﺪد اول
ﻣﻲﻧﻤﺎﻳﺪ .ﻳﻌﻨﻲ ﺑﺎ ﻣﻘﺎدﻳﺮ . 1, 8, 27, 125, 1331, …, 12167
1
8
27
125
1331
2197
4913
6859
12167
[email protected]
WWW.IRANMEET.COM
١٦٨
DW 1*1*1
DW 2*2*2
DW 3*3*3
DW 5*5*5
DW 11 * 11 * 11
DW 13 * 13 * 13
DW 17 * 17 * 17
DW 19 * 19 * 19
DW 23 * 23 * 23
-7-3-4دﺳﺘﻮراﻟﻌﻤﻞ IRPC
ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ IRPCﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
اﻳﺠﺎد ﻳﻚ رﺷﺘﻪ دهﺑﺎﻳﺘﻲ ﻣﻲﻧﻤﺎﻳﺪ ﺑﺎ ﻣﻘﺎدﻳﺮ ﻛﺪ اﺳﻜﻲ ﺑﺮاي ارﻗﺎم 0ﺗﺎ .9
[email protected]
WWW.IRANMEET.COM
١٦٩
48
49
50
51
52
53
54
55
56
57
REPT دﺳﺘﻮراﻟﻌﻤﻞ-7-3-5
. ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪREPT ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ
REPT expression
M
ENDM
[email protected]
WWW.IRANMEET.COM
١٧٠
ﻣﺜﺎل 7-16
ALLOCATE MACRO TLABEL , LNGTH
TLABEL EQU THIS BYTE
VALU =0
REPT LNGTH VALUE = VALUE + 1
DB VALUE
ENDM
ENDM
از دﻳﺮﻛﺘﻴﻮ EQUﺑﺮاي ﺗﺨﺼﻴﺺ ﺳﺎده اﺳﺎﻣﻲ ﺑـﻪ اﻋـﺪاد ،آدرﺳـﻬﺎي ﺗﺮﻛﻴﺒـﻲ
ﭘﻴﭽﻴﺪه و … اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ﻣﺜﺎل 7-17
K EQU 1024
[email protected]
WWW.IRANMEET.COM
١٧١
ﻣﺜﺎل 7-18
SPEED EQU RATE
ﻣﺜﺎل 7-19
TABLE ]EQU DS:[BP] [SI
در ﺑﺮﻧﺎﻣــﻪ ﻫــﺮ ﺟــﺎ از ﻧــﺎم TABLEاﺳــﺘﻔﺎده ﮔﺮدﻳــﺪه ﺑﺎﺷــﺪ ﺑــﻪ ﺟــﺎي آن
] DS:[BP][SIﺟﺎﻳﮕﺰﻳﻦ ﻣﻲﮔﺮدد.
ﻣﺜﺎل 7-20
COUNT EQU CX
ﻫﺮ ﺟﺎ از ﻧﺎم COUNTدر ﺑﺮﻧﺎﻣﻪ اﺳﺘﻔﺎده ﺷﺪه ﺑﺎﺷﺪ ﺑﻪ ﺟـﺎي آن ﺛﺒـﺎت CX
ﻗﺮار ﻣﻲدﻫﺪ.
ﻣﺜﺎل 7-21
DBL_SPEED EQU 2*SPEED
[email protected]
WWW.IRANMEET.COM
١٧٢
ﻣﺜﺎل 7-22
MINS_DAY EQU 60*24
در ﺑﺮﻧﺎﻣﻪ ﻫﺮ ﺟـﺎ از ﻧـﺎم MINS_DAYاﺳـﺘﻔﺎده ﺷـﺪه ﺑﺎﺷـﺪ ﺑـﻪ ﺟـﺎي آن
60 * 24ﻗﺮار ﻣﻲﮔﻴﺮد.
دﻳﺮﻛﺘﻴﻮ= ﻣﺎﻧﻨﺪ EQUﻣﻲﺑﺎﺷﺪ ﺑﺎ اﻳﻦ ﺗﻔﺎوت ﻛﻪ ﻣﻲﺗﻮان آﻧﺮا ﻣﺠـﺪداً ﺗﻌﺮﻳـﻒ
ﻧﻤﻮد ﻳﺎ ﺑﻪ ﻣﻘﺪار ﻗﺒﻠﻲ آن ارﺟﺎع ﻧﻤﻮد.
ﻣﺜﺎل 7-23
CONST=56 ﻣﻌﺎدل EQUﻣﻲﺑﺎﺷﺪ ;
CONST=75 ﻣﻘﺪار آﻧﺮا ﻣﺠﺪداً ﺗﻌﺮﻳﻒ ﻣﻲﻧﻤﺎﻳﺪ ;
CONST=CONST ﺑﻪ ﻣﻘﺪار ﻗﺒﻠﻲ ﻣﺮاﺟﻌﻪ ﻣﻲﻧﻤﺎﻳﺪ ;
+1
-7-3-6دﻳﺮﻛﺘﻴﻮ LOCAL
ﺷﻜﻞ ﻛﻠﻲ دﻳﺮﻛﺘﻴﻮ LOCALﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
LOCAL dummy-list
اﻳﻦ دﻳﺮﻛﺘﻴﻮ ﺑﺎﻋﺚ ﻣﻲ ﺷﻮد ﻛـﻪ اﺳـﻤﺒﻠﺮ ﺑـﺮاي ﻫـﺮ ﻋﻨـﺼﺮ در dummy-list
اﻳﺠﺎد ﻳﻚ ﺳﻴﻤﺒﻞ ﻣﻨﺤﺼﺮ ﺑﻔﺮد ﺑﻨﻤﺎﻳﺪ.
در ﺣﻘﻴﻘﺖ در ﻣﺎﻛﺮوﻫﺎ وﻗﺘﻲ از labelﻳﺎ ﺑﺮﭼﺴﺐ اﺳﺘﻔﺎده ﻣﻲﻧﻤﺎﺋﻴﻢ ﺑﺴﻂ آﻧﻬﺎ
دﭼﺎر اﺷﻜﺎل ﻣﻲﮔﺮدد .ﺑﻌﻨﻮان ﻣﺜﺎل ﻣﺎﻛﺮو زﻳﺮ را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
[email protected]
WWW.IRANMEET.COM
١٧٣
[email protected]
WWW.IRANMEET.COM
١٧٤
ﺣﺎل اﮔﺮ در ﺑﺮﻧﺎﻣﻪ داده ﺷﺪه ﻣﺎﻛﺮو WAITرا ﺑﺴﻂ دﻫﻴﻢ ﺑﺮﻧﺎﻣﻪ ﺑﺼﻮرت زﻳﺮ
در ﻣﻲآﻳﺪ.
M
PUSH CX
MOV CX , COUNT
NEXT00 : LOOP NEXT00
POP CX
M
PUSH CX
MOV CX , COUNT
NEXT01: LOOP NEXT01
POP CX
M
PUSH CX
MOV CX, COUNT
NEXT02: LOOP NEXT02
POP CX
M
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ در ﺗﻌﺮﻳﻒ ﻳﻚ ﻣﺎﻛﺮو ﻣﻲﺗﻮان ﻣﺎﻛﺮوﻫﺎي ﻣﺨﺘﻠﻔـﻲ را
ﻓﺮاﺧﻮاﻧﻲ ﻧﻤﻮد .در ﺻﻮرﺗﻴﻜﻪ در ﺗﻌﺮﻳﻒ ﻳـﻚ ﻣـﺎﻛﺮو ﺧـﻮد آن ﻣـﺎﻛﺮو را ﻓﺮاﺧـﻮاﻧﻲ
ﻧﻤﺎﺋﻴﻢ ﻣﺎﻛﺮو را ﺑﺎزﮔﺸﺘﻲ ﻳﺎ recursive macroﻧﺎﻣﻴﺪه ﻣﻴﺸﻮد.
[email protected]
WWW.IRANMEET.COM
١٧٥
ﻣﺜﺎل 7-24
ADD_W MACRO N1, N2, N3, N4, N5
IFB > < N1
MOV AX, 0 ;; initialize sum
ELSE 1
ADD_W N2, N3, N4, N5
ADD AX , N1
ENDIF 1
ENDM
در ﺗﻌﺮﻳﻒ ﺑﺎﻻ ﭼﻨﺎﻧﭽﻪ آرﮔﻮﻣﺎﻧﻲ وﺟﻮد ﻧﺪاﺷﺘﻪ ﺑﺎﺷﺪ ،ﻣﺠﻤﻮع ﺑﺮاﺑﺮ ﺻﻔﺮ و در
ﻏﻴﺮ اﻳﻨﺼﻮرت ﻣﺠﻤﻮع ﺗﻤﺎم آرﮔﻮﻣﺎﻧﻬﺎ ﺑﻪ ﺟﺰء آرﮔﻮﻣـﺎن اوﻟـﻲ را ﻣﺤﺎﺳـﺒﻪ ﻧﻤـﻮده و
ﺳﭙﺲ اوﻟﻴﻦ آرﮔﻮﻣﺎن ﺑﻪ آن اﺿﺎﻓﻪ ﻣﻲﻧﻤﺎﺋﻴﻢ.
ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﻗﺒﻼ ﻣﺘﺬﻛﺮ ﺷﺪﻳﻢ ﻣﺎﻛﺮوﻫﺎﺋﻲ ﻛﻪ در ﻳـﻚ ﺑﺮﻧﺎﻣـﻪ ﻣـﻮرد اﺳـﺘﻔﺎده
ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ ﺑﺎﻳﺴﺘﻲ در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺗﻌﺮﻳﻒ ﻧﻤﻮد .از ﻃﺮف دﻳﮕـﺮ ﻣـﻲﺗـﻮان ﻳـﻚ
macro libraryاﻳﺠﺎد ﻧﻤﻮد macro library .ﻳﻚ ﻓﺎﻳﻞ روي دﻳﺴﻚ ﻣﻲﺑﺎﺷﺪ ﺑﻨـﺎم
MACRO.LIBﻛﻪ ﺷﺎﻣﻞ ﺗﻤﺎم ﺗﻌﺎرﻳﻒ ﻣﺎﻛﺮوﻫﺎي ﻣـﻮرد اﺳـﺘﻔﺎده در ﺑﺮﻧﺎﻣـﻪﻫـﺎي
ﻣﺨﺘﻠﻔﻪ ﻣﻲﺑﺎﺷﺪ .ﭼﻨﺎﻧﭽﻪ از macro libraryﺑﺨﻮاﻫﻴﻢ اﺳﺘﻔﺎده ﻧﻤﺎﺋﻴﻢ ﻛﺎﻓﻲ اﺳﺖ ﻛـﻪ
دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮا ﺑﻪ ﻋﻨﻮان اوﻟﻴﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺮﻧﺎﻣﻪ ﻗـﺮار دﻫـﻴﻢ و دﻳﮕـﺮ ﻧﻴـﺎزي ﺑـﻪ
ﺗﻌﺮﻳﻒ ﻣﺎﻛﺮوﻫﺎي ﻣﻮرد ﻧﻴﺎز ﺑﺮﻧﺎﻣﻪ در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﻧﻤﻲﺑﺎﺷﺪ.
INCLUDE MACRO.LIB
[email protected]
WWW.IRANMEET.COM
١٧٦
ﻣﺜﺎل 7-25
INCLUDE MACRO.LIB
PURGE SHOW, CLS, LOCATE
-7-3-7ﻋﻤﻠﮕﺮﻫﺎي ﻣﺎﻛﺮو
دو ﻋﻤﻠﮕﺮ ﻣﺎﻛﺮو در Macro Assemblerﻋﺒﺎرﺗﻨﺪ از
&
;;
ﺷﻜﻞ ﻛﻠﻲ ﻋﻤﻠﮕﺮ ;; ﻋﺒﺎرﺗﺴﺖ از
;; comment
ﻋﻤﻠﮕﺮ ;; ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ اﺳﻤﺒﻠﺮ commentsﻫﺎ را در ﻣﻮﻗﻊ ﺑـﺴﻂ ﻣـﺎﻛﺮو
ﺣﺬف ﻧﻤﺎﻳﺪ.
ﺑﺮﻧﺎﻣﻪﻫﺎي ﺑﺪون commentsﻓﻀﺎي ﻛﻤﺘﺮي را اﺷﻐﺎل ﻧﻤﻮده و ﺳﺮﻳﻌﺘﺮ اﺟـﺮا
ﻣﻲﺷﻮﻧﺪ .ﭼﻨﺎﻧﭽﻪ ﺑﺨﻮاﻫﻴﺪ commentاي را در ﻣﻮﻗـﻊ ﺑـﺴﻂ ﻣـﺎﻛﺮو ﺣـﺬف ﻧﻜﻨﻴـﺪ
ﺑﺎﻳﺴﺘﻲ از ; اﺳﺘﻔﺎده ﮔﺮدد.
; comment
-7-3-8ﻋﻤﻠﮕﺮ &
ﺷﻜﻞ ﻛﻠﻲ ﻋﻤﻠﮕﺮ & ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
text & text
اﻳﻦ ﻋﻤﻠﮕﺮ دو textﻳﺎ ﺳﻴﻤﺒﻞ را ﺑﻬـﻢ وﺻـﻞ ﻧﻤـﻮده در ﻛﻨـﺎر ﻳﻜـﺪﻳﮕﺮ ﻗـﺮار
ﻣﻲدﻫﺪ.
[email protected]
WWW.IRANMEET.COM
١٧٧
7-26 ﻣﺜﺎل
DEF_TABLE MACRO SUFFIX, LNGTH
TABLE & SUFFIX DB LNGTH DUP (?)
ENDM
DEF_TABLE A,5
PUSH DX
MOV AH,2 ;; select, display option
MOV DL, ′character′
INT 21H ;; call type 21 interrupt
POP DX
POP AX
ENDM
ﺑﻪ ﻣﻨﻈﻮر ﻧﻤـﺎﻳﺶ ﻛـﺎرﻛﺘﺮ * روي ﺻـﻔﺤﻪ ﻣـﺎﻧﻴﺘﻮر از دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳـﻞ
:اﺳﺘﻔﺎده ﻣﻲﮔﺮدد
[email protected]
WWW.IRANMEET.COM
١٧٨
-7-4وﻗﻔﻪﻫﺎ )(Interrupts
رﻳﺰﭘﺮدازﻧﺪه در ﻳﻚ ﻛﺎﻣﻴﭙﻮﺗﺮ ﺑﺮﻧﺎﻣﻪﻫﺎ را ﺑﺴﺎدﮔﻲ اﺟﺮا ﻧﻤﻲﻛﻨﺪ .ﺑﻠﻜـﻪ ﺑﻌﻨـﻮان
ﺗﻨﻈﻴﻢ ﻛﻨﻨﺪه ﺳﻴﺴﺘﻢ درﮔﻴﺮ ﭼﻴﺰﻫﺎﺋﻲ ﻣﻴﺸﻮد ﻛﻪ اﺗﻔﺎق ﻣﻲاﻓﺘﻨﺪ .ﺑﻌﻨﻮان ﻣﺜﺎل وﻗﺘـﻲ ﻛـﻪ
ﻛﻠﻴﺪي روي ﺻﻔﺤﻪ ﻛﻠﻴـﺪ ﻓـﺸﺎر ﻣـﻲدﻫﻴـﺪ رﻳﺰﭘﺮدازﻧـﺪه ﺑﺎﻳـﺴﺘﻲ درﻳﺎﺑـﺪ ﻛـﻪ ﻛـﺪام
ﻛﻠﻴﺪ ﻓﺸﺎر داده ﺷﺪه و ﻋﻤﻞ ﻣﻨﺎﺳﺐ آن ﻛﻠﻴﺪ را اﻧﺠﺎم دﻫﺪ .ﺑﻌﻨﻮان ﻣﺜـﺎل وﻗﺘـﻲ ﻛﻠﻴـﺪ
Ctrl-Breakرا ﻓﺸﺎر ﻣﻲدﻫﻴﺪ ﻋﻤﻠﻲ ﻛﻪ ﺑﺎﻳﺴﺘﻲ اﻧﺠﺎم ﺷﻮد ﻛﺎﻣﻼً ﻣﺘﻔﺎوت اﺳـﺖ ﺑـﺎ
وﻗﺘﻲ ﻛﻪ ﻛﻠﻴﺪ Tرا ﻓﺸﺎر ﻣﻲدﻫﻴﺪ .وﻗﺘﻲ ﻛﻪ dataاز diskﺑـﻪ ﺣﺎﻓﻈـﻪ ﻳـﺎ ﺑـﺎﻟﻌﻜﺲ
ﻣﻨﺘﻘﻞ ﻣﻲ ﮔﺮدد اﻳﻦ ﻣﺴﺌﻮﻟﻴﺖ رﻳﺰﭘﺮدازﻧﺪه اﺳﺖ ﻛـﻪ دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ﻣﻨﺎﺳـﺐ ﺑـﺮاي
اﻳﻨﻜﺎر را اﺟﺮا ﻧﻤﺎﻳﺪ .ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﮔﻔﺘﻪ ﺷﺪ رﻳﺰﭘﺮدازﻧﺪه در ﻛﻠﻴـﻪ ﻛﺎرﻫـﺎي ﻛـﺎﻣﭙﻴﻮﺗﺮ
ﻧﻘﺸﻲ اﻳﻔﺎء ﻣﻲﻧﻤﺎﻳﺪ .ﺣﺎل ﺳﻮاﻟﻲ ﻛﻪ ﻣﻄﺮح ﻣﻲﺷﻮد اﻳﻨﺴﺖ ﻛﻪ رﻳﺰﭘﺮدازﻧـﺪه ﭼﮕﻮﻧـﻪ
ﺑﺎ وﺳﺎﺋﻞ ﺟﺎﻧﺒﻲ درﮔﻴﺮ ﻣﻲﮔﺮدد؟ ﺣﻘﻴﻘﺖ اﻣﺮ اﻳﻦ اﺳﺖ ﻛﻪ رﻳﺰﭘﺮدازﻧﺪهﻫـﺎ و وﺳـﺎﺋﻞ
ﺟﺎﻧﺒﻲ ﺑﻄﺮق ﻣﺨﺘﻠﻒ ﺑﺎ ﻫﻢ ارﺗﺒﺎط ﺑﺮﻗﺮار ﻣﻲﻛﻨﻨﺪ .ﻛﺎري ﻛـﻪ اﻧﺠـﺎم ﻣـﻲﺷـﻮد ﺑـﺪﻳﻦ
ﺻﻮرت اﺳﺖ ﻛﻪ رﻳﺰﭘﺮدازﻧﺪه ﺷﺮوع ﺑﻪ اﺟﺮاي ﺑﺮﻧﺎﻣﻪ ﻣﻲﻧﻤﺎﻳـﺪ و ﺑـﻪ اﺟـﺮاي ﺑﺮﻧﺎﻣـﻪ
اداﻣﻪ ﻣﻲدﻫﺪ ﺗﺎ زﻣﺎﻧﻴﻜﻪ ﻳﻚ وﺳﻴﻠﻪ ﺟﺎﻧﺒﻲ ﻣﺎﻧﻨﺪ ﺻﻔﺤﻪ ﻛﻠﻴﺪ ،دﻳﺴﻚ ،ﻳـﺎ ﻣـﺎﻧﻴﺘﻮر ﺑـﻪ
رﻳﺰﭘﺮدازﻧﺪه اﻋﻼم ﻧﻤﺎﻳﺪ ﻛﻪ ﺑﻪ ﻛﻤﻚ رﻳﺰﭘﺮدازﻧﺪه ﻧﻴﺎز دارد .اﻟﺒﺘـﻪ وﺳـﺎﺋﻞ ﺟـﺎﻧﺒﻲ در
ﺣﻘﻴﻘﺖ ﺑﺎ رﻳﺰﭘﺮدازﻧﺪه ﺻﺤﺒﺖ ﻧﻤﻲﻛﻨﻨﺪ ﺑﻠﻜﻪ آﻧﻬﺎ ﺳﻴﮕﻨﺎل ﻧﻴﺎز ﺑـﻪ ﻛﻤـﻚ ﺧـﻮد را از
ﻃﺮﻳﻖ وﻗﻔﻪ ﻳﺎ Interruptارﺳﺎل ﻣﻲﻧﻤﺎﻳﻨﺪ.
[email protected]
WWW.IRANMEET.COM
١٧٩
از ﻗﺒﻴــﻞ floppy drive ، disk drive ، keyboardو … داراي type code
ﻣﺨﺘﻠﻔﻲ ﻣﻲﺑﺎﺷﺪ .در ﺣﻘﻴﻘﺖ 256ﻧﻮع ﻣﺨﺘﻠﻒ type codeوﺟـﻮد دارد .ﻫـﺮ وﻗـﺖ
درﺧﻮاﺳﺖ ﻛﻤﻜﻲ از ﻃﺮف ﻳﻚ وﺳﻴﻠﻪ ﺟﺎﻧﺒﻲ ﺷـﻮد ) (Interruptرﻳﺰﭘﺮدازﻧـﺪه اﮔـﺮ
ﻛﺎري ﻛﻪ در ﺣﺎل اﻧﺠﺎم آن ﻣﻲﺑﺎﺷﺪ ﺑﺘﻮاﻧﺪ ﻣﻮﻗﺘﺎً رﻫﺎ ﻧﻤﺎﻳﺪ ،اﻳﻨﻜﺎر را اﻧﺠﺎم داده و ﺑـﻪ
ﻛﻤﻚ وﺳﻴﻠﻪ ﺟﺎﻧﺒﻲ ﻣﻲرود )اﻟﺒﺘﻪ ﺑﺎ ﺣﻔﻆ ﻣﻮﻗﻌﻴﺖ ﻓﻌﻠﻲ( .ﭘﺲ از ﺗﻜﻤﻴﻞ ﻛﺎر وﺳـﻴﻠﻪ
ﺟﺎﻧﺒﻲ ﻣﺠﺪداً ﻛﺎر ﻗﺒﻠﻲ ﺧﻮد را از ﺳﺮ ﻣﻲﮔﻴﺮد .در ﺻﻮرﺗﻴﻜﻪ رﻳﺰﭘﺮدازﻧﺪه ﻧﺘﻮاﻧـﺪ ﻛـﺎر
ﻓﻌﻠﻲ ﺧﻮد را رﻫﺎ ﻧﻤﺎﻳﺪ ﭘﺲ از ﺗﻜﻤﻴﻞ اﻳﻦ ﻛﺎر ﺑﻪ ﻛﻤﻚ وﺳﻴﻠﻪ ﺟﺎﻧﺒﻲ ﻣﻲرود.
ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻣﺘﺬﻛﺮ ﺷﺪﻳﻢ 256ﺗﺎ type codeوﺟﻮد دارد ﺑﻪ ﺷﻤﺎرهﻫﺎي 255
ﺗﺎ .0رﻳﺰﭘﺮدازﻧﺪه از اﻳﻦ type codeاﺳـﺘﻔﺎده ﻧﻤـﻮده آدرﺳـﻲ را در اﺑﺘـﺪاي ﺣﺎﻓﻈـﻪ
ﻣﺤﺎﺳﺒﻪ ﻧﻤﻮده و از آدرس ﻣﺤﺎﺳﺒﻪ ﺷـﺪه آدرس دﻳﮕـﺮي را ﻣـﻲﺧﻮاﻧـﺪ .اﻳـﻦ آدرس
ﺟﺪﻳﺪ Interrupt Vectorﻧﺎم دارد ﻛﻪ در ﺣﻘﻴﻘﺖ آدرس ﺑﺮﻧﺎﻣﻪاي اﺳﺖ ﻛﻪ ﻛـﺎر آن
وﻗﻔﻪ را ﻋﻬﺪهدار ﻣﻲﺑﺎﺷﺪ .در ﻣﻮرد وﺳﻴﻠﻪ ﺟﺎﻧﺒﻲ اﺳـﺘﺎﻧﺪارد ،ﺑﺮﻧﺎﻣـﻪﻫـﺎي ﺳـﺮوﻳﺲ
دﻫﻨــﺪه وﻗﻔــﻪﻫــﺎ ) (Interrupt servicing programsدر ﺗﺮاﺷ ـﻪ ROMذﺧﻴــﺮه
ﻣﻲﮔﺮدد .در ﺑﺴﻴﺎري از ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎ اﻳﻦ ROMﺑـﻪ Basic Input/Output system
ﻳﺎ BIOSﻣﻌﺮوﻓﺴﺖ.
ﺣﺎل ﻛﻪ رﻳﺰﭘﺮدازﻧﺪه ﻣﻲداﻧﺪ ﻛﺪام ﺑﺮﻧﺎﻣﻪ را ﺑﺎﻳﺴﺘﻲ اﺟﺮا ﻛﻨﺪ اﻳﻦ ﻛﺎر را اﻧﺠﺎم
داده ﻳﻌﻨﻲ ﺑﺮﻧﺎﻣﻪ را اﺟﺮا ﻧﻤﻮده و ﭘﺲ از اﺗﻤـﺎم اﺟـﺮاي ﺑﺮﻧﺎﻣـﻪ ﺑـﻪ ﻛـﺎر ﻗﺒﻠـﻲ ﺧـﻮد
ﺑﺮﮔﺸﺘﻪ و اﺟﺮاي آن را دﻧﺒﺎل ﻣﻲﻛﻨﺪ.
-7-4-2ﻣﻨﺎﺑﻊ وﻗﻔﻪﻫﺎ
وﻗﻔـــﻪﻫـــﺎﺋﻲ ﻛـــﻪ ﺗـــﺎﻛﻨﻮن ﺑﻴـــﺎن ﺷـــﺪه اﺳـــﺖ وﻗﻔـــﻪﻫـــﺎي ﺧـــﺎرﺟﻲ
) ( External Interruptﻣﻲﺑﺎﺷـﺪ ﻛـﻪ ﺗﻮﺳـﻂ وﺳـﺎﺋﻞ ﻳـﺎ ﺗﺠﻬﻴـﺰات ﺟـﺎﻧﺒﻲ ﻓﻌـﺎل
ﻣﻲﮔﺮدﻧﺪ .اﻳﻦ ﻧﻮع وﻗﻔﻪﻫﺎ ﻗﺴﻤﺘﻲ از 256ﻧﻮع وﻗﻔـﻪ را ﭘﻮﺷـﺶ ﻣـﻲدﻫـﺪ .ﺳـﺎﻳﺮﻳﻦ
ﻣﻲﺗﻮاﻧﻨﺪ ﻳﻜﻲ از دو ﻧﻮع وﻗﻔﻪ ذﻳﻞ ﺑﺎﺷﻨﺪ.
[email protected]
WWW.IRANMEET.COM
١٨٠
-7-4-4وﻗﻔﻪﻫﺎي ﺳﻴﺴﺘﻢ
در ﻛﺎﻣﭙﻴﻮﺗﺮﻫﺎ 1024 ،ﺑﺎﻳﺖ اول ﺣﺎﻓﻈﻪ ﻳﻌﻨﻲ ﻣﺤﻠﻬﺎي ﺣﺎﻓﻈـﻪ ﺑـﺎآدرس 0ﺗـﺎ
3FFﺗﺨﺼﻴﺺ ﺑـﻪ ﺟـﺪوﻟﻲ دارد ﻛـﻪ اﻳـﻦ ﺟـﺪول ﺑﻨـﺎم interrupt vector table
ﻣﻌﺮوﻓﺴﺖ .اﻳﻦ ﺟﺪوﻟﻲ اﺳﺖ ﺑـﺎ آدرﺳـﻬﺎي 32ﺑﻴﺘـﻲ ﻛـﻪ ﺑـﻪ interrupt service
routinesدر ﻛﺎﻣﭙﻴﻮﺗﺮ اﺷﺎره ﻣﻲﻛﻨﻨﺪ 256 .وﻗﻔﻪ ﻣﺨﺘﻠﻒ ﺑﻪ ﺷﻤﺎرهﻫﺎي 0ﺗﺎ 255ﻳـﺎ
FFﺗﺎ 0در ﻣﺒﻨـﺎي ﺷـﺎﻧﺰده وﺟـﻮد دارد .رﻳﺰﭘﺮدازﻧـﺪه 32 ، Intelوﻗﻔـﻪ اول ﻳﻌﻨـﻲ
[email protected]
WWW.IRANMEET.COM
١٨١
وﻗﻔﻪﻫﺎي ﺷﻤﺎره 1FHﺗﺎ 0را ﺑﺮاي اﺳﺘﻔﺎده ﺧﻮدش در ﻧﻈﺮ ﻣﻲﮔﻴﺮد 32 .وﻗﻔﻪ ﺑﻌﺪي
ﻳﻌﻨﻲ ﺷﻤﺎرهﻫﺎي 3FHﺗﺎ 20Hﺑﺮاي اﺳﺘﻔﺎده ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ DOSدر ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪه
اﺳﺖ.
وﻗﻔــﻪ از ﻃﺮﻳــﻖ دﺳــﺘﻮراﻟﻌﻤﻞﻫــﺎي وﻗﻔــﻪ در ﺑﺮﻧﺎﻣــﻪ ﻳــﺎ ﺗﺠﻬﻴــﺰات ﺧــﺎرﺟﻲ
) ( external devicesدر ﺳﻴﺴﺘﻢ ﻓﻌﺎل ﻣﻲﮔﺮدد.
وﻗﺘﻲ ﻛﻪ رﻳﺰﭘﺮدازﻧﺪه ﻳﻚ وﻗﻔﻪ درﻳﺎﻓﺖ ﻣﻲﻧﻤﺎﻳﺪ ﺷﻤﺎره وﻗﻔﻪ را در 4ﺿـﺮب
ﻧﻤـﻮده ﺗـﺎ آدرس interrupt vectorدر ﺟـﺪول را ﺑﺪﺳـﺖ آورده ﺳـﭙﺲ ﻣﺤﺘـﻮي
آدرس ﺑﺪﺳﺖ آﻣﺪه را در ﺛﺒﺎت IPو ﺛﺒﺎت CSﻗﺮار ﻣـﻲدﻫـﺪ و ﺷـﺮوع ﺑـﻪ اﺟـﺮاي
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ در آن آدرس ﻣﻲﻧﻤﺎﻳﺪ .ﺑﻌﻨﻮان ﻣﺜﺎل اﮔﺮ وﻗﻔﻪ از ﻧﻮع 4AHﺑﺎﺷﺪ.
4AH * 4 = 128H
-7-4-5وﻗﻔﻪﻫﺎي DOS
ﻫﻤﺎﻧﻄﻮر ﻛﻪ ﻗﺒﻼً ﻣﺘﺬﻛﺮ ﺷﺪﻳﻢ وﻗﻔﻪﻫـﺎي ﻧـﻮع 3FHﺗـﺎ 20Hﺑـﺮاي ﺳﻴـﺴﺘﻢ
ﻋﺎﻣﻞ DOSرزرو ﮔﺮدﻳﺪه اﺳﺖ .اﻛﺜﺮ اﻳﻦ وﻗﻔﻪﻫـﺎ در ﺳﻴـﺴﺘﻢ ﻋﺎﻣـﻞ DOSﻛـﺎرﺑﺮد
دارﻧﺪ ﺑﻨﺎﺑﺮاﻳﻦ در اﻳﻨﺠﺎ آﻧﻬﺎ را ﻣﻮرد ﺑﺤﺚ ﻗﺮار ﻧﻤﻲدﻫﻴﻢ .ﻓﻘﻂ دﻗﺖ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛـﻪ
ﻧﻮع 21داراي ﮔﺰﻳﻨﻪﻫﺎﺋﻲ ﺑﺮاي ﺑﺮﻗﺮاري ارﺗﺒﺎط ﺑﺎ،printer ، display ، keyboard
diskو وﺳﺎﺋﻞ ارﺗﺒﺎﻃﻲ ﻏﻴﺮ ﻫﻤﺰﻣﺎن )(asynchronous communicationsdevice
ﻣﻲﺑﺎﺷﺪ ﻛﻪ در ﺑﺨﺶ ﺑﻌﺪي اﻳﻦ ﻓﺼﻞ ﻣﻮرد ﺑﺤﺚ ﻗﺮار ﻣﻲﮔﻴﺮد.
[email protected]
WWW.IRANMEET.COM
١٨٢
-7-4-6دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي وﻗﻔﻪ
در زﺑﺎن اﺳﻤﺒﻠﻲ در ﻣﻮرد وﻗﻔﻪﻫﺎي ﺑﺮﻧﺎﻣﻪ ﻣﻲﺗـﻮان از دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳـﻞ
اﺳﺘﻔﺎده ﻧﻤﻮد:
INT
INTO
IRET
[email protected]
WWW.IRANMEET.COM
١٨٣
7-27 ﻣﺜﺎل
INT 1 AH
CS 049E STACK
SS:01F8
IP 0002 SS:01FA
SS:01FC
SP 01FE SS:01FE
CS F000
0004 SS:01F8
IP FE6E 049E SS:01FA
(Flags) SS:01FC
SP 01F8 SS:01FE
[email protected]
WWW.IRANMEET.COM
١٨٤
Interrupt
Vectors
19 0064
0066
1A 0068 FE6E
006A F000
1B 006C
006E
[email protected]
WWW.IRANMEET.COM
١٨٥
[email protected]
WWW.IRANMEET.COM
١٨٦
7-1 ﺟﺪول
[email protected]
WWW.IRANMEET.COM
١٨٧
Directofy Functions
[email protected]
WWW.IRANMEET.COM
١٨٨
[email protected]
WWW.IRANMEET.COM
١٨٩
CX=Attribute
[email protected]
WWW.IRANMEET.COM
١٩٠
[email protected]
WWW.IRANMEET.COM
١٩١
*Besides the registers listed in this column, only AX and the flags are affected.
**If an error occurs, these function calls return CF=1 and an error code in AX.
See the folowing table for the meanings of the error codes.
[email protected]
WWW.IRANMEET.COM
١٩٢
7-2 ﺟﺪول
Error codes for DOS function calls.
Code Meaning
1 Invalid function number
2 File not found
3 Path not found
4 Too many open files (no handles left)
5 Access denied
6 Invalid handle
7 Memory control blocks destroyed
8 Insufficient memory
9 Invalid memory block address
10 Invalid environment
11 Invalid format
12 Invalid access code
13 Invalid data
15 Invalid drive was specified
16 Attempted to remove the current directory
17 Not same device
18 No more files
19 Disk is write-protected
20 Bad disk unit
21 Drive not ready
22 Invalid disk command
23 CRC error
24 Invalid length (during disk operation)
25 Seek error
26 Not an MS-DOS disk
27 Sector not found
28 Out of paper
29 Write fault
30 Read fault
31 General failure
32 Sharing violation
[email protected]
WWW.IRANMEET.COM
١٩٣
With DOS Microsoft has also included a Get Extended Error function call
(AH=59H) that provides more comprehensive error.
[email protected]
WWW.IRANMEET.COM
١٩٤
MOV AH , 00
MOV AL, 03
INT 10 H
ﺑﺮﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
١٩٥
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻣﻜﺎن ﻧﻤﺎ ﺑﺎﺑﺘﺪاي ﺳﻄﺮ ﺑﻌﺪ ﻣﻨﺘﻘـﻞ
ﮔﺮدد.
MOV AH, 02H
MOV DL, 0DH
INT 21H
MOV DL, 0AH
INT 21H
[email protected]
WWW.IRANMEET.COM
١٩٦
داده21 در ذﻳﻞ ﺟﺪول ﻣﺮﺑﻮط ﺑﻪ ﻋﻤﻠﻴﺎت ﺻﻔﺤﻪ ﻛﻠﻴﺪ ﺑﺮاي وﻗﻔﻪ ﻧﻮع
.ﺷﺪه اﺳﺖ
7-3 ﺟﺪول
Keyboard operations with Type 21 interrupt.
[email protected]
WWW.IRANMEET.COM
١٩٧
در ذﻳـﻞ داده ﺷـﺪه21 ﺟﺪول ﻣﺮﺑﻮط ﺑﻪ ﻋﻤﻠﻴﺎت ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﺑﺮاي وﻗﻔـﻪ
.اﺳﺖ
7-4 ﺟﺪول
[email protected]
WWW.IRANMEET.COM
١٩٨
-7-5ﺧﻮاﻧﺪن رﺷﺘﻪﻫﺎ
در ﺑﺴﻴﺎري از ﺑﺮﻧﺎﻣﻪﻫﺎ ﻧﻴﺎز ﺑﻪ وارد ﻧﻤﻮدن ﻧﺎم ﻳﺎ آدرس ﻳﺎ ﺑﻄـﻮر ﻛﻠـﻲ
رﺷــﺘﻪاي از ﻃﺮﻳــﻖ ﺻــﻔﺤﻪ ﻛﻠﻴــﺪ ﻣــﻲﺑﺎﺷــﺪ .ﺑــﺮاي اﻳﻨﻜــﺎر ﺷــﻤﺎ ﺑﺎﻳــﺴﺘﻲ در
data segmentﻓﻀﺎﺋﻲ ﺑﺎﻧﺪازه ﻣﺎﻛﺰﻳﻤﻢ ﺗﻌﺪاد ﻛﺎرﻛﺘﺮﻫﺎﺋﻲ ﻛﻪ ﻣﻤﻜﻦ اﺳـﺖ
از ﺻﻔﺤﻪ ﻛﻠﻴﺪ داده ﺷﻮد ﺑﻌﻼوه 2روزو ﻧﻤﻮد .اﻳﻦ ﺷﺎﻣﻞ
اﻟﻒ(ﻳﻚ ﻓﻀﺎ از ﻧﻮع ﺑﺎﻳﺖ ﻛﻪ ﻣﻘﺪار آن ﻣﻌـﺎدل ﺗﻌـﺪاد ﻣـﺎﻛﺰﻳﻤﻢ ﻛﺎرﻛﺘﺮﻫـﺎي
ورودي ﺑﻌﻼوه ﻳﻚ ﻣﻲﺑﺎﺷﺪ.
ب(ﻳﻚ ﻓﻀﺎ از ﻧﻮع ﺑﺎﻳﺖ ﻛﻪ ﻣﻘـﺪار آن ﺑﻮﺳـﻴﻠﻪ ﺗـﺎﺑﻊ Aﻳـﺎ 10Hﻣـﺸﺨﺺ
ﻣﻲﮔﺮدد و ﻋﺒﺎرﺗﺴﺖ از ﺗﻌﺪاد ﻛﺎرﻛﺘﺮﻫﺎي واﻗﻌﻲ ﻛﻪ از ﺻﻔﺤﻪ ﻛﻠﻴﺪ داده ﺷﺪه
اﺳﺖ.
ج ( ﻳﻚ ﺑﻠﻮك از ﺑﺎﻳﺘﻬﺎ ﺑﺪون ﻣﻘﺪار اوﻟﻴﻪ ﻛﻪ ﺷﺎﻣﻞ ﻛﺎرﻛﺘﺮﻫﺎﺋﻲ اﺳﺖ ﻛﻪ ﻋﻤﻼً
از ﻃﺮﻳﻖ ﺻﻔﺤﻪ ﻛﻠﻴﺪ وارد ﮔﺮدﻳﺪه اﺳﺖ.
ﺑﻌﻨﻮان ﻣﺜﺎل ﺑﺮاي رزرو ﻓـﻀﺎﺋﻲ ﺗـﺎ 50ﻛـﺎرﻛﺘﺮ دﺳـﺘﻮراﻟﻌﻤﻞ زﻳـﺮ را
ﺑﺎﻳﺴﺘﻲ در data segmentﻗﺮار داد.
)?( USER_STRING DB 51,51 DUP
[email protected]
WWW.IRANMEET.COM
١٩٩
در ﺑﺴﻴﺎري از ﻣﻮارد در ﺑﺮﻧﺎﻣﻪﻫﺎ ﭘﻴﻐﺎﻣﻲ ﻧﻤﺎﻳﺶ داده ﻣﻴﺸﻮد و ﺳﭙﺲ از
ﻛﺎرﺑﺮ اﻧﺘﻈﺎر ﭘﺎﺳﺨﮕﻮﺋﻲ ﻣﻲﺑﺎﺷﺪ .ﺑﻌﻨﻮان ﻣﺜﺎل ﺷﻤﺎ از ﻛـﺎرﺑﺮ ﻣـﻲﺧﻮاﻫﻴـﺪ ﻛـﻪ
ﻧﺎﻣﺶ را وارد ﻧﻤﺎﻳﺪ .ﺑﺮاي اﻳﻨﻜﺎر اﺑﺘﺪا ﭘﻴﻐﺎﻣﻲ ﻛـﻪ ﻣـﻲ ﺧﻮاﻫﻴـﺪ روي ﺻـﻔﺤﻪ
ﻣﺎﻧﻴﺘﻮر ﻧﻤﺎﻳﺶ داده ﺷﻮد را در Data segmentﺗﻌﺮﻳﻒ ﻣﻲﻧﻤﺎﺋﻴﺪ .ﺳﭙﺲ ﺑـﺎ
اﺳـــﺘﻔﺎده از روال READ_KEYSداده ﺷـــﺪه در ﺑـــﺎﻻ اﻳﻨﻜـــﺎر را اﻧﺠـــﺎم
ﻣﻲدﻫﻴﺪ.
ﻣﺜﺎل 7-28
DATA_SEG PARA DATA ′DATA′
GET_NAME DB ′Please enter your name: $′
DATA_SEG ENDS
و ﺳﭙﺲ در code segmentدﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ را ﺑﺎﻳﺴﺘﻲ ﺑﺪﻫﻴﻢ.
[email protected]
WWW.IRANMEET.COM
٢٠٠
* Besides the registers listed in this column, only AX and the flags are affected.
[email protected]
WWW.IRANMEET.COM
٢٠١
HRS DB ?
MINS DB ?
SECS DB ?
HSECS DB ?
[email protected]
WWW.IRANMEET.COM
٢٠٢
[email protected]
WWW.IRANMEET.COM
٢٠٣
START
Read time
A
Target time=
Inputs + current time
No No
Hundreds= Minutes=
Hundreds – 100 Minutes –60
Seconds= Hours =
Seconds + 1 Hours +1
No Yes
Seconds=
Hours =0
Seconds – 60
Minutes =
Read time
Minutes+1
A
Time = No
Target?
Yes
[email protected]
WWW.IRANMEET.COM
٢٠٤
PUBLIC DELAY
CSEG SEGMENT PARA PUBLIC ′CODE′
ASSUME CS: CSEG
DELAY PROC FAR
PUSH AX ; Save affected registers
PUSH BX
PUSH CX
PUSH DX
MOV AH, 2CH ; Read current time
INT 21H
; Add the current time to the input values.
MOV AH, CH ; Hours
ADD AL, CL ; Minutes
ADD BH, DH ; Seconds
ADD BL, DL ; Hundredths
; Propagate any carryover.
CMP BL, 100 ;Hundredths must be <100
JB SECS
SUB BL, 100
INC BH
SECS: CMP BH, 60 ; Seconds must be <60
JB MINS
SUB BH,60
INC AL
MINS: CMP AL, 60 ; Minutes must be < 60
JB HRS
SUB AL, 60
INC AH
HRS: CMP AH, 24 ; Hours must be < 24
JNE CHECK
SUB AH, AH
; wait for interval to elapse.
CHECK: PUSH AX ; Read the time again
[email protected]
WWW.IRANMEET.COM
٢٠٥
BINARY رﻳﺰﭘﺮدازﻧﺪه
[email protected]
WWW.IRANMEET.COM
٢٠٦
از ﻃﺮف دﻳﮕﺮ ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﻣـﻲداﻧـﻴﻢ ﻫـﺮ ﻋـﺪد را ﺑـﺼﻮرت ﻳـﻚ ﺳـﺮي از
ﺗﻮاﻧﻬﺎي 10ﻣﻲﺗﻮان ﻧﻤﺎﻳﺶ داد.
ﻣﺜﺎل 7-29
و ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ آﻧﻜﻪ در ﻣﻮﻗﻊ ورود اﻋﺪاد ،در ﻫﺮ ﻟﺤﻈﻪ ﻓﻘﻂ ﻳـﻚ رﻗـﻢ را وارد
ﻣﻲﻧﻤﺎﺋﻴﻢ اﻟﮕﻮرﻳﺘﻢ ﺗﺒﺪﻳﻞ ﺑﺎﻳﺴﺘﻲ وزن رﻗﻢ را ﻣﺪﻧﻈﺮ ﻗﺮار دﻫﺪ .ﺑﻌﻨﻮان ﻣﺜﺎل اﮔﺮ ﻛﺎرﺑﺮ
ﻋﺪد 95را ﺗﺎﻳﭗ ﻧﻤﺎﻳﺪ ﺑﻪ ﻣﺤﺾ درﻳﺎﻓﺖ 9اﻟﮕﻮرﻳﺘﻢ ﺑﺎﻳﺴﺘﻲ آﻧﺮا در 10ﺿﺮب ﻧﻤﺎﻳﺪ
ﻗﺒﻞ از آﻧﻜﻪ ﺑﺎ ﻋﺪد 5ﺟﻤﻊ ﻧﻤﺎﻳﺪ .ﺑﻄﻮر ﻛﻠﻲ ﻓﺮآﻳﻨﺪ ﺗﺒﺪﻳﻞ ﺑﺎﻳﺴﺘﻲ ﺑﻄﺮﻳﻖ ذﻳـﻞ ﻋﻤـﻞ
ﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
٢٠٧
اﻟﻒ(اﻟﮕﻮرﻳﺘﻢ ﺗﺒﺪﻳﻞ ﺑﺎﻳﺴﺘﻲ اوﻟﻴﻦ رﻗﻢ )ﺑﺎ ارزﺷﺘﺮﻳﻦ( را ﺑﺎ ﺣﺬف ﭼﻬﺎر ﺑﻴـﺖ ﻣﺮﺗﺒـﻪ
ﺑﺎﻻ )ﺑﻴﺖﻫﺎي 7ﺗﺎ (4ﻛﺪ اﺳﻜﻲ ﺑﻪ دودوﺋﻲ ﺗﺒﺪﻳﻞ ﻧﻤﺎﻳﺪ و ﻣﻘﺪار ﺑﺎﻳﻨﺮي ﺑﺪﺳﺖ آﻣﺪه
را ﻧﮕﻬﺪاري ﻧﻤﺎﻳﺪ.
ب(اﻟﮕﻮرﻳﺘﻢ ﺑﺎﻳﺴﺘﻲ ارﻗﺎم ﺑﻌﺪي را ﺑﻪ دودوﺋﻲ ﺗﺒﺪﻳﻞ ﻧﻤﻮده و ﻧﺘﻴﺠﻪ ﻗﺒﻠﻲ ﺑـﻪ دﺳـﺖ
آﻣﺪه در ﻣﺮﺣﻠﻪ اﻟﻒ را در 10ﺿﺮب ﻧﻤﻮده ﺑﺎ ﻧﺘﻴﺠﻪ ﺑﺪﺳﺖ آﻣﺪه در اﻳﻦ ﻣﺮﺣﻠﻪ ﺟﻤﻊ
ﻧﻤﺎﻳﺪ.
ﻣﺜﺎل 7-30
ﻋﺪد 726را در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ.
0111 7
0010 2
از ﻃﺮف دﻳﮕﺮ اﻟﮕﻮرﻳﺘﻢ ﺗﺒﺪﻳﻞ ﺑﺎﻳﺴﺘﻲ ﻗﺎدر ﺑﺎﺷﺪ ﻛﻪ ﺑﺘﻮاﻧﺪ اﻋﺪاد ﻣﻨﻔﻲ را ﻛـﻪ
ﺑﺼﻮرت رﺷﺘﻪاي از ﻛﺪاﺳﻜﻲ داده ﻣﻲﺷﻮد ﺑﻪ دودوﺋـﻲ ﺗﺒـﺪﻳﻞ ﻧﻤﺎﻳـﺪ .ﻧﻤـﻮدار ذﻳـﻞ
ﺗﺒﺪﻳﻞ ﻳﻚ ﻣﻘﺪار ﺑﻴﻦ +32767ﺗﺎ –32768را اﻧﺠﺎم ﻣﻲدﻫـﺪ .در ﺣﻘﻴﻘـﺖ ﻧﺘﻴﺠـﻪ ﻳـﻚ
ﻋﻤﻼً ﻛﺎر ﺗﺒﺪﻳﻞ را ﺑﻌﻬﺪه دارد. CONV_AB ﻣﻘﺪار ﺷﺎﻧﺰده ﺑﻴﺘﻲ ﻣﻲﺑﺎﺷﺪ .روال
[email protected]
WWW.IRANMEET.COM
٢٠٨
START
RESULT=0
DECIMAL
COUNT=0
IGNORE
LEADING
BLANKS
NO
(ASSUME POSITIVE)
NO
MINUS SIGN PLUS SIGN
(-)? (+)?
YES YES
POINTER= POINTER=
POINTER+1 POINTER+1
CONV_AB CONV_AB
(CONVERT (CONVERT
STRING) STRING)
YES
YES CONVERSION CONVERSION
ERROR? ERROR?
NO NO
YES YES
RESULT RESULT
< -32768? > 32767?
NO
COMPLEMENT SET ERROR
THE INDICATOR NO
RESULT
END
[email protected]
WWW.IRANMEET.COM
٢٠٩
DECIMAL NO
POINT?
YES
RECORD
DECIMAL
COUNT
POINTER=
POINTER+1
NO
CHARACTER
A DIGIT?
YES
MULTIPLY
PARTIAL RESULT
BY 10
CONVERT ASCII
CODE TO BINARY
DIGIT
RESULT=
RESULT+DIGIT
RETURN
[email protected]
WWW.IRANMEET.COM
٢١٠
[email protected]
WWW.IRANMEET.COM
٢١١
[email protected]
WWW.IRANMEET.COM
٢١٢
ﺑﻪ ﻣﻨﻈﻮر ﻧﻤﺎﻳﺶ ﻧﺘﺎﻳﺞ روي ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ ﻳﺎ ﭼﺎپ آﻧﻬﺎ ﺑﺎ اﺳﺘﻔﺎده از دﺳﺘﮕﺎه
ﺑﺮﻧﺎﻣﻪ زﻳـﺮ اﻳـﻦ ﻛـﺎر را.ﺗﺒﺪﻳﻞ ﻧﻤﻮد ASCII ﭼﺎﭘﮕﺮ ﺑﺎﻳﺴﺘﻲ اﺑﺘﺪا آﻧﻬﺎ را از ﺑﺎﻳﻨﺮي ﺑﻪ
.اﻧﺠﺎم ﻣﻲدﻫﺪ
[email protected]
WWW.IRANMEET.COM
٢١٣
PUBLIC BIN_ASCII
CSEG SEGMENT PARA PUBLIC ′CODE′
ASSUME CS: CSEG
BIN_ASCII PROC FAR
PUSH DX ; Save the caller’s registers
PUSH BX
PUSH SI
PUSH AX
MOV BX, DX ; Put offset in BX
MOV CX, 6 ; Fill buffer with spaces
FILL_ BUFF : MOV BYTE PTR [BX], ′ ′
INC BX
LOOP FILL_BUFF
MOV SI, 10 ;Get ready o divide by 10
OR AX, AX ; If value I negative,
JNS CLR_DVD
NEG AX ; make if positive
CLR_DVD: SUB DX, DX ; Clear upper half of dividend
DIV SI ; Divide AX by 10
ADD DX, ′0′ ; Convert remainder to ASCII digit
DEC BX ; Back up through buffer
MOV [BX], DL ; Store char. In the string
INC CX ;Count converted character
OR AX,AX ; All done?
JNZ CLR_DVD ; If not, get next digit
POP AX ; Yes. Get original value
[email protected]
WWW.IRANMEET.COM
٢١٤
در اﻳﻦ ﻓﺼﻞ ﭘﺸﺘﻪ ﻳﺎ Stackﺗﻌﺮﻳﻒ ﮔﺮدﻳﺪه ﭘﺸﺘﻪ ﺧﺎﺻـﻴﺖ LIFOدارد ﻳﻌﻨـﻲ
آﺧﺮﻳﻦ ورودي اوﻟﻴﻦ ﺧﺮوﺟﻲ از ﭘﺸﺘﻪ ﻣﻲﺑﺎﺷﺪ .ﭘﺸﺘﻪ در ﺣﻘﻴﻘﺖ ﻗـﺴﻤﺘﻲ از ﺣﺎﻓﻈـﻪ
را اﺷﻐﺎل ﻣﻲﻧﻤﺎﻳﺪ .ﻋﻤﻠﻴﺎﺗﻲ ﻛﻪ روي ﭘـﺸﺘﻪ اﻧﺠـﺎم ﻣـﻲﺷـﻮد ﻋﺒﺎرﺗـﺴﺖ از PUSHو
.POP
در اﻳﻦ ﻏﺼﻞ ﻫﻤﭽﻨﻴﻦ ﻧﺤﻮه ﺗﻌﺮﻳﻒ ﻣـﺎﻛﺮو داده ﺷـﺪه ﻫـﺮ ﻣـﺎﻛﺮو ﺑـﺎ ﻛﻠﻤـﻪ
macroﺷﺮوع و ﺑﻪ endmﺧﺘﻢ ﻣﻲﺷﻮد .از ﻣﺎﻛﺮوﻫﺎ ﺑﺮاي ﺳﻬﻮﻟﺖ در ﻧﻮﺷﺘﻦ و ﺗﺎﻳـﭗ
ﺑﺮﻧﺎﻣﻪﻫﺎ اﺳﺘﻔﺎده ﻣﻲﺷﻮد .ﻣﺎﻛﺮوﻫﺎ را در اﺑﺘﺪاي ﺑﺮﻧﺎﻣﻪ ﺑﺎﻳﺴﺘﻲ ﺗﻌﺮﻳـﻒ ﻧﻤـﻮد .اﻣﻜـﺎن
اﺳﺘﻔﺎده از روال ﻧﻴﺰ در زﺑﺎن اﺳﻤﺒﻠﻲ وﺟـﻮد دارد .روالﻫـﺎ در ﻣﻮﻗـﻊ اﺟـﺮاي ﺑﺮﻧﺎﻣـﻪ
ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮﻧﺪ .ﺗﻔﺎوت ﻣﺎﻛﺮو و روال در اﻳﻨﺴﺖ ﻛﻪ روال در زﻣﺎن اﺟﺮاي ﺑﺮﻧﺎﻣـﻪ
ﻓﺮاﺧﻮاﻧﻲ ﻣﻲﺷﻮد در ﺻﻮرﺗﻴﻜﻪ ﻣﺎﻛﺮوﻫﺎ در زﻣـﺎن ﺗﺮﺟﻤـﻪ ﺟـﺎﻳﮕﺰﻳﻦ ﻣـﻲﮔﺮدﻧـﺪ .از
ﺗﻌﺪادي ﻋﻤﻠﮕﺮ در ﻣﺎﻛﺮوﻫﺎ اﺳﺘﻔﺎده ﻣﻲﺷﻮد ﻛﻪ در اﻳﻦ ﻓﺼﻞ ﺑﺤﺚ ﮔﺮدﻳـﺪه .ﻣﻌﻤـﻮﻻً
در اﻛﺜﺮ ﺑﺮﻧﺎﻣﻪﻫﺎ از وﻗﻔﻪ اﺳﺘﻔﺎده ﻣـﻲﮔـﺮدد .در اﻳـﻦ ﻓـﺼﻞ ﺗﻮاﺑـﻊ ﻣﺮﺑـﻮط ﺑـﻪ وﻗﻔـﻪ
ASCII ﺑﺼﻮرت ﻛﺎﻣﻞ ﺑﺤﺚ ﺷﺪه اﺳﺖ .ﺑﺮاي دادن دادهﻫﺎ ﺑﻪ ﻛﺎﻣﭙﻴﻮﺗﺮ ﺑﺎﻳﺴﺘﻲ از ﻓـﺮم
آﻧﻬﺎ را ﺑﻪ ﺑﺎﻳﻨﺮي ﺗﺒﺪﻳﻞ ﻧﻤﻮد و ﻫﻤﭽﻨﻴﻦ ﺑﺮاي ﻧﻤﺎﻳﺶ دادهﻫﺎ ﺑﺎﻳـﺴﺘﻲ از ﻓـﺮم ﺑـﺎﻳﻨﺮي
آﻧﻬﺎ را ﺑﻪ ﺷﻜﻞ ASCIIﺗﺒﺪﻳﻞ ﻧﻤﻮد ﻛﻪ ﺑﺮﻧﺎﻣﻪﻫﺎي ﻣﺨﺼﻮص آﻧﻬﺎ در اﻳﻦ ﻓﺼﻞ ﺗﻬﻴﻪ و
ﻧﻮﺷﺘﻪ ﺷﺪه اﺳﺖ .ﻫﻤﭽﻨـﻴﻦ ﻧﺤـﻮه ﻣﺤﺎﺳـﺒﻪ زﻣـﺎن اﺟـﺮاي ﻳـﻚ ﺑﺮﻧﺎﻣـﻪ ﻧﻴـﺰ ﺑﺤـﺚ
ﮔﺮدﻳﺪه اﺳﺖ.
[email protected]
WWW.IRANMEET.COM
٢١٥
aﺗﻤﺮﻳﻦ
Interrupt Vector-8ﭼﻴﺴﺖ؟
-13رواﻟﻲ ﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر را ﭘﺎك ﻧﻤﻮده و ﻣﻜﺎن ﻧﻤﺎ را در ﺳﻄﺮ 10ﺳﺘﻮن
40ﻗﺮار داده آﻧﮕﺎه ﻛﺎرﻛﺘﺮ * را ﻧﻤﺎﻳﺶ دﻫﺪ.
-14ﻳﻚ Macroﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﻘﺪار Nاز ﻧﻮع ﺑﺎﻳﺖ را ﮔﺮﻓﺘﻪ ﻣﺠﻤﻮع زﻳﺮا را ﻣﺤﺎﺳـﺒﻪ
1+2+3+…+N ﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
٢١٦
-18ﻳﻚ Macroﺑﻨﻮﻳﺴﻴﺪ ﻛﻪ ﻣﺸﺨﺺ ﻧﻤﺎﻳﺪ ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ Nاز ﻧﻮع wordاول
ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺧﻴﺮ؟
Nاز ﻧــﻮع wordو ﻣﺜﺒــﺖ را ﮔﺮﻓﺘــﻪ , M -19ﻳــﻚ Macroﺑﻨﻮﻳــﺴﻴﺪ ﻛــﻪ دو ﻣﻘــﺪار
ﻛﻮﭼﻜﺘﺮﻳﻦ ﻣﻀﺮب ﻣﺸﺘﺮك آﻧﻬﺎ را ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
ﻳﻚ ﻋﺪد ﺻﺤﻴﺢ و ﻣﺜﺒﺖ و ﻣﺠﺬور ﻛﺎﻣﻞ ﺑﺎﺷـﺪ ﻳـﻚ Macroﺑﺪﻫﻴـﺪ ﻛـﻪ N -20اﮔﺮ
ﺟﺬر آﻧﺮا ﻣﺤﺎﺳﺒﻪ ﻧﻤﺎﻳﺪ.
[email protected]
WWW.IRANMEET.COM
٢١٧
ﻓﺼﻞ ﻫﺸﺘﻢ
ﻋﻤﻠﻴﺎت ﭘﺮدازش رﺷﺘﻪﻫﺎ
ﻫﺪف ﻛﻠﻲ
ﻣﻌﺮﻓﻲ رﺷﺘﻪ ﻫﺎ و ﭘﺮدازش آﻧﻬﺎ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻔﺎﻫﻴﻢ زﻳﺮ آﺷﻨﺎ ﺧﻮاﻫﻴﺪ ﺷﺪ.
-1ﺗﻌﺮﻳﻒ رﺷﺘﻪ ).( String
-2اﻧﺘﻘﺎل ﻳﺎ ﺟﺎﺑﺠﺎﺋﻲ رﺷﺘﻪﻫﺎ.
-3ﻣﻘﺎﻳﺴﻪ رﺷﺘﻪﻫﺎ.
-4ﺑﺮرﺳﻲ ﻳﺎ ﺟﺴﺘﺠﻮي رﺷﺘﻪﻫﺎ.
-5ﺳﺎﻳﺮ ﻋﻤﻠﻴﺎت ﻣﺮﺑﻮط ﺑﻪ رﺷﺘﻪﻫﺎ.
[email protected]
WWW.IRANMEET.COM
٢١٨
-8-1رﺷﺘﻪ )(String
رﺷﺘﻪ ﻋﺒﺎرت اﺳﺖ از ﻳﻚ ﺑﻠﻮك ﭘﺸﺖ ﺳﺮ ﻫـﻢ از ﺑﺎﻳـﺖﻫـﺎ ﻳـﺎ wordﻫـﺎ در
ﺣﺎﻓﻈﻪ اﺻﻠﻲ ﻛﺎﻣﭙﻴﻮﺗﺮ .ﻃﻮل رﺷﺘﻪ ﻣﻲﺗﻮاﻧﺪ ﺗﺎ 64Kﺑﺎﻳﺖ ﺑﺎﺷﺪ .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷـﺖ
ﻛﻪ ﺑﺎ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎﺋﻲ ﻛﻪ ﺗﺎﻛﻨﻮن ﺑﺤﺚ ﻧﻤﻮدهاﻳﻢ ﻣﻲﺗﻮان ﻋﻤﻠﻴـﺎت روي رﺷـﺘﻪﻫـﺎ را
اﻧﺠﺎم داد .وﻟﻲ اﺳـﺘﻔﺎده از دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي ﭘـﺮدازش رﺷـﺘﻪاي ﻛﺎرآﻣـﺪﺗﺮ ﻣـﻲﺑﺎﺷـﺪ.
ﻋﻤﻠﻴﺎت ﭘﺮدازش رﺷﺘﻪاي ﻋﺒﺎرﺗﻨﺪ از:
Dataدر ﺑﻌــﻀﻲ از segment ﻫﻤﺎﻧﻄﻮرﻳﻜــﻪ ﻗــﺒﻼ ﺑﻴ ـﺎن ﮔﺮدﻳــﺪ ﻋــﻼوه ﺑــﺮ
Extra segment دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﭘﺮدازش رﺷﺘﻪاي اﺳـﺘﻔﺎده از segmentدﻳﮕـﺮي ﺑﻨـﺎم
ﻧﻴﺰ ﺿﺮوري ﻣﻲﺑﺎﺷﺪ.
M
EXTRA_SEG ENDS
-8-1-1دﺳﺘﻮراﻟﻌﻤﻞ MOVS
از اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺮاي ﻛﭙﻲ ﻧﻤﻮدن ﻳﻚ رﺷﺘﻪ از ﻣﺤﻠﻲ از ﺣﺎﻓﻈﻪ ﺑـﻪ ﻣﺤـﻞ
دﻳﮕﺮي از ﺣﺎﻓﻈﻪ اﺳﺘﻔﺎده ﻣﻲﮔﺮدد .رﺷﺘﻪاي ﻛﻪ از آن ﻣﻲﺧـﻮاﻫﻴﻢ ﻛﭙـﻲ ﺗﻬﻴـﻪ ﻧﻤـﺎﺋﻴﻢ
[email protected]
WWW.IRANMEET.COM
٢١٩
ﻋﻤﻞ ﺟﺎﺑﻪﺟﺎﺋﻲ از اوﻟﻴﻦ ﻋﻨﺼﺮ ﺑﻪ ﻃﺮف آﺧﺮﻳﻦ ﻋﻨﺼﺮ ﻣﻲﺑﺎﺷﺪ ﻳﺎ ﺑﻠﻌﻜـﺲ .ﭼﻨﺎﻧﭽـﻪ
ﻣﻘﺪار DFﺑﺮاﺑﺮ ﺑﺎ ﺻﻔﺮ ﺑﺎﺷﺪ ﻋﻤﻞ ﺟﺎﺑﻪﺟﺎﺋﻲ از اوﻟﻴﻦ ﻋﻨﺼﺮ ﺑﻪ ﻃﺮف آﺧﺮﻳﻦ ﻋﻨـﺼﺮ
و ﭼﻨﺎﻧﭽﻪ ﻣﻘﺪار DFﺑﺮاﺑﺮ ﺑﺎ ﻳﻚ ﺑﺎﺷﺪ ﻋﻤﻞ ﺟﺎﺑﻪﺟﺎﺋﻲ از آﺧﺮﻳﻦ ﻋﻨﺼﺮ ﺑﻄﺮف اوﻟﻴﻦ
ﻋﻨﺼﺮ اﻧﺠﺎم ﻣﻲﺷﻮد.
ﻣﺜﺎل 8-1
MOV SI, OFFSET SOURCE_STR
MOV DI, OFFSET DEST _STR
; CLD Forward movement
MOVSB
ﻗـﺮار داده و SI دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﻓﻮق آدرس ﺷﺮوع رﺷﺘﻪ ﻣﺒـﺪاء را در ﺛﺒـﺎت
آدرس ﺷﺮوع رﺷﺘﻪ ﻣﻘﺼﺪ را در ﺛﺒﺎت DIﻗﺮار داده و ﺟﻬﺖ ﺣﺮﻛﺖ از اوﻟـﻴﻦ ﻋﻨـﺼﺮ
ﺑﺎﻋﺚ ﻣﻲﺷـﻮد MOVSB ﺑﻪ ﻃﺮف آﺧﺮﻳﻦ ﻋﻨﺼﺮ ﻣﺸﺨﺺ ﻧﻤﻮده اﺳﺖ .دﺳﺘﻮراﻟﻌﻤﻞ
ﻛﻪ ﻳﻚ ﻋﻨﺼﺮ از رﺷﺘﻪ ﻣﺒﺪاء ﻛﻪ در آدرس DS:SIﻗـﺮار دارد ﺑـﻪ آدرس ES:DIﻛﭙـﻲ
ﮔﺮدد و ﻣﻘﺪار DIو SIﻳﻚ واﺣﺪ اﻓﺰاﻳﺶ ﻳﺎﺑﻨﺪ.
[email protected]
WWW.IRANMEET.COM
٢٢٠
DF=0 *
+
-
/
a
DI ﺟﻬﺖ ﭘﺮدازش b SI
o
o
k
رﺷﺘﻪ ﻣﻘﺼﺪ رﺷﺘﻪ ﻣﺒﺪأ
Extra segment Data segment
[email protected]
WWW.IRANMEET.COM
٢٢١
DF=1 *
+
-
/
a
DI ﺟﻬﺖ ﭘﺮدازش b SI
o
o
k
رﺷﺘﻪ ﻣﻘﺼﺪ رﺷﺘﻪ ﻣﺒﺪأ
DF=1 *
+
-
/
a
DI ﺟﻬﺖ ﭘﺮدازش b SI
o
o
k k
رﺷﺘﻪ ﻣﻘﺼﺪ رﺷﺘﻪ ﻣﺒﺪأ
ﺣﺎل ﺑﺮاي اﻧﺘﻘﺎل ﺳﺎﻳﺮ ﻋﻨﺎﺻﺮ رﺷﺘﻪ ﺑﺎﻳﺴﺘﻲ ﺗﻌﺪاد ﻋﻨﺎﺻـﺮ رﺷـﺘﻪ را در ﺛﺒـﺎت
ﻗﺮار داد و از ﭘﻴﺸﻮﻧﺪ REPاﺳﺘﻔﺎده ﻧﻤﻮد. CX
[email protected]
WWW.IRANMEET.COM
٢٢٢
ﺗﺎ ﻣﺎداﻣﻴﻜﻪ ﻣﻘﺪار CXﻣﺨﺎﻟﻒ ﺻـﻔﺮ ﻣـﻲﺑﺎﺷـﺪ ﺑﺎﻋـﺚ اﺟـﺮاي REP ﭘﻴﺸﻮﻧﺪ
اﺟـﺮاي CX دﺳﺘﻮراﻟﻌﻤﻞ MOVSBﻣﻲﮔﺮدد .ﺑﻪ ﻣﺤﺾ ﺻـﻔﺮ ﺷـﺪن ﻣﻘـﺪار ﺛﺒـﺎت
دﺳﺘﻮراﻟﻌﻤﻞ MOVSBﻣﺘﻮﻗﻒ ﻣـﻲﮔـﺮدد .ﻫﻤـﺎﻧﻄﻮر ﻛـﻪ ﻗـﺒﻼً ﮔﻔﺘـﻪ ﺷـﺪ ﺑـﻪ ﺟـﺎي
دﺳﺘﻮراﻟﻌﻤﻞﻫﺎي
[email protected]
WWW.IRANMEET.COM
٢٢٣
ﺑﻪ SOURCE_D ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺑﺎﻋﺚ ﻛﭙﻲ ﺷﺪن 100ﺑﺎﻳﺖ از رﺷﺘﻪاي ﺑﻨﺎم
DEST_Dﻣﻲﺷﻮد .ﻫﺮ دو رﺷﺘﻪ در data segmentﻗﺮار دارﻧﺪ.
PUSH DS
POP ES
CLD
LEA SI, SOURCE_D
LEA DI, DEST_D
MOV CX, 100
REP MOVSB
-8-1-2دﺳﺘﻮراﻟﻌﻤﻞ STOS
اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻳﻚ ﺑﺎﻳﺖ ﻳﺎ ﻳﻚ wordرا از ﺛﺒـﺎت ALﻳـﺎ
ﺛﺒﺎت AXﺑﻪ ﻳﻚ ﻋﻨﺼﺮ رﺷﺘﻪ ﻣﻘـﺼﺪ ﻣﻨﺘﻘـﻞ ﻧﻤﺎﻳـﺪ .ﺷـﻜﻞ ﻛﻠـﻲ اﻳـﻦ دﺳـﺘﻮراﻟﻌﻤﻞ
ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
STOS
اﻟﻒ( اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺮروي ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
word ب(ﭼﻨﺎﻧﭽﻪ رﺷﺘﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ از دﺳﺘﻮراﻟﻌﻤﻞ STOSBو ﭼﻨﺎﻧﭽﻪ از ﻧـﻮع
ﺑﺎﺷﺪ از دﺳﺘﻮراﻟﻌﻤﻞ STOSWاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
٢٢٤
ج( ﻣﻘﺪاري ﻛﻪ در رﺷﺘﻪ ﻗﺮار ﻣﻲﮔﻴﺮد ﭼﻨﺎﻧﭽﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ در ﺛﺒـﺎت ALﻗـﺮار
داده ﻣﻲﺷﻮد .و اﮔﺮ از ﻧﻮع wordﺑﺎﺷﺪ در ﺛﺒﺎت AXﻗﺮار داده ﻣﻲﺷﻮد.
و STDﺑﺮاي ﻣﺸﺨﺺ ﻧﻤﻮدن ﺟﻬﺖ ﭘﺮدازش ﻣـﻲﺗـﻮان CLD د( از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي
اﺳﺘﻔﺎده ﻧﻤﻮد.
ه( از ﭘﻴﺸﻮﻧﺪ REPﻧﻴﺰ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد.
DI extraﺗﻌﺮﻳﻒ ﻧﻤﻮد و آدرس ﺷﺮوع آﻧﺮا در ﺛﺒـﺎت segment ز( رﺷﺘﻪ را ﺑﺎﻳﺴﺘﻲ در
ﻗﺮار داد.
ﻣﺜﺎل 8-2
)?( DEST_STR DB 100 DUP
MOV AL, ′*′
CLD .
LEA DI, DEST_STR
STOSB
0
1
2
DI AL
′*′
M
99
DEST_STR رﺷﺘﻪ
[email protected]
WWW.IRANMEET.COM
٢٢٥
* 0
1
DI AL
′*′
M
99
CX از ﭘﻴﺸﻮﻧﺪ REPﻧﻴﺰ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد .اﻳﻦ ﭘﻴﺸﻮﻧﺪ ﻣﺎداﻣﻴﻜـﻪ ﻣﺤﺘـﻮي
ﻣﺨﺎﻟﻒ ﺻﻔﺮ ﻣﻲﺑﺎﺷﺪ ﺑﺎﻋﺚ اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞ STOSBﻣﻲﮔﺮدد.
ﻣﺜﺎل 8-3
DSTR DB )?(100 DUP
MOV CX , 50
MOV AL, ′*′
MOV DI, OFFSET DSTR
CLD
REP STOSB
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق ﺑﺎﻋﺚ ﻣﻲﺷﻮد ﻛﻪ ﻣﻘﺪار 50ﻋﻨﺼﺮ اول رﺷﺘﻪ DSTRﺑﺮاﺑﺮ ﺑـﺎ
ﻛﺎرﻛﺘﺮ * ﮔﺮدﻧﺪ.
ﻣﺜﺎل 8-4
CLD .
LEA DI, W_STRING
MOV AX,0
MOV CX, 200
REP STOSW
[email protected]
WWW.IRANMEET.COM
٢٢٦
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق ﻣﻘﺪار دوﻳﺴﺖ wordاول رﺷﺘﻪ W_STRINGرا ﻣﻌﺎدل ﺻﻔﺮ
ﻗﺮار ﻣﻲدﻫﺪ .دﻗﺖ داﺷﺘﻪ ﺑﺎﺷﻴﺪ ﻛﻪ در اﻳﻨﺠﺎ اﻓﺰاﻳﺶ DIﺑﺎﻧـﺪازه دو واﺣـﺪ ﻣـﻲﺑﺎﺷـﺪ
ﭼﻮن رﺷﺘﻪ از ﻧﻮع wordﻣﻲﺑﺎﺷﺪ.
-8-1-3دﺳﺘﻮراﻟﻌﻤﻞ LODS
اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻳﻚ ﻋﻨﺼﺮ رﺷﺘﻪ ﻣﺒﺪاء را در ALﻳﺎ AXﻗﺮار ﻣﻲدﻫـﺪ ﺑـﺴﺘﻪ
ﺑﻪ اﻳﻨﻜﻪ رﺷﺘﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ ﻳﺎ .wordﺷﻜﻞ ﻛﻠﻲ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﻋﺒﺎرﺗﺴﺖ از
LODS
اﻟﻒ( ﭼﻨﺎﻧﭽﻪ رﺷﺘﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ از LODSBو ﭼﻨﺎﻧﭽـﻪ از ﻧـﻮع wordﺑﺎﺷـﺪ از
LODSWاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ب( اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺮ روي ﻫﻴﭻ ﻓﻠﮕﻲ اﺛﺮ ﻧﺪارد.
ج( اﺳﺘﻔﺎده از ﭘﻴﺸﻮﻧﺪ REPﺑﺎ اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ اﻣﻜﺎن ﭘﺬﻳﺮ ﻣﻲﺑﺎﺷﺪ.
SI د( رﺷﺘﻪ ﺑﺎﻳﺴﺘﻲ در data segmentﺗﻌﺮﻳﻒ ﮔﺮدد و آدرس ﺷـﺮوع رﺷـﺘﻪ در ﺛﺒـﺎت
ﻗﺮار داده ﻣﻲﺷﻮد.
ﻣﺜﺎل 8-5
LEA SI, SOURCE_STR
LODSB
-8-1-4دﺳﺘﻮراﻟﻌﻤﻞ CMPS
اﻳـــﻦ دﺳـــﺘﻮراﻟﻌﻤﻞ دو رﺷـــﺘﻪ ﻣﺒـــﺪاء و ﻣﻘـــﺼﺪ را ﺑـــﺎ ﻫـــﻢ ﻣﻘﺎﻳـــﺴﻪ
ﻣﻲﻧﻤﺎﻳﺪ.دﺳﺘﻮراﻟﻌﻤﻞ CMPSﻣﺎﻧﻨﺪ دﺳﺘﻮراﻟﻌﻤﻞ CMPﻋﻤﻞ ﻣـﻲﻧﻤﺎﻳـﺪ.ﻋﻨـﺼﺮ رﺷـﺘﻪ
ﻣﺒﺪاء را از ﻋﻨﺼﺮ ﻣﺘﻨﺎﻇﺮ رﺷﺘﻪ ﻣﻘﺼﺪ ﻛﻢ ﻧﻤﻮده و ﻓﻠﮓﻫﺎ را ﺑﺮاﺳﺎس ﻧﺘﻴﺠـﻪ ﺑﺪﺳـﺖ
[email protected]
WWW.IRANMEET.COM
٢٢٧
آﻣﺪه ﺗﻨﻈﻴﻢ ﻣﻲﻧﻤﺎﻳﺪ .اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺎﻋـﺚ ﺗﻐﻴﻴـﺮ ﻣﻘـﺪار ﻫﻴﭽﻜـﺪام از ﻋﻤﻠﻮﻧـﺪﻫﺎ
ﻧﻤﻲﺷﻮد .ﺷﻜﻞ ﻛﻠﻲ دﺳﺘﻮراﻟﻌﻤﻞ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
CMPS
اﻟﻒ( ﭼﻨﺎﻧﭽﻪ رﺷﺘﻪﻫﺎ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﻨﺪ از CMPSBو ﭼﻨﺎﻧﭽﻪ از ﻧـﻮع wordﺑﺎﺷـﻨﺪ
از CMPSWاﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ب( از ﭘﻴﺸﻮﻧﺪﻫﺎي REPEﻳﺎ REPZﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد.
ج(از ﭘﻴﺸﻮﻧﺪﻫﺎي REPNEﻳﺎ REPNZﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد.
د( رﺷﺘﻪ ﻣﺒﺪاء را ﺑﺎﻳﺴﺘﻲ در data segmentﺗﻌﺮﻳﻒ ﻧﻤﻮد و آدرس ﺷﺮوع آﻧﺮا در ﺛﺒﺎت
SIﻗﺮار داد.
ه( رﺷﺘﻪ ﻣﻘﺼﺪ را ﺑﺎﻳﺴﺘﻲ در Extra Segmentﺗﻌﺮﻳﻒ ﻧﻤﻮده و آدرس ﺷـﺮوع آﻧـﺮا در
ﺛﺒﺎت DIﻗﺮار داد.
ﻣﺜﺎل 8-6
MOV SI, OFFSET SOURCE_STR
MOV DI, OFFSET DEST_STR
CMPSB
[email protected]
WWW.IRANMEET.COM
٢٢٨
ﻣﺜﺎل 8-7
LEA SI, STR1
LEA DI, STR2
MOV CX, 100
CLD .
REPE CMPSB
JZ FOUND
.
M
FOUND .
.
M
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻓﻮق 100ﺑﺎﻳـﺖ از دو رﺷـﺘﻪ STR1و STR2را ﺑـﺎ ﻫـﻢ ﻣﻘﺎﻳـﺴﻪ
repeatﻳــﺎ not equal ﻣــﻲﻧﻤﺎﻳــﺪ .از ﭘﻴــﺸﻮﻧﺪ REPNEﻳــﺎ REPNZﺑــﺎ ﻣﻔﻬــﻮم
repeatﺑــﺎ دﺳــﺘﻮراﻟﻌﻤﻞ CMPSﻣــﻲﺗــﻮان اﺳــﺘﻔﺎده ﻧﻤــﻮد .ﺷــﺮط ﺗﻜــﺮار not zero
دﺳﺘﻮراﻟﻌﻤﻞ CMPSآن اﺳﺖ ﻛﻪ CX < > 0 and ZF=0ﺑﺎﺷـﺪ .ﻗﻄﻌـﻪ ﺑﺮﻧﺎﻣـﻪ زﻳـﺮ دو
رﺷﺘﻪ STRG1و STRG2را ﺑﺎ ﻫﻢ ﻣﻘﺎﻳﺴﻪ ﻣﻲﻛﻨﺪ در ﺻﻮرﺗﻴﻜﻪ ﻣﺴﺎوي ﺑﺎﺷﻨﺪ ﻛﻨﺘـﺮل
ﺑﻪ SAMEﻣﻨﺘﻘﻞ ﻣﻲﮔﺮدد .ﺻﻔﺖ LENGTHﻣﺸﺨﺺ ﻛﻨﻨﺪه ﻃﻮل رﺷﺘﻪ ﻣﻲﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
٢٢٩
-8-1-5دﺳﺘﻮراﻟﻌﻤﻞ SCAS
از دﺳﺘﻮراﻟﻌﻤﻞ SCASﺑﺮاي ﺟﺴﺘﺠﻮي ﻳﻚ رﺷـﺘﻪ ﺟﻬـﺖ وﺟـﻮد داﺷـﺘﻦ ﻳـﺎ
ﻧﺪاﺷﺘﻦ ﻳﻚ ﻋﻨﺼﺮ رﺷﺘﻪاي ﻣﻌﻴﻦ ﺑﻜﺎر ﻣﻲرود .ﺷﻜﻞ ﻛﻠﻲ ﺑﺼﻮرت زﻳﺮ ﻣﻲﺑﺎﺷﺪ.
SCAS
extra segment اﻟﻒ( رﺷﺘﻪ ﻣﻮرد ﺟﺴﺘﺠﻮ ﺑﺎﻳﺴﺘﻲ رﺷﺘﻪ ﻣﻘﺼﺪ ﺑﺎﺷﺪ .ﻳﻌﻨـﻲ رﺷـﺘﻪ در
ﺗﻌﺮﻳﻒ ﺷﺪه و آدرس ﺷﺮوع آن در ﺛﺒﺎت DIﻗﺮار ﮔﻴﺮد.
ب( از ﭘﻴﺸﻮﻧﺪﻫﺎي REPEو REPNEﻣﻲﺗﻮان ﺑﺮاي اﻳﻦ دﺳﺘﻮراﻟﻌﻤﻞ اﺳﺘﻔﺎده ﻧﻤﻮد.
و در ﺻـﻮرﺗﻴﻜﻪ از AL ج( ﻋﻨﺼﺮ ﻣﻮرد ﺟﺴﺘﺠﻮ ﭼﻨﺎﻧﭽﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ در ﺛﺒﺎت
ﻧﻮع wordﺑﺎﺷﺪ در ﺛﺒﺎت AXﻗﺮار داده ﻣﻲﺷﻮد.
د( از ﻓﻠﮓ DFﺑﺮاي ﺗﻌﻴﻴﻦ ﺟﻬﺖ ﭘﺮدازش رﺷﺘﻪ اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
SCASW ه(ﭼﻨﺎﻧﭽﻪ رﺷﺘﻪ از ﻧﻮع ﺑﺎﻳﺖ ﺑﺎﺷﺪ SCASBو ﭼﻨﺎﻧﭽﻪ از ﻧﻮع wordﺑﺎﺷﺪ از
اﺳﺘﻔﺎده ﻣﻲﮔﺮدد.
ﻣﺜﺎل 8-8
ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ زﻳﺮ در رﺷﺘﻪ STRGﺑﻪ ﺟﺴﺘﺠﻮي * ﻣﻲﭘﺮدازد.
ﻛﺎرﻛﺘﺮي ﻛﻪ ﺑﻪ ﻛﺎرﻛﺘﺮ ﻓﺎﺻﻠﻪ ﺧﺘﻢ ﺷﺪه را 80 دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ ﻳﻚ رﺷﺘﺔ
ﺟﺴﺘﺠﻮ ﻧﻤﻮده در ﺻـﻮرﺗﻴﻜﻪ ﻛﻠﻴـﻪ ﻋﻨﺎﺻـﺮ رﺷـﺘﻪ ﻛـﺎرﻛﺘﺮ ﻓﺎﺻـﻠﻪ ﺑﺎﺷـﺪ ﻛﻨﺘـﺮل ﺑـﻪ
NOT_FOUNDﻣﻨﺘﻘﻞ ﮔﺮدﻳﺪه در ﻏﻴﺮ اﻳﻨﺼﻮرت ﺑﺎ اوﻟﻴﻦ ﻋﻨﺼﺮ ﻣﺨﺎﻟﻒ blankﺷﺮوع
ﻧﻤﻮده و ﻳﻚ زﻳﺮ رﺷﺘﻪ 30ﻛﺎرﻛﺘﺮي از رﺷـﺘﻪ اوﻟﻴـﻪ را ﺑـﻪ رﺷـﺘﻪ SYMBOLاﻧﺘﻘـﺎل
ﻣﻲدﻫﺪ.
[email protected]
WWW.IRANMEET.COM
٢٣٠
[email protected]
WWW.IRANMEET.COM
٢٣١
***---***---***---***---***---***---***---
***---
ﺣﺎل
SI
M
[email protected]
WWW.IRANMEET.COM
٢٣٢
[email protected]
WWW.IRANMEET.COM
٢٣٣
aﺗﻤﺮﻳﻦ
* -5رﺷﺘﻪ 100ﻛﺎراﻛﺘﺮي STRGرا در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻛﻠﻴـﻪ ﻛﺎراﻛﺘﺮﻫـﺎي blankآﻧـﺮا ﺑـﻪ
ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-6رﺷﺘﻪ 100ﻛﺎﻛﺘﺮي STRGرا در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻠﻴـﻪ ﻛﺎراﻛﺘﺮﻫـﺎي آﻧـﺮا ﺑـﻪ * ﺗﺒـﺪﻳﻞ
ﻧﻤﺎﺋﻴﺪ.
& -7رﺷﺘﻪ 100ﻛﺎراﻛﺘﺮي STRGرا در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ اوﻟﻴﻦ ﻛﺎراﻛﺘﺮ * در رﺷـﺘﻪ را ﺑـﻪ
ﺗﺒﺪﻳﻞ ﻧﻤﺎﺋﻴﺪ.
-10رﺷﺘﻪ 50ﻛﺎراﻛﺘﺮي STRGرا در ﻧﻈﺮ ﺑﮕﻴﺮﻳﺪ ﻛﻠﻴﻪ ﻋﻨﺎﺻﺮ * در آﻧﺮا ﺣﺬف ﻧﻤﺎﺋﻴﺪ.
)ﻛﺎراﻛﺘﺮ ﺑﻌﺪي را ﺟﺎﻳﮕﺰﻳﻦ * ﻧﻤﺎﺋﻴﺪ(
[email protected]
WWW.IRANMEET.COM
٢٣٣
ﻓﺼﻞ ﻧﻬﻢ
ﺑﺮﻧﺎﻣﻪﻫﺎي ﻧﻤﻮﻧﻪ
ﻫﺪف ﻛﻠﻲ
ﻧﺤﻮه ﻧﻮﺷﺘﻦ و اﻳﺠﺎد ﺑﺮﻧﺎﻣﻪ ﻣﻌﺮﻓﻲ و ﭼﻨﺪ ﺑﺮﻧﺎﻣﻪ ﻧﻤﻮﻧﻪ.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻄﺎﻟﺐ زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ.
-1اﺟﺰاي ﻣﺨﺘﻠﻔﻪ ﻳﻚ ﺑﺮﻧﺎﻣﻪ.
-2ﻧﺤﻮه ﻧﻮﺷﺘﻦ ﻳﻚ ﺑﺮﻧﺎﻣﻪ و اﺟﺮاي آن.
[email protected]
WWW.IRANMEET.COM
٢٣٤
-9-1اﺟﺰاي ﺑﺮﻧﺎﻣﻪ
ﻫﻤﺎﻧﻄﻮرﻳﻜﻪ ﮔﻔﺘﻪ ﺷﺪ در ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ ﻣـﻲﺗـﻮان از ﭼﻬـﺎر ﺳـﮕﻤﻨﺖ زﻳـﺮ
اﺳﺘﻔﺎده ﻧﻤﻮد.
STACK SEGMENT
DATA SEGMENT
EXTRA SEGMENT
CODE SEGMENT
DATA در STACK SEGMENTﭘﺸﺘﻪ ﻣﻮرد ﻧﻴﺎز ﺑﺮﻧﺎﻣﻪ اﻋﻼن ﻣـﻲﮔـﺮدد .در
SEGMENTﻛﻠﻴﺔ ﻣﺘﻐﻴﺮﻫﺎي ﻣﻮرد ﻧﻴﺎز ﺑﺮﻧﺎﻣﻪ اﻋﻼن و ﺗﻌﺮﻳﻒ ﻣﻲﺷﻮد.
EXTRAﻛﻠﻴــﻪ ﻣﺘﻐﻴﺮﻫــﺎي ﺑﺮﻧﺎﻣــﻪ ﻛــﻪ ﺟﻬــﺖ ﭘــﺮدازش SEGMENT در
دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي رﺷﺘﻪاي ﻣﻮرد ﻧﻴﺎز ﻣﻲﺑﺎﺷﺪ اﻋﻼن و ﺗﻌﺮﻳﻒ ﻣﻲﮔﺮدد.
CODE SEGMENTﺷﺎﻣﻞ ﻛﻠﻴﻪ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ﺑﺮﻧﺎﻣﻪ ﻣﻲﺑﺎﺷﺪ.
در زﺑﺎن اﺳﻤﺒﻠﻲ در ﺣﻘﻴﻘـﺖ ﺑﺮﻧﺎﻣـﻪ ﺑﻌﻨـﻮان ﻳـﻚ روال از ﻧـﻮع FARﻧﻮﺷـﺘﻪ
ﻣﻲﺷﻮد ﻛﻪ وﻗﺘﻲ ﺑﺪﺳﺘﻮر RETﺑﺮﺳﻴﻢ ﻛﻨﺘﺮل ﺑﻪ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺮﻣﻲﮔﺮدد.
[email protected]
WWW.IRANMEET.COM
٢٣٥
[email protected]
WWW.IRANMEET.COM
٢٣٦
M
اﺳﻢ ﺳﮕﻤﻨﺖ ENDS
[email protected]
WWW.IRANMEET.COM
٢٣٧
در اﻳﻦ ﻓﺎز ﺑﺮﻧﺎﻣﻪ از ﻧﻈﺮ ﻧﺤﻮي ﺑﺮرﺳﻲ ﺷﺪه ﭼﻨﺎﻧﭽﻪ اﺷﺘﺒﺎﻫﺎت ﻧﺤﻮي داﺷـﺘﻪ
ﺑﺎﺷﺪ اﺳﻤﺒﻠﺮ اﺷﺘﺒﺎﻫﺎت را ﻣﺘﺬﻛﺮ ﻣﻲﺷﻮد .ﭼﻨﺎﻧﭽﻪ اﺷﺘﺒﺎﻫﻲ وﺟـﻮد داﺷـﺘﻪ ﺑﺎﺷـﺪ آﻧـﺮا
رﻓﻊ ﻧﻤﻮده ﻣﺠﺪداً دﺳﺘﻮر MASMرا ﻣﻲدﻫﻴﻢ.
ﭼﻨﺎﻧﭽﻪ ﺑﺮﻧﺎﻣﻪ داراي اﺷﺘﺒﺎه ﻧﺤﻮي ﻧﺒﺎﺷﺪ اﺳﻤﺒﻠﺮ ﭘﻴﻐﺎم
NO WARNINGS
NO ERRORS
را ﻣﻲدﻫﺪ .آﻧﮕﺎه ﻓﺮﻣﺎن زﻳﺮ را ﻣﻲدﻫﻴﺪ.
[email protected]
WWW.IRANMEET.COM
٢٣٨
[email protected]
WWW.IRANMEET.COM
٢٣٩
. را ﺑﺪﻧﺒﺎل ﻫﻢ روي ﺻﻔﺤﻪ ﻣﺎﻧﻴﺘﻮر ﻇـﺎﻫﺮ ﻣـﻲﺳـﺎزد9 ﺗﺎ0 ﺑﺮﻧﺎﻣﻪ ﺑﻌﺪي ارﻗﺎم
ﻣــﻲﺑﺎﺷــﺪ و ﻋﻤـﻼً ﻛــﺎري اﻧﺠــﺎمNO OPERATION ﺑــﻪ ﻣﻌﻨــﻲNOP دﺳــﺘﻮراﻟﻌﻤﻞ
.ﻧﻤﻲدﻫﺪ
STACK_SEG SEGMENT PARA STACK ′STACK′
DW 32 DUP (?)
STACK_SEG ENDS
;
;
CODE_SEG SEGMENT PARA STACK ′STACK′
BEGIN PROC FAR
ASSUME SS:STACK_SEG, CS:CODE_SEG
START:
PUSH DS
SUB AX,AX
PUSH AX
;
MOV AH, 00
MOV AL, 03
INT 10 H
;
MOV AH , 2
MOV BH , 0
MOV DH, 13 ;ROW
MOV DL, 25 ; COLUMN
INT 10 H
;
;character input without echo
;
MOV CX, 10
LOOP1:NOP
MOV AH ,7
INT 21H
;
MOV AH ,2
MOV DL , AL
INT 21H
LOOP LOOP1
;
RET
BEGIN ENDP
CODE-SEG ENDS
END START
[email protected]
WWW.IRANMEET.COM
٢٤٠
[email protected]
WWW.IRANMEET.COM
٢٤١
;
;
RET
BEGIN ENDP
;
;
[email protected]
WWW.IRANMEET.COM
٢٤٢
NIK MACRO
ASSUME SS:STACK_SEG, CS:CODE_SEG,DS:DATA_SEG
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA_SEG
MOV DS,AX
;
ENDM
STACK_SEG SEGMENT PARA STACK ′STACK′
DW 32 DUP (?)
STACK_SEG ENDS
;
;
DATA_SEG SEGMENT PARA ′DATA′
MESSAGE DB ′DARYOUSH NIKMEHR′ ,13, ′$′
DATA _SEG ENDS
CODE –SEG SEGMENT PARA ′CODE′
NIK
BEGIN PROC FAR
MOV AH, 00
MOV AL, 03
INT 10H
;
MOV AH, 2
MOV BH, 0
MOV DH, 13 ; ROW
[email protected]
WWW.IRANMEET.COM
٢٤٣
[email protected]
WWW.IRANMEET.COM
٢٤٤
[email protected]
WWW.IRANMEET.COM
٢٤٥
ﺑﻴﺘﻲ داده ﺷﺪه اﺳﺖ؛ در اﻳﻦ ﺑﺮﻧﺎﻣﻪ اﻳﻦ دو32 در ذﻳﻞ ﺑﺮﻧﺎﻣﻪ ﺿﺮب دو ﻣﻘﺪار
.ﻣﻘﺪار ﺑﺼﻮرت ﺑﺪون ﻋﻼﻣﺖ در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﺷﺪهاﻧﺪ
PUBLIC MULU32
DSEG SEGMENT PARA ′DATA′
HI_MCND DW ?
LO_MCND DW ?
HI_PP1 DW ?
LO_PP1 DW ?
HI_PP2 DW ?
LO_PP2 DW ?
HI_PP3 DW ?
LO_PP3 DW ?
HI_PP4 DW ?
LO_PP4 DW ?
DSEG ENDS
[email protected]
WWW.IRANMEET.COM
٢٤٦
PUSH DI
MOV DI, DSEG ;Initialize DS
MOV DS,DI
MOV HI_MCND,DX ;Save multiplicand in memory
MOV LO_MCND,AX
MUL BX ;Form partial product #1
MOV HI_PP1,DX ;and save it in memory
MOV LO_PP1, AX
MOV AX, HI_MCND ;Form partial product #2
MUL BX
MOV HI_PP2, DX ;and save it in memory
MOV LO_PP2, AX
MOV AX,LO_MCND ;Form partial product #3
MUL CX
MOV HI_PP3,DX ;and save it in memory
MOV LO_PP3, AX
MOV AX, HI_MCND ;Form partial product #4
MUL CX
MOV HI_PP4, DX ;and save it in memory
MOV LO_PP4, AX
; Add the partial products to form the final 64-bit product.
MOV AX,LO_PP1 ;Low 16 bits
MOV BX,HI_PP1 ;Form mid-lower 16 bits
ADD BX,LO_PP2 ; with sum #1
ADC HI_PP2,0
ADD BX,LO_PP3 ; and sum #2
MOV CX,HI_PP2 ;Form mid-upper 16 bits
ADC CX,HI_PP3 ;with sum #3
[email protected]
WWW.IRANMEET.COM
٢٤٧
ADC HI_PP4, 0
ADD CX,LO_PP4 ;and sum #4
MOV DX,HI_PP4 ;Form high 16 bits
ADC DX,0 ;including propagated carry
POP DI ;Restore caller’s registers
POP DS
RET
MULU32 ENDP
CSEG ENDS
END
[email protected]
WWW.IRANMEET.COM
٢٤٨
. ﺑﻴﺘﻲ ﻋﻼﻣﺘﺪار را ﺗﻌﻴﻴﻦ ﻣﻲﻧﻤﺎﻳﺪ32 ﺑﺮﻧﺎﻣﻪ داده ﺷﺪه در ذﻳﻞ ﺣﺎﺻﻠﻀﺮب دو ﻣﻘﺪار
[email protected]
WWW.IRANMEET.COM
٢٤٩
[email protected]
WWW.IRANMEET.COM
٢٥٠
; DX = Remainder
; To assemble: MASM DIVUO;
; To link: LINK callprog+DIVUO;
PUBLIC DIVUO
CSEG SEGMENT PARA ′CODE′
ASSUME CS: CSEG
DIVUO PROC FAR
CMP BX,0 ; Divisor = 0?
JNZ DVROK
DVROK: INT 0 ; Yes. Abort the divide
PUSH ES ; Save working registers
PUSH DI
PUSH CX
MOV DI,0 ; Fetch current INT 0 vector
MOV ES, DI
PUSH ES: [DI] ; and save it on the stack
PUSH ES:[DI+2]
LEA CX, OVR_INT ;Make INT 0 vector
MOV ES: [DI], CX ;point to OVR_INT
MOV CX, SEG OVR_INT
MOV ES: [DI+2], CX
DIV BX ;Perform the division
[email protected]
WWW.IRANMEET.COM
٢٥١
[email protected]
WWW.IRANMEET.COM
٢٥٢
ﺑﻴﺘـﻲ از روش ﺗﻜـﺮاري ﻧﻴﻮﺗـﻮن اﺳـﺘﻔﺎده32 ﺑﺮاي ﻣﺤﺎﺳﺒﻪ ﺟﺬر ﻳـﻚ ﻣﻘـﺪار
ﺑﺎﺷـﺪN ﺟـﺬر ﺗﻘﺮﻳـﺐ ﻣﻘـﺪارA روش ﻧﻴﻮﺗﻮن ﺑﺪﻳﻦ ﺻﻮرت اﺳﺖ ﻛﻪ اﮔﺮ.ﻣﻲﺷﻮد
. ﻣﻲﺑﺎﺷﺪN ﺗﻘﺮﻳﺐ ﺑﻬﺘﺮي ﺑﺮاي ﺟﺬرA1 آﻧﮕﺎه
A1 = (N / A + A) / 2
آﻧﮕـﺎه اوﻟـﻴﻦ ﺗﻘﺮﻳـﺐ ﺑﺮاﺑـﺮ ﺑـﺎA=200 ﺑﺎﺷـﺪ وN=10000 ﺑﻌﻨﻮان ﻣﺜـﺎل اﮔـﺮ
. ﻣﻲﺑﺎﺷﺪ10000 / 200 + 2 = 52
PUBLIC SQRT32
CSEG SEGMENT PARA ′CODE′
ASSUME CS: CSEG
SQRT32 PROC FAR
PUSH BP ;Save contents of BP
PUSH DX ;and source number DX:AX
PUSH AX
[email protected]
WWW.IRANMEET.COM
٢٥٣
[email protected]
WWW.IRANMEET.COM
٢٥٤
[email protected]
WWW.IRANMEET.COM
٢٥٥
LIST 6 LIST 6
42 42
76 76
122 122
14 ←DELETE 97
97 LIST+5 8
LIST+6 8
[email protected]
WWW.IRANMEET.COM
٢٥٦
PUBLIC MINMAX
CSEG SEGMENT PARA ′CODE′
ASSUME CS: CSEG
MINMAX PROC FAR
PUSH CX
PUSH DI ;Save starting address
MOV CX, ES:[DI] ;Fetch element count
DEC CX ;Get ready for count-1 compares
ADD DI,2 ;point to first element
MOV BX, ES:[DI] ;Declare it both minimum
MOV AX,BX ;and maximum
CHKMIN: ADD DI,2 ;Point to next element
CMP ES: [DI], BX ;Compare element to minimum
JAE CHKMAX ;New minimum found?
MOV BX,ES : [DI] ;Yes. Put is in BX
JMP SHORT NEXTEL
CHKMAX: CMP ES:[DI], AX ;Compare element to maximum
JBE NEXTEL ;New maximum found?
MOV AX, ES:[DI] ;Yes. Put it in AX
NEXTEL: LOOP CHKMIN ;Check entire list
POP DI ;Restore starting address
POP CX
RET ; and exit
MINMAX ENDP
CSEG ENDS
END
[email protected]
WWW.IRANMEET.COM
٢٥٧
START
EXCHANGE
FLAG=1
N=0
NO
ELEMENT N+1
ELEMENT N?
YES
EXCHANGE
THESE
ELEMENTS
EXCHANGE
FLAG=0
N=N+1
NO
END OF LIST?
YES
EXCHANGE YES
FLAG=0?
NO
END
[email protected]
WWW.IRANMEET.COM
٢٥٨
.ﺑﺮﻧﺎﻣﻪ زﻳﺮ ﺗﻌﺪادي ﻋﻨﺎﺻﺮ را ﺑﺼﻮرت ﺻﻌﻮدي ﺑﺮوش ﺣﺒﺎﺑﻲ ﻣﺮﺗﺐ ﻣﻲﻧﻤﺎﻳﺪ
; Arranges the 16-bit elements of a list in the extra
; Segment in ascending order, using bubble sort.
; Inputs: ES:DI = starting address of the list
; First location = Length of list (words)
; DI is unaltered.
PUBLIC B_SPRT
CSEG SEGMENT PARA ′CODE′
ASSUME CS:CSEG,DS:DSEG
B_SORT PROC FAR
PUSH DS ;Save caller’s registers
SUSH CX
SUSH AX
SUSH BX
MOV AX, DSEG ;Initialize DS
MOV DS,AX
MOV START_ADDR,DI ;Save starting address
MOV CX,ES:[DI] ;Fetch element count
DEC CX ;Get ready for count-1 compares
MOV SAVE_CNT,CX ;Save this value in memory
[email protected]
WWW.IRANMEET.COM
٢٥٩
[email protected]
WWW.IRANMEET.COM
٢٦٠
ﺑﺮﻧﺎﻣﻪ زﻳﺮ روش ﺑﻬﺘﺮي ﺑﺮاي ﻣﺮﺗﺐ ﻧﻤﻮدن ﻋﻨﺎﺻﺮ ﻳﻚ آراﻳـﻪ ﺑـﺮوش ﺣﺒـﺎﺑﻲ
.اراﺋﻪ ﻣﻲدﻫﺪ
; Arranges the 16-bit elements of a list in the extra
; Segment in ascending order, using bubble sort.
; Inputs: ES:DI = starting address of the list
; First location = Length of list (words)
; DI is unaltered.
PUBLIC BUBBLE
CSEG SEGMENT PARA ′CODE′
ASSUME CS:CSEG,DS:DSEG
BUBBLE PROC FAR
PUSH DS ;Save caller’s registers
PUSH CX
PUSH AX
PUSH BX
MOV AX, DSEG ;Initialize DS
MOV DS,AX
MOV START_ADDR,DI
MOV CX,ES:[DI] ;Fetch element count
MOV SAVE_CNT,CX ;Save this value in memory
[email protected]
WWW.IRANMEET.COM
٢٦١
[email protected]
WWW.IRANMEET.COM
٢٦٢
START
FETCH INDEX
(ELEMENT
COUNT)
DIVIDE INDEX BY 2
YES
INDEX
=0?
NO
SEARCH ADDRESS=
ADDRESS+INDEX
YES
INDEX
=0?
NO
SEARCH ADDRESS=
ADDRESS-INDEX
[email protected]
WWW.IRANMEET.COM
٢٦٣
.ﺑﻴﺘﻲ اراﺋﻪ ﻣﻲدﻫﺪ 16 ﺑﺮﻧﺎﻣﻪ ذﻳﻞ روش ﺟﺴﺘﺠﻮي دودوﺋﻲ ﺑﺮاي ﻣﻘﺎدﻳﺮ
; Searches an ordered list in the extra segment for the
; Word value contained in AX.
; Inputs : ES:DI = starting address of the list
; First location = Length of list (words)
; Results: if the value is in the list,
; CF=0
; SI=offset of matching element
; If the value is not in the list,
; CF = 1
; SI = offset of last element compared
; AX and DI are unaffected.
PUBLIC B_SEARCH
CSEG SEGMENT PARA ′CODE′
ASSUME CS:CSEG,DS:DSEG
B_SEARCH PROC FAR
PUSH DS ;Save caller’s DS register
PUSH AX
MOV AX,DSEG ;Initialize DS
MOV DS,AX
POP AX
[email protected]
WWW.IRANMEET.COM
٢٦٤
[email protected]
WWW.IRANMEET.COM
٢٦٥
[email protected]
WWW.IRANMEET.COM
٢٦٦
EXTRN B_SEARCH:FAR
PUBLIC ADD_TO_OL
CSEG SEGMENT PARA ′CODE′
ASSUME CS:CSEG
ADD_TO_OL PROC FAR
PUSH CX ; Save caller’s registers
PUSH SI
PUSH BX
CALL B_SEARCH ; Is the value in the list?
JNC GOODBYE ; If so, exit
MOV BX,SI ; if not, copy compare addr. To BX
MOV CX,ES: [DI] ; Find address of last element
SHL CX,1
ADD CX,DI ; and put it in CX
PUSH CX ; Save this address on the stack
SUB CX,SI ; Calculate no. of words to be moved
SHR CX,1
[email protected]
WWW.IRANMEET.COM
٢٦٧
[email protected]
WWW.IRANMEET.COM
٢٦٨
.ﺑﺮﻧﺎﻣﻪ داده ﺷﺪه در ذﻳﻞ ﻳﻚ ﻣﻘﺪار را از ﻟﻴﺴﺖ ﻣﺮﺗﺐ داده ﺷﺪه ﺣﺬف ﻣﻲﻧﻤﺎﻳﺪ
[email protected]
WWW.IRANMEET.COM
٢٦٩
[email protected]
WWW.IRANMEET.COM
٢٧٠
در اﻳﻦ ﻓﺼﻞ ﻧﺤﻮه ﻧﻮﺷﺘﻦ ﺑﺮﻧﺎﻣﻪﻫﺎ ﺑﻪ زﺑﺎن اﺳﻤﺒﻠﻲ و ﻧﺤﻮه اﺟﺮاي آﻧﻬﺎ ﺑﺤـﺚ
ﮔﺮدﻳﺪه اﺳﺖ .ﺿﻤﻨﺎً ﭼﻨﺪﻳﻦ ﺑﺮﻧﺎﻣﻪ ﺑﺼﻮرت ﻧﻤﻮﻧﻪ ﻧﻮﺷﺘﻪ ﺷﺪه ﻛﻪ ﻣـﻲﺗﻮاﻧـﺪ اﻟﮕـﻮﺋﻲ
ﺑﺮاي ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ داﻧﺸﺠﻮﻳﺎن ﺑﺎﺷﺪ.
[email protected]
WWW.IRANMEET.COM
٢٧٠
ﻓﺼﻞ دﻫﻢ
اﺳﻤﺒﻠﻲ 80386
ﻫﺪف ﻛﻠﻲ
در اﻳﻦ ﻓﺼﻞ رﻳﺰﭘﺮدازﻧﺪه 80386و زﺑﺎن اﺳﻤﺒﻠﻲ واﺑﺴﺘﻪ ﺑﺤﺚ ﻣﻲﮔﺮدد.
اﻫﺪاف رﻓﺘﺎري
ﭘﺲ از ﻣﻄﺎﻟﻌﻪ اﻳﻦ ﻓﺼﻞ ﺑﺎ ﻣﻮارد زﻳﺮ آﺷﻨﺎ ﻣﻲﺷﻮﻳﺪ.
-1رﻳﺰﭘﺮدازﻧﺪه . 80386
-2اﻧﻮاع dataﻫﺎﺋﻲ ﻛﻪ ﺣﻤﺎﻳﺖ ﻣﻲﻧﻤﺎﻳﺪ و ﻣﺤﺎﺳﺒﻪ آدرس ﻣﻮﺛﺮ
-3ﻣﻌﻤﺎري و ﺛﺒﺎﺗﻬﺎي آن.
-4آﺷﻨﺎﺋﻲ ﺑﺎ ﻣﺠﻤﻮﻋﻪ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي .80386
[email protected]
WWW.IRANMEET.COM
٢٧١
-10-2اﻧﻮاع دادهﻫﺎ
ﺗﺮاﺷﻪ رﻳﺰ ﭘﺮدازﻧﺪه 80386ﭼﻨﺪﻳﻦ ﻧـﻮع داده ﻋـﻼوه ﺑـﺮ آﻧﻬـﺎﺋﻲ ﻛـﻪ ﺑﻮﺳـﻴﻠﻪ
8086/80286ﺣﻤﺎﻳﺖ ﻣﻲﺷﻮﻧﺪ را ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﻧﻤﺎﻳﺪ .اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه ﻣﻘﺎدﻳﺮ ﺻـﺤﻴﺢ
1 ﺑﺎ ﻋﻼﻣﺖ و ﺑﺪون ﻋﻼﻣﺖ 32ﺑﻴﺘﻲ را ﺣﻤﺎﻳﺖ ﻣﻲﻧﻤﺎﻳﺪ .ﻫﻤﭽﻨﻴﻦ اﻃﻼﻋﺎت ﺑﻴﺘـﻲ از
ﺗﺎ 32ﺑﻴﺖ را ﭘﺸﺘﻴﺒﺎﻧﻲ ﻣﻲﻧﻤﺎﻳﺪ .اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه اﻧﻮاع اﺷﺎرهﮔﺮﻫﺎي اﺳﺘﺎﻧﺪارد اﺳﺘﻔﺎده
و اﺷﺎرهﮔﺮﻫﺎي 32و 48ﺑﻴﺘﻲ را ﺣﻤﺎﻳﺖ ﻣﻲﻧﻤﺎﻳـﺪ .ﺑﻄـﻮر 8086/80286 ﺷﺪه ﺑﻮﺳﻴﻠﻪ
ﻛﻠﻲ 80386از ﻋﻤﻠﻮﻧﺪﻫﺎي 32, 16, 8ﺑﻴﺘﻲ ﻣﻲﺗﻮاﻧﺪ اﺳﺘﻔﺎده ﻧﻤﺎﻳﺪ.
در رﻳﺰﭘﺮدازﻧﺪه 80386ﺑﺎﻳﺴﺘﻲ ﺑﻪ ﻧﻜﺎت ذﻳﻞ ﺗﻮﺟﻪ ﻧﻤﻮد.
اﻟﻒ( ﻳﻚ ﺑﺎﻳﺖ از ﻫﺸﺖ ﺑﻴﺖ ﭘﻴﻮﺳﺘﻪ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
ب(ﻳﻚ wordاز ﺷﺎﻧﺰده ﺑﻴﺖ ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
ج(ﻳﻚ double wordاز 32ﺑﻴﺖ ﻛﻨﺎر ﻫﻢ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
د(ﻳﻚ quad wordاز 64ﺑﻴﺖ ﭘﺸﺖ ﺳﺮ ﻫﻢ ﺗﺸﻜﻴﻞ ﺷﺪه اﺳﺖ.
[email protected]
WWW.IRANMEET.COM
٢٧٢
ﻛﻪ ﺑﻮﺳﻴﻠﻪ دﻳﺮﻛﺘﻴﻮﻫﺎي زﻳﺮ در زﺑﺎن اﺳﻤﺒﻠﻲ ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﻣﻲﮔﻴﺮﻧﺪ.
-10-4ﻣﻌﻤﺎري
رﻳﺰﭘﺮدازﻧﺪه 80386اﻣﻜﺎن اﺳﺘﻔﺎده از 32ﺛﺒﺎت ﻛﻪ آﻧﻬﺎ را ﻣﻲ ﺗـﻮان ﺑـﻪ ﻫﻔـﺖ
دﺳﺘﻪ زﻳﺮ ﺗﻘﺴﻴﻢ ﻧﻤﻮد را ﻓﺮاﻫﻢ ﻣﻲﻧﻤﺎﻳﺪ.
-1ﺛﺒﺎﺗﻬﺎي ﻣﺼﺮف ﻋﻤﻮﻣﻲ ).(General-purpose registers
-2ﺛﺒﺎﺗﻬﺎي ﺳﮕﻤﻨﺖ ).(Segment registers
-3ﻓﻠﮕﻬﺎ و اﺷﺎرهﮔﺮ دﺳﺘﻮراﻟﻌﻤﻞ ).(Instruction pointer and flags
-4ﺛﺒﺎﺗﻬﺎي ﻛﻨﺘﺮل ).(Control registers
-5ﺛﺒﺎﺗﻬﺎي آدرس ﺳﻴﺴﺘﻢ ).(System address registers
-6ﺛﺒﺎﺗﻬﺎي ﺗﺴﺖ ).(Test registers
ﺑﻴﺖ داده را دارﻧﺪ. ذﺧﻴﺮه32 ، 16 ، 8 ﺛﺒﺎﺗﻬﺎي ﻣﺼﺮف ﻋﻤﻮﻣﻲ اﻣﻜﺎن
ﺗﻌﺪاد اﻳﻦ ﺛﺒﺎﺗﻬﺎ ﻫﺸﺖ ﺗﺎ ﻣﻲﺑﺎﺷﺪ و اﺳﺎﻣﻲ آﻧﻬﺎ ﻋﺒﺎرﺗﻨﺪ از:
EAX Accumulator
EBX Base
ECX Count
EDX Data
ESP Stack pointer
EBP Base pointer
[email protected]
WWW.IRANMEET.COM
٢٧٣
31 16 15 0
EAX [AH] AX [AL]
EBX [BH] BX [BL]
ECX [CH] CX [CL]
EDX [DH] DX [DL]
ﻣﻲ ﺑﺎﺷﺪ ﻛـﻪ ﺧـﻮدAX ﻫﻤﺎن ﺛﺒﺎتEAX ﺛﺒﺎت15 ﺗﺎ0 در ﺣﻘﻴﻘﺖ ﺑﻴﺖﻫﺎي
ﻫﻤﻴﻨﻄـﻮر در ﻣـﻮرد ﺳـﺎﻳﺮ. ﺗﻘﺴﻴﻢ ﻣـﻲﮔﺮدﻧـﺪAH وAL ﻧﻴﺰ ﺑﻪ دو ﺛﺒﺎت ﻫﺸﺖ ﺑﻴﺘﻲ
. EDX، ECX ، EBXﺛﺒﺎﺗﻬﺎي
EDI ، ESI ، EBP ، ESP ﺑﻴﺘـــﻲ ﺑﻨﺎﻣﻬـــﺎي32 داراي ﭼﻬـــﺎر ﺛﺒـــﺎت80386
ﺑﺘﺮﺗﻴﺐ ﺷﺎﻧﺰده ﺑﻴﺖ اول اﻳﻦ ﺛﺒﺎﺗﻬﺎ ﻣﻲ ﺑﺎﺷﻨﺪDI ، SI ، BP ، SP ﻣﻲﺑﺎﺷﺪ ﻛﻪ ﺛﺒﺎﺗﻬﺎي
SP Stack Pointer
BP Base Pointer
SI Source Index
DI Destination Index
31 16 15 0 1
SP ESP
BP EBP
SI ESI
DI EDI
: اﺳﺎﻣﻲ اﻳﻦ ﺛﺒﺎﺗﻬﺎ ﻋﺒﺎرﺗﻨﺪ از. ﺑﻴﺘﻲ ﻣﻲﺑﺎﺷﺪ16 داراي ﺷﺶ ﺛﺒﺎت ﺳﮕﻤﻨﺖ80386
CS Code Segment
DS Data Segment
SS Stack Segment
ES Extra Segment
FS
GS
[email protected]
WWW.IRANMEET.COM
٢٧٤
15 0
CS
DS
SS
ES
FS
GS
ﺛﺒﺎت ﻓﻠﮓ ﻳﺎ ﻓﻠﮓ ﺛﺒﺎت در رﻳﺰﭘﺮدازﻧﺪه 80386ﺑﻪ 32ﺑﻴﺖ ﺗﻮﺳﻌﻪ ﻳﺎﻓﺘﻪ اﺳﺖ.
ﺛﺒﺎت ﻓﻠﮓ ﺑﻨﺎم EFLAGSﻣـﻲﺑﺎﺷـﺪ .اﻟﺒﺘـﻪ ﺑﺎﻳـﺴﺘﻲ ﺗﻮﺟـﻪ داﺷـﺖ ﻛـﻪ 16ﺑﻴـﺖ اول
EFLAGSﻫﻤﺎن ﻓﻠﮓ ﺛﺒﺎت ﻣﻄﺮح ﺷﺪه در ﻓﺼﻠﻬﺎي ﻗﺒﻞ ﻣﻲﺑﺎﺷﺪ.
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
NT IO PL OF DF IF TF SF ZF // AF // PF // CF
31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16
VM RF
[email protected]
WWW.IRANMEET.COM
٢٧٥
ﻛﻪ
RF Resume Flag
VM Virtual Mode Flag
31 16 15 0
CR0
CR2
CR3
31 16 15 0
GDTR
IDTR
LDTR
TR
[email protected]
WWW.IRANMEET.COM
٢٧٦
80386 -10-5دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي
ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻛﻠﻴـﻪ ﻣﻄـﺎﻟﺒﻲ ﻛـﻪ در ﻣـﻮرد رﻳﺰﭘﺮدازﻧـﺪه 80286در
ﻓﺼﻠﻬﺎي ﻗﺒﻞ ﻣﻄﺮح ﺷﺪ ﺗﻮﺳﻂ رﻳﺰﭘﺮدازﻧﺪه 80386ﻛﺎﻣﻼً ﻣﻲﺗﻮاﻧﻨﺪ ﺑـﺪون ﻫﻴﭽﮕﻮﻧـﻪ
ﺗﻐﻴﻴﺮي ﻣﻮرد اﺳﺘﻔﺎده ﻗﺮار ﮔﻴﺮﻧﺪ ﻳﻌﻨﻲ ﻛﻠﻴﻪ ﺑﺮﻧﺎﻣﻪﻫﺎﺋﻲ ﻛﻪ ﺗﺎﻛﻨﻮن ﻧﻮﺷﺘﻪ ﺷﺪه ﻣﻲﺗﻮان
ﺑﻮﺳﻴﻠﻪ رﻳﺰﭘﺮدازﻧﺪه 80386اﺟﺮا ﻧﻤﻮد .ﺿﻤﻨﺎً ﻓﻬﺮﺳـﺘﻲ از دﺳـﺘﻮراﻟﻌﻤﻠﻬﺎي 80386در
80386 اﻧﺘﻬﺎي اﻳﻦ ﻓﺼﻞ داده ﺷﺪه اﺳﺖ .ﺑﺎﻳﺴﺘﻲ ﺗﻮﺟـﻪ داﺷـﺖ ﻛـﻪ در رﻳﺰﭘﺮدازﻧـﺪه
ﻋﻤﻠﻮﻧــﺪﻫﺎ ﻣــﻲﺗﻮاﻧﻨــﺪ 32ﺑﻴﺘــﻲ ﺑﺎﺷــﻨﺪ ﻛــﻪ اﻳﻨﻜــﺎر در ﻣــﻮرد 80286اﻣﻜــﺎن ﭘــﺬﻳﺮ
ﻧﺒﻮد.
ﻣﺜﺎل
ﻣﺜﺎل دﻳﮕﺮ
[email protected]
WWW.IRANMEET.COM
٢٧٧
doubleﻛﺎﻓﻲ اﺳﺖ ﻛﻪ ﻣﻘﺪار ﻣﻮرد ﻧﻈـﺮ را در ﺛﺒـﺎت AXﻗـﺮار word ﺗﺒﺪﻳﻞ wordﺑﻪ
داده ﭘﺲ از اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞ CBWﻧﺘﻴﺠﻪ در EAXﻗﺮار ﻣﻲﮔﻴﺮد.
در ﻣﻮرد ADCﻣﻲﺗﻮاﻧﻴﻢ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ را اﺳﺘﻔﺎده ﻧﻤﺎﺋﻴﻢ.
ADC AL , 4
ADC AX , 298
ADC EBX , 22334455H
ADC TABLE [SI] , 2
ADC NUMBE, 12345678
ADC DL , BL
ADC SI , X
ADC X, SI
ﻧﻤﺎﺋﻴﻢ: در ﻣﻮرد MOVاز دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ ﺑﻌﻨﻮان ﻣﺜﺎل ﻣﻲﺗﻮاﻧﻴﻢ اﺳﺘﻔﺎده
در ﻣﻮرد دﺳﺘﻮراﻟﻌﻤﻞ ﺿﺮب ﺑﻌﻨﻮان ﻣﺜـﺎل ﻣـﻲﺗـﻮاﻧﻴﻢ از دﺳـﺘﻮراﻟﻌﻤﻞ ذﻳـﻞ اﺳـﺘﻔﺎده
ﻧﻤﺎﺋﻴﻢ:
MOV EAX, 0FCAB1234H
MUL EBX
[email protected]
WWW.IRANMEET.COM
٢٧٨
NEG AL
NEG EBX
NOT AL
NOT AX
NOT EBX
در ﻣﻮرد PUSHو POPﻣﻲﺗﻮاﻧﻴﻢ ﺑﻌﻨﻮان ﻣﺜﺎل از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ اﺳﺘﻔﺎده ﻧﻤﺎﺋﻴﻢ:
POP CX
POP EAX
POP SS
PUSH BX
PUSH EAX
[email protected]
WWW.IRANMEET.COM
٢٧٩
[email protected]
WWW.IRANMEET.COM
٢٨٠
[email protected]
WWW.IRANMEET.COM
٢٨١
[email protected]
WWW.IRANMEET.COM
٢٨٢
*CWD sign extends register AX into registers DX and AX, whereas CWDE sign
extends AX into EAX.
[email protected]
WWW.IRANMEET.COM
٢٨٣
10-2 ﺟﺪول
DEC Subtract 1
INC Add 1
NOT Logical NOT (complement or invert)
ROL Rotate left
ROR Rotate right
SBB Subtract with borrow
SHL Shift logical left
SHR Shift logical right
SUB Subtract
TEST Bit test
Program control
CALL Call subroutine
INT Interrupt (trap)
JA Jump if above
JAE Jump if above or equal
JB Jump if below
JBE Jump if below or equal
JC Jump if carry
JE Jump if equal
JMP Jump unconditionally
JNC Jump if not carry
JNE Jump if not equal
JNS Jump if not sign
JNZ Jump if non zero
JS Jump if sign
JZ Jump if zero
RET Return from subroutine
[email protected]
WWW.IRANMEET.COM
٢٨٤
10-3 ﺟﺪول
[email protected]
WWW.IRANMEET.COM
٢٨٥
در اﻳﻦ ﻓﺼﻞ در ﻣﻮرد رﻳﺰ ﭘﺮدازﻧﺪه 80386ﺑﺤـﺚ ﮔﺮدﻳـﺪ .ﻫﻤـﺎﻧﻄﻮري ﻛـﻪ
ﮔﻔﺘﻪ ﺷﺪ اﻳﻦ رﻳﺰ ﭘﺮدازﻧﺪه ﻳﻚ رﻳﺰﭘﺮدازﻧﺪه 32ﺑﻴﺘﻲ ﻣﻲ ﺑﺎﺷـﺪ و ﺗﻤـﺎم دﺳـﺘﻮراﻟﻌﻤﻞ
ﻫﺎﻳﻲ ﻛﻪ روي رﻳﺰﭘﺮدازﻧﺪه 80286اﺟﺮا ﻣﻲ ﺷﻮد روي اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه ﻧﻴﺰﻗﺎﺑﻞ اﺟـﺮا
ﻣﻲ ﺑﺎﺷﺪ .ﺛﺒﺎت ﻫﺎي 32ﺑﻴﺘﻲ آن ﻋﺒﺎرﺗﻨﺪ از . EDXٍ ، ECXٍ ، EBX ، EAXدر ﺿـﻤﻦ
ﻣﻲ ﺗﻮان از ﺛﺒـﺎت ﻫـﺎي ، CH ، CL ، BH ، BL ، AH ، AL ، DX ، CX ، BX ، AX
DH ، DLو ...اﺳــﺘﻔﺎده ﻧﻤــﻮد.درﻧﻬﺎﻳــﺖ ﺟــﺪول ﻛﻠــﻲ ﻓﺮﻣــﺖ دﺳــﺘﻮراﻟﻌﻤﻠﻬﺎ ﺑــﺮاي
رﻳﺰﭘﺮدازﻧﺪه 80386داده ﺷﺪه اﺳﺖ ﻛﻪ ﺑﺎ ﻣﺮور آن ﻣﻲ ﺗﻮان ﺑﺮﻧﺎﻣﻪ ﻫﺎي ﻣﺨﺘﻠﻔﻲ را ﺑﻪ
راﺣﺘﻲ ﻧﻮﺷﺖ و ﺑﺮ روي اﻳﻦ رﻳﺰﭘﺮدازﻧﺪه اﺟﺮا ﻧﻤﻮد
[email protected]
WWW.IRANMEET.COM
٢٨٦
1 ﺿﻤﻴﻤﻪ
(OPERATORS) ﻋﻤﻠـﮕﺮﻫﺎ
Operator Function
Arithmetic
+ Format: value1 + value2
Adds value1 and value2.
[email protected]
WWW.IRANMEET.COM
٢٨٧
Operator Function
Logical
AND Format: value1 AND value2
Takes logical AND of value1 and value2.
Value - Returning
$ Format: $
Returns the current value of the location
counter.
[email protected]
WWW.IRANMEET.COM
٢٨٨
Operator Function
OFFSET Format: OFFSET variable
Or
OFFSET label
Returns the offset value of variable or label.
[email protected]
WWW.IRANMEET.COM
٢٨٩
Operator Function
HIGH Format: HIGH value
or
HIGH expression
Returns the high-order byte of a 16-bit numeric value or
address expression.
Attribute
LOW Format: LOW value
or
LOW expression
Returns the low-order byte of a 16-bit numeric value or
address expression.
[email protected]
WWW.IRANMEET.COM
٢٩٠
2 ﺿﻤﻴﻤﻪ ﺷﻤﺎره
Instruction Set Summary
For each instruction, it shows the general assembler format and which
flags are affected. In the Flags column, -means unchanged, * means may have
changed, and? Means undefined.
Flags
mnemonic Assembler format
OF
DF
AF
CF
TF
ZF
PF
SF
IF
AAA AAA ? - - - ? ? * ? *
AAD AAD ? - - - * * ? * ?
AAM AAM ? - - - * * ? * ?
AAS AAS ? - - - ? ? * ? *
ADC ADC Destination,source * - - - * * * * *
ADD ADD Destination,source * - - - * * * * *
AND AND Destination,source 0 - - - * * ? * 0
BOUND BOUND Reg16,source - - - - - - - - -
CALL CALL Target - - - - - - - - -
CBW CBW - - - - - - - - -
CLC CLC - - - - - - - - 0
CLD CLD - 0 - - - - - - -
CLI CLI - - 0 - - - - - -
CMC CMC - - - - - - - - *
CMP CMP Destination,source * - - - * * * * *
CMPS CMPS Dest-string,source- * - - - * * * * *
string
CMPSB CMPSB * - - - * * * * *
CMPSW CMPSW * - - - * * * * *
CWD CWD - - - - - - - - -
DAA DAA ? - - - * * * * *
DAS DAS ? - - - * * * * *
DEC DEC Destination * - - - * * * * -
DIV DIV Source ? - - - ? ? ? ? ?
ENTER ENTER Immed16,level - - - - - - - - -
ESC ESC Ext,opcode,source - - - - - - - - -
HLT HLT - - - - - - - - -
[email protected]
WWW.IRANMEET.COM
٢٩١
Flags
mnemonic Assembler format
OF
DF
AF
CF
TF
ZF
PF
SF
IF
IRET IRET * * * * * * * * *
JA/JNBE JA Short-label - - - - - - - - -
JAE/JNB JAE Short-label - - - - - - - - -
JB/JNAE/JC JB Short-label - - - - - - - - -
JBE/JNA JBE Short-label - - - - - - - - -
JCXZ JCXZ Short-label - - - - - - - - -
JE/JZ JE Short-label - - - - - - - - -
JG/JNLE JG Short-label - - - - - - - - -
JGE/JNL JGE Short-label - - - - - - - - -
JL/JNGE JL Short-label - - - - - - - - -
JLE/JNG JLE Short-label - - - - - - - - -
JMP JMP Target - - - - - - - - -
JNC JNC Short-label - - - - - - - - -
JNE/JNZ JNE Short-label - - - - - - - - -
JNO JNO Short-label - - - - - - - - -
JNP/JPO JNP Short-label - - - - - - - - -
JNS JNS Short-label - - - - - - - - -
JO JO Short-label - - - - - - - - -
JP/JPE JP Short-label - - - - - - - - -
JS JS Short-label - - - - - - - - -
LAHF LAHF - - - - - - - - -
LDS LDS Reg16,mem32 - - - - - - - - -
LEA LEA Reg16,mem16 - - - - - - - - -
LEAVE LEAVE - - - - - - - - -
LES LES Reg16,mem32 - - - - - - - - -
LOCK LOCK - - - - - - - - -
LODS LODS Source-string - - - - - - - - -
LODSB LODSB - - - - - - - - -
LODSW LODSW - - - - - - - - -
LOOP LOOP Short-label - - - - - - - - -
LOOPE/LOOPZ LOOPE Short-label - - - - - - - - -
LOOPNE/LOO LOOPNE Short-label - - - - - - - - -
PNZ
MOV MOV Destination, source - - - - - - - - -
MOVS MOVS Dest-string,source- - - - - - - - - -
string
MOVSB MOVSB - - - - - - - - -
MOVSW MOVSW - - - - - - - - -
MUL MUL Source * - - - ? ? ? ? *
OR OR Destination, source 0 - - - * * ? * 0
OUT OUT Port, accumulator - - - - - - - - -
OUTS OUTS DX, source-string - - - - - - - - -
[email protected]
WWW.IRANMEET.COM
٢٩٢
Flags
mnemonic Assembler format
OF
DF
AF
CF
TF
ZF
PF
SF
IF
POPA POPA - - - - - - - - -
POPF POPF * * * * * * * * *
PUSH PUSH Source - - - - - - - - -
PUSH PUSH Immediate - - - - - - - - -
PUSHA PUSHA - - - - - - - - -
PUSHF PUSHF - - - - - - - - -
WAIT WAIT - - - - - - - - -
[email protected]
WWW.IRANMEET.COM
٢٩٣
3 ﺿﻤﻴﻤﻪ ﺷﻤﺎره
Instruction times
AAD 14 2
AAM 16 1
AAS 3 1
[email protected]
WWW.IRANMEET.COM
٢٩٤
CLC 2 1
CLD 2 1
CL1 3 1
CMC 2 1
CWD 2 1
DAA/DAS 3 1
DIV Reg8 14 2
DIV Reg16 22 2
DIV Mem8 17* 2-4
DIV Mem16 25* 2-4
ENTER Immed16,0 11 4
ENTER Immed16,1 15 4
ENTER Immed16,level 12+4(L) 4
HLT 2 1
IDIV Reg8 17 2
IDIV Reg16 25 2
[email protected]
WWW.IRANMEET.COM
٢٩٥
IMUL Reg8 13 2
IMUL Reg16 21 2
IMUL Mem8 16* 2-4
IMUL Mem16 24* 2-4
IMUL Dest-reg,reg16,immediate 21* 3-4
IMUL Dest-reg, memory, immediate 24* 3-4
IN Accumulator, immed8 5 2
IN Accumulator, DX 5 1
INS Dest-string, DX 5 1
INS (rep) dest-string,DX 5+4(rep) 1
INTO 24+m or 3 1
IRET 17+M 1
LAHF 2 1
[email protected]
WWW.IRANMEET.COM
٢٩٦
LOCK 0 1
LODS Source-string 5 1
LODS (repeat)source-string 5+4(rep) 1
MOVS Dest-string,source-string 5 1
MOVS (repeat)dest-string,source-string 5+4(rep) 1
MUL Reg8 13 2
MUL Reg16 21 2
MUL Mem8 16* 2-4
MUL Mem16 24* 2-4
NEG Register 2 2
NEG Memory 7* 2-4
NOP 2 1
NOT Register 2 2
NOT Memory 7* 2-4
OR Register, register 2 2
OR Register, memory 7* 2-4
[email protected]
WWW.IRANMEET.COM
٢٩٧
OUTS DX,source-string 5 1
OUTS (rep)DX, source-string 5+4(rep) 1
POP Register 5 1
POP Memory 5* 2-4
POPA 19 1
POPE 5 1
PUSH Register 3 1
PUSH Memory 5* 2-4
PUSH Immediate 3 2-3
PUSHA 17 1
PUSHF 3 1
RCL/RCR/ROL/ROR register,1 2 2
RCL/RCR/ROL/ROR register, CL 5+1/bit 2
RCL/RCR/ROL/ROR memory,1 7* 2-4
RCL/RCR/ROL/ROR memory, CL 8*+1/bit 2-4
RCL/RCR/ROL/ROR reg, count 5+1/bit 3
RCL/RCR/ROL/ROR memory, count 8*+1/bit 3-5
REP 0 1
REPE/REPZ 0 1
REPNE/REPNZ 0 1
SAHF 2 1
[email protected]
WWW.IRANMEET.COM
٢٩٨
SCAS Dest-string 7 1
SCAS (repeat) dest-string 5+8(rep) 1
STC/STD/STI 2 1
STOS Dest-string 3 1
STOS (repeat) dest-string 4+3(rep) 1
WAIT 3 1
XLAT Source-table 5 1
[email protected]
WWW.IRANMEET.COM
٢٩٩
[email protected]
WWW.IRANMEET.COM
٣٠٠
[email protected]
WWW.IRANMEET.COM
٣٠١
ﻓﻴﻠﺪ “ ”modدر اﻳﻦ ﺣﺎﻟﺖﻫﺎ ﺗﻌﻴﻴﻦ ﻛﻨﻨﺪه آن اﺳﺖ ﻛﻪ ﭼﻨﺪ ﺑﺎﻳﺖ ﺑﻌﻨﻮان ﻣﻘﺪار
ﺟﺎﺑﺠﺎﻳﻲ وﺟﻮد دارد .ﻣﻘﺪار 00ﺑﻪ اﻳﻦ ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﺑﺎﻳـﺖ ﺟﺎﺑﺠـﺎﻳﻲ در ﻛـﺪ ﻣﺎﺷـﻴﻦ
وﺟﻮد ﻧﺪارد .ﻳﻌﻨﻲ ﺣﺎﻟﺖ آدرس دﻫﻲ ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ ﺑﺎ ﺛﺒﺎت ﻳـﺎ آدرس دﻫـﻲ ﺷـﺎﺧﺺ
دار ﺑﺎ ﺛﺒﺎت ﭘﺎﻳﻪ ﺑﺪون ﻣﻘﺪار ﺟﺎﺑﺠﺎﻳﻲ اﺧﺘﻴﺎري اﺳﺖ .ﻣﻘـﺪار 10در ﻓﻴﻠـﺪ “ ”modﺑـﻪ
اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ دو ﺑﺎﻳﺖ ﺟﺎﺑﺠﺎﻳﻲ در ﻛﺪ ﻣﺎﺷﻴﻦ وﺟﻮد دارد ،اﻳﻦ ﻛﻠﻤﻪ ﺑﻪ ﻣﻘﺪاري
ﻛﻪ از ﺛﺒﺎت ﺷﺎﺧﺺ و ﻳﺎ ﺛﺒﺎت ﻣﺒﻨﺎ ﺑﺪﺳﺖ ﻣﻲآﻳﺪ اﺿﺎﻓﻪ ﻣﻲﺷﻮد .ﻣﻘـﺪار 01در ﻓﻴﻠـﺪ
“ ”modﺑﻪ اﻳﻦ ﻣﻌﻨﻲ اﺳﺖ ﻛﻪ ﻳﻚ ﺑﺎﻳﺖ ﺟﺎﺑﺠﺎﻳﻲ در ﻛﺪ ﻣﺎﺷﻴﻦ وﺟﻮددارد ،اﻳﻦ ﺑﺎﻳﺖ
ﺑﻌﻨﻮان ﻳﻚ ﻋﺪد ﻋﻼﻣﺖ دار در ﻧﻈﺮ ﮔﺮﻓﺘﻪ ﻣﻲﺷﻮد و ﻗﺒﻞ از آﻧﻜﻪ ﺑـﺎ ﻣﻘـﺪاري ﻛـﻪ از
ﺛﺒﺎت ﺷﺎﺧﺺ و ﻳﺎ ﺛﺒﺎت ﻣﺒﻨﺎ ﺑﺪﺳﺖ ﻣﻲآﻳﺪ ﺟﻤﻊ ﮔﺮدد ﺑـﻪ ﻳـﻚ ﻛﻠﻤـﻪ ﺗﻮﺳـﻌﻪ ﭘﻴـﺪا
ﻣﻲﻛﻨﺪ.
ﺑﺎﻳﺪ ﺗﻮﺟﻪ داﺷﺖ ﻛﻪ ﻋﻤﻠﻮﻧﺪ ] [BPدر ﺟﺪول ﺑﺎﻻ ﻧﻴﺎﻣﺪه اﺳﺖ .ﺗﺮﻛﻴﺐ ﻣﻨﻄﻘﻲ
mod=00و r/m=110ﻳﻚ ﺟﻔﺖ وﻳﮋه اي اﺳﺖ ﻛﻪ ﺣﺎﻟﺖ ﻣﺴﺘﻘﻴﻢ ﺣﺎﻓﻈﻪ را ﻣﺸﺨﺺ
bp ﻣﻲﻛﻨﺪ .اﻳﻦ ﺑﺪان ﻣﻌﻨﺎﺳﺖ ﻛﻪ ﻫﻴﭻ ﺣﺎﻟﺖ آدرس دﻫﻲ ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ ﺛﺒﺎت ﺑـﺎ ﺛﺒـﺎت
وﺟﻮد ﻧﺪارد .اﺳﻤﺒﻠﺮ ] [BPرا ﺑﻪ ] [BP+0ﺗﺒﺪﻳﻞ ﻛـﺮده و از ﺣﺎﻟـﺖ mod=01اﺳـﺘﻔﺎده
ﻛﺮده و ﺑﺎﻳﺖ ﺟﺎﺑﺠﺎﻳﻲ را ﺑﺮاﺑﺮ ﺻﻔﺮ ﻗﺮار ﻣﻲدﻫﺪ.
ﻛﻠﻤــﻪ آدرس در ﺟــﺪول ﺑﻌــﺪي در ﭘﺮاﻧﺘــﺰ ﻗــﺮار ﮔﺮﻓﺘــﻪ اﺳــﺖ زﻳــﺮا ﺗﻤــﺎم
r/m=110 ﻋﻤﻠﻮﻧﺪﻫﺎي ﺣﺎﻓﻈﻪ ﺑﻪ ﺑﺎﻳﺖﻫﺎي اﺿﺎﻓﻲ ﻫﺪف ﻧﻴﺎز ﻧﺪارﻧﺪ .اﮔـﺮ mod=00و
)آدرس دﻫﻲ ﻣﺴﺘﻘﻴﻢ( ﺑﺎﺷﺪ ،دو ﺑﺎﻳﺖ اﺿﺎﻓﻲ وﺟﻮد ﺧﻮاﻫﺪ داﺷﺖ.
[email protected]
WWW.IRANMEET.COM
٣٠٢
5 ﺿﻤﻴﻤﻪ ﺷﻤﺎره
ﺟﺪول ﻛﺪ اﺳﻜﻲ
ASCII Character Sets
MSD 0 1 2 3 4 5 6 7
LSD 000 001 010 011 100 101 110 111
0 0000 NUL DLE SP 0 @ P p
1 0001 SOH DC1 ! 1 A Q a q
2 0010 STX DC2 “ 2 B R b r
3 0011 ETX DC3 # 3 C S c s
4 0100 EOT DC4 $ 4 D T d t
5 0101 ENQ NAK % 5 E U e u
6 0110 ACK SYN & 6 F V f v
7 0111 BEL ETB , 7 G W g w
8 1000 BS CAN ( 8 H X h x
9 1001 HT EM ) 9 I Y i y
A 1010 LF SUB * : J Z j z
B 1011 VT ESC + ; K [ k {
C 1100 FF FS , < L \ i |
D 1101 CR GS - = M ] m }
E 1110 SO RS . > N ↑ n ~
F 1111 SI US / ? O ← o DEL
[email protected]
WWW.IRANMEET.COM
٣٠٣
6 ﺿﻤﻴﻤﻪ ﺷﻤﺎره
ﻛﺪ دﺳﺘﻮراﻟﻌﻤﻠﻬﺎ
[email protected]
WWW.IRANMEET.COM
٣٠٤
[email protected]
WWW.IRANMEET.COM
٣٠٥
[email protected]
WWW.IRANMEET.COM
٣٠٦
[email protected]
WWW.IRANMEET.COM
٣٠٧
[email protected]
WWW.IRANMEET.COM
٣٠٨
82
83 mod 000 r/m, (address), immediate byte
and reg16,imm8 11 000 reg, immediate byte
[email protected]
WWW.IRANMEET.COM
٣٠٩
[email protected]
WWW.IRANMEET.COM
٣١٠
[email protected]
WWW.IRANMEET.COM
٣١١
[email protected]
WWW.IRANMEET.COM
٣١٢
[email protected]
WWW.IRANMEET.COM
٣١٣
[email protected]
WWW.IRANMEET.COM
٣١٤
D4 aam 0a
D5 aad 0a
D6
D7 xlat (none)
D8 esc 0 mod 000 r/m, (address)
D9 esc 1 mod 001 r/m, (address)
DA esc 2 mod 010 r/m, (address)
DB esc 3 mod 011 r/m, (address)
DC esc 4 mod 100 r/m, (address)
DD esc 5 mod 101 r/m, (address)
DE esc 6 mod 110 r/m, (address)
DF esc 7 mod 111 r/m, (address)
E0 loopnz / loopne displacement byte
E1 loopz/loope displacement byte
E2 loop displacement byte
E3 jcxz displacement byte
E4 in al, port port byte
[email protected]
WWW.IRANMEET.COM
٣١٥
[email protected]
WWW.IRANMEET.COM
٣١٦
[email protected]
WWW.IRANMEET.COM
٣١٧
[email protected]
WWW.IRANMEET.COM
٣١٨
[email protected]
WWW.IRANMEET.COM
٣١٩
[email protected]
WWW.IRANMEET.COM
٣٢٠
-7ﺑﺮ اﺛﺮ ﺟﻤﻊ ﻛﺪام ﻳﻚ از زوج اﻋﺪاد ذﻳﻞ ،ﺳﺮرﻳﺰي رخ ﺧﻮاﻫﺪ داد )اﻋﺪاد در
ﻣﺒﻨﺎي 16ﻫﺴﺘﻨﺪ(؟
0A07,0FD3 اﻟﻒ.
0206,FFB0 ب.
FFE7,FFF6 ج.
483F,745A د.
[email protected]
WWW.IRANMEET.COM
٣٢١
-14روال PROC1از ﻧﻮع FARدو ﭘـﺎراﻣﺘﺮ N1و N2را از ﻃﺮﻳـﻖ ﭘـﺸﺘﻪ و ﺑـﻪ
ﺻﻮرت ذﻳﻞ درﻳﺎﻓﺖ ﻣﻲﻛﻨﺪ.
PUSH N1
PUSH N2
CALL PROC1
[email protected]
WWW.IRANMEET.COM
٣٢٢
[email protected]
WWW.IRANMEET.COM
٣٢٣
[email protected]
WWW.IRANMEET.COM
٣٢٤
-23ﻗﻄﻌﻪ ﻛﺪ ذﻳﻞ ﭼﻪ ﻛﺎري اﻧﺠﺎم ﻣﻲدﻫﺪ) .ﻓﺮض ﻣﻲﻛﻨﻴﻢ ﺛﺒﺎﺗﻬﺎي ﻻزم دﻳﮕـﺮ
ﺗﻨﻈﻴﻢ ﺷﺪهاﻧﺪ(.
[email protected]
WWW.IRANMEET.COM
٣٢٥
[email protected]
WWW.IRANMEET.COM
٣٢٦
[email protected]
WWW.IRANMEET.COM
٣٢٧
[email protected]
WWW.IRANMEET.COM
٣٢٨
اﻟﻒ12 .
ب9 .
ج15 .
د .اﺳﻤﺒﻠﺮ ﭘﻴﻐﺎم ﺧﻄﺎ ﻣﻲدﻫﺪ.
-33ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ ﺗﻌﺮﻳﻒ ﻣﺎﻛﺮوي ذﻳﻞ ﻛﺪاﻣﻴﻚ از ﻓﺮاﺧﻮاﻧﻲﻫﺎي ذﻳﻞ ﺑﺎﻋﺚ ﺑـﺮوز
ﺧﻄﺎ ﺧﻮاﻫﺪ ﺷﺪ.
MAC2 MACRO N1,N2,N3,N4
MOV AX,N1
>IFNB<N2
ADD AX,N2
ENDIF
>IFNB<N3
ADD AX,N3
[email protected]
WWW.IRANMEET.COM
٣٢٩
ENDIF
>IFNB<N4
ADD AX,N4
ENDIF
ENDM
MAC1 BX, CX,DX,1 اﻟﻒ.
MAC1 BX,CX,100 ب.
MAC1 BX,DX ج.
د .ﻫﻴﭽﻜﺪام
[email protected]
WWW.IRANMEET.COM
٣٣٠
AL -36ﻣﺤﺘﻮاي ALﭼﻪ ﻋﺪدي ﺑﺎﺷﺪ ﺗﺎ ﺑﻌﺪ از اﺟﺮاي دﺳـﺘﻮرات ذﻳـﻞ ﻣﻘـﺪار
ﺻﻔﺮ ﺷﻮد؟
XOR AL,0FH
00 اﻟﻒ.
FF ب.
0F ج.
F0 د.
IMUL -37اﮔﺮ AX=FF15و VALUE=0003ﺑﺎﺷـﺪ ﺑﻌـﺪ از اﺟـﺮاي دﺳـﺘﻮر
VALUEﻓﻠﮕﻬﺎي CFو OFﻛﺪاﻣﻴﻚ از ﻣﻘﺎدﻳﺮ ذﻳﻞ را دارﻧﺪ؟
CF=0 ، OF=1 اﻟﻒ.
CF=1 ، OF=0 ب.
CF=1 ، OF=1 ج.
CF=0 ، OF=0 د.
-38ﺑﺎ ﺗﻮﺟﻪ ﺑﻪ دﺳﺘﻮر ذﻳﻞ ﭼﻪ ﻋﺪدي در ﻣﺒﻨﺎي 16در BYTE1ذﺧﻴﺮه ﻣﻲﺷﻮد.
BYTE1 DB - 128
70 اﻟﻒ.
80 ب.
FF ج.
08 د.
-39ﺑﻌﺪ از اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ DXﺣﺎوي ﭼﻪ ﻋﺪدي ﺧﻮاﻫـﺪ ﺑـﻮد )در
ﻣﺒﻨﺎي (16؟
MOV BX,1
MOV AX,- 1
MUL BX
اﻟﻒ DX .ﺗﻐﻴﻴﺮي ﻧﻤﻲﻛﻨﺪ و ﻣﻘﺪار ﻗﺒﻠﻲ ﺧﻮد را دارد.
1111 ب.
0000 ج.
FFFF د.
[email protected]
WWW.IRANMEET.COM
٣٣١
[email protected]
WWW.IRANMEET.COM
٣٣٢
[email protected]
WWW.IRANMEET.COM
٣٣٣
[email protected]
WWW.IRANMEET.COM
٣٣٤
[email protected]
WWW.IRANMEET.COM
٣٣٥
[email protected]
WWW.IRANMEET.COM
٣٣٦
AX -60اﮔﺮ AX=A9D7و CL=04ﺑﺎﺷﺪ ﺑﻌﺪ از اﺟﺮاي دﺳﺘﻮر Sar ax, clﻣﻘـﺪار
ﭼﻴﺴﺖ؟
FA9D اﻟﻒ.
0F9D ب.
9D7F ج.
9D70 د.
[email protected]
WWW.IRANMEET.COM
٣٣٧
[email protected]
WWW.IRANMEET.COM
٣٣٨
[email protected]
WWW.IRANMEET.COM
٣٣٩
[email protected]
WWW.IRANMEET.COM
٣٤٠
[email protected]
WWW.IRANMEET.COM
٣٤١
[email protected]
WWW.IRANMEET.COM
٣٤٢
INC AX
LOOP P
ﭘﺲ از اﺟﺮاي ﻗﻄﻌﻪ ﺑﺮﻧﺎﻣﻪ ﻣﻘﺪار AXﭼﻴﺴﺖ؟
اﻟﻒ9 .
ب11 .
ج10 .
د65536 .
[email protected]
WWW.IRANMEET.COM
٣٤٣
-87اﮔﺮ اﺧﺘﻼف ﻋﺪدي ﻛﺪ اﺳﻜﻲ ﺣﺮوف ﻛﻮﭼﻚ و ﺑﺰرگ 32ﺑﺎﺷﺪ آﻧﮕﺎه ﺑﺮاي
ﺗﺒﺪﻳﻞ ﺣﺮوف ﻛﻮﭼﻚ ﺑﻪ ﺣﺮوف ﺑﺰرگ و ﺑﺎﻟﻌﻜﺲ از ﻛـﺪام دﺳـﺘﻮراﻟﻌﻤﻞ ذﻳـﻞ
ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد )ﻓﺮض ﻛﻨﻴﺪ ﺣﺮف ﻣﻮرد ﻧﻈﺮ در CLﺑﺎﺷﺪ(.
XOR CL,00100000 اﻟﻒ.
OR CL,00100000 ب.
NOT CL ج.
AND 00100000 د.
[email protected]
WWW.IRANMEET.COM
٣٤٤
[email protected]
WWW.IRANMEET.COM
٣٤٥
-94اﮔﺮ ax=0Fو bx=0Eﺑﺎﺷﺪ ﺑﻌﺪ از اﺟﺮاي دﺳﺘﻮراﻟﻌﻤﻞ زﻳﺮ ﻓﻠﮕﻬـﺎ ﺑـﻪ ﭼـﻪ
ﺻﻮرت ﺧﻮاﻫﺪ ﺷﺪ؟
cmp bx,ax
of=0 , cf=1, sf=1 اﻟﻒ.
of=0 , cf=0, sf=0 ب.
of=1 , cf=1, sf=1 ج.
of=0 , cf=1, sf=0 د.
[email protected]
WWW.IRANMEET.COM
٣٤٦
-97ﺑﺮاي اﻳﻨﻜﻪ ﻓﻘﻂ ﺑﻴﺖ ﺳـﻮم axرا ﻳـﻚ ﻛﻨـﻴﻢ از ﻛـﺪام ﻳـﻚ از دﺳـﺘﻮرات
ﻣﻲﺗﻮاﻧﻴﻢ اﺳﺘﻔﺎده ﻛﻨﻴﻢ؟
or ax,4 اﻟﻒ.
and ax,4 ب.
xor ax,4 ج.
not ax,4 د.
[email protected]
WWW.IRANMEET.COM
٣٤٧
mov cx,10
ll:
M
loop l l
10 .اﻟﻒ
0 .ب
1 .ج
-1 .د
[email protected]
WWW.IRANMEET.COM
٣٤٨
[email protected]
WWW.IRANMEET.COM
٣٤٩
[email protected]
WWW.IRANMEET.COM
٣٥٠
[email protected]
WWW.IRANMEET.COM
٣٥١
[email protected]
WWW.IRANMEET.COM
٣٥٢
-115ﺑﺮاي ﺟﺎﺑﻪ ﺟﺎ ﻧﻤﻮدن دو ﻣﻘﺪار ﺣﺎﻓﻈـﻪ Xو Yاز ﻧـﻮع WORDاز ﻛـﺪام
دﺳﺘﻮراﻟﻌﻤﻞ ﻣﻲﺗﻮان اﺳﺘﻔﺎده ﻧﻤﻮد؟
MOV X,Y اﻟﻒ.
XCHG X,Y ب.
LEA X,Y ج.
د .ﻫﻴﭽﻜﺪام
[email protected]
WWW.IRANMEET.COM
٣٥٣
A2B4+
88F3
[email protected]
WWW.IRANMEET.COM
٣٥٤
[email protected]
WWW.IRANMEET.COM
٣٥٥
[email protected]
WWW.IRANMEET.COM
٣٥٦
[email protected]
WWW.IRANMEET.COM
٣٥٧
[email protected]
WWW.IRANMEET.COM
٣٥٨
[email protected]
WWW.IRANMEET.COM
٣٥٩
ﺑﺮاﺑـﺮ BX ﺑﺎﺷﺪ و ﻣﺤﺘﻮي 101010000111001B0 ﺑﺮاﺑﺮ ﺑﺎ AX -138اﮔﺮ ﻣﺤﺘﻮي
ADDﻛﺪام ﮔﺰﻳﻨـﻪ AX,BX ﺑﺎ 100010101101010B0ﺑﺎﺷﺪ ﭘﺲ از اﺟﺮاي دﺳﺘﻮر
ﺻﺤﻴﺢ اﺳﺖ؟
OF=1, SF=1, AF=1, PF=1 اﻟﻒ.
OF=1, SF=1, AF=0, PF=0 ب.
OF=1, SF=0, AF=1, PF=1 ج.
OF=1, SF=0, AF=1, PF=1 د.
-140ﺑﺮاي ﻣﻜﻤﻞ ﻧﻤﻮدن ﺑﻴﺖﻫﺎي ﺷﻤﺎره ﻓﺮد ﺛﺒﺎت ALاز ﺟﻪ دﺳﺘﻮري اﺳﺘﻔﺎده
ﻣﻲﮔﺮدد؟
XOR AL,AAH اﻟﻒ.
XOR AL,0AAH ب.
OR AL, 0AAH ج.
AND AL, 0AAH د.
-141ﻛﺪاﻣﻴﻚ از دﺳﺘﻮراﻟﻌﻤﻠﻬﺎي ذﻳﻞ ﻣﺠﺎز ﻧﻴﺴﺖ؟
PUSHF AX اﻟﻒ.
POP AL ب.
PUSH AL ج.
د .ﻛﻠﻴﻪ ﻣﻮارد
[email protected]
WWW.IRANMEET.COM
٣٦٠
[email protected]
WWW.IRANMEET.COM
٣٦١
[email protected]
WWW.IRANMEET.COM
٣٦٢
[email protected]
WWW.IRANMEET.COM
٣٦٣
23 اﻟﻒ.
20 ب.
24 ج.
22 د.
[email protected]
WWW.IRANMEET.COM
٣٦٤
[email protected]
WWW.IRANMEET.COM
٣٦٥
-161ﺛﺒﺎت ESﺑﺮاي ﻳﻚ "ﺛﺒﺎت ﻗﻄﻌﻪ داده اﺿﺎﻓﻲ" ﻣﻔﻴﺪ واﻗﻊ ﺷﺪه اﺳﺖ .اﮔﺮ
و …( ﻧﺪاﺷـﺘﻪ GS, FS ﭼﻨﻴﻦ اﺳﺖ ﭘﺲ ﭼﺮا ﺑﻴﺶ از ﻳﻚ ﺛﺒـﺎت اﺿـﺎﻓﻲ )ﻣـﺜﻼً
ﺑﺎﺷﻴﻢ؟
اﻟﻒ .ﺑﻴﺶ از ﻳﻜﻲ ﻣﻮرد ﻧﻴﺎز ﻣﺮﻛﺰ واﻗﻊ ﻧﺨﻮاﻫﺪ ﺷﺪ.
ب .ﺗﻜﻨﻮﻟﻮژي زﻣﺎن ﺳـﺎﺧﺖ 8086ﻣﺤـﺪودﻳﺖ داﺷـﺘﻪ اﺳـﺖ … اﻳﻨﻜـﻪ از ﺳﻴـﺴﺘﻢ
80386آﻧﺮا ﻣﻲﺑﻴﻨﻴﻢ )ﻳﻌﻨﻲ ﺛﺒﺎﺗﻬﺎي اﺿﺎﻓﻲ ﻋﻼوه ﺑﺮ (FS
ج .اﺻﻮﻻً ﺛﺒﺎت ESﺑﻌﻨﻮان ﻳﻚ ﺛﺒﺎت داده اﺿﺎﻓﻲ اﺳﺘﻔﺎده ﻧﻤﻲﺷﻮد.
د .ﻣﻤﻜﻦ اﺳﺖ اﻳﻦ ﻛﺎر ﻋﻤﻠﻲ ﻧﺒﺎﺷﺪ ،اﻣﺎ ﺗﺎﻛﻨﻮن ﻣﺸﺎﻫﺪه ﺷﺪه اﺳﺖ )ﻳﻌﻨﻲ اﺳﺘﻔﺎده از
ﺛﺒﺎﺗﻬﺎي ﻗﻄﻌﻪ ﻋﻼوه ﺑﺮ ( FS
[email protected]
WWW.IRANMEET.COM
٣٦٦
-165در 8086 CPUدو دﺳﺘﻮر وﺟﻮد دارد ﻛﻪ ﻇﺎﻫﺮاً ﻋﻴﻨﺎً ﻳﻚ ﻛـﺎر ﻣـﻲﻛﻨﻨـﺪ.
ﭼﺮا اﻳﻦ دو دﺳﺘﻮراﻟﻌﻤﻞ در ﻛﻨﺎر ﻳﻜﺪﻳﮕﺮ وﺟﻮد دارﻧـﺪ؟ )در ﺻـﻮرﺗﻴﻜﻪ وﺟـﻮد
ﻳﻜﻲ از آﻧﻬﺎ ﻛﺎﻓﻲ ﺑﻪ ﻧﻈﺮ ﻣﻲرﺳﺪ(:
INC DX, ADD AX,1
. اﻟﻒ .ﺑﺪﻟﻴﻞ اﻳﻨﻜﻪ ﺷﺎﻳﺪ ﺑﺮﻧﺎﻣﻪﻧﻮﻳﺲ ﻳﻜﻲ از اﻳﻦ دو ﻓﺮم را ﻧﺘﻮاﻧﺪ ﺑﺨﺎﻃﺮ ﺑﺴﭙﺎرد
INCﻳﻚ ﺑﺎﻳﺘﻲ اﺳﺖ. DX ب .دﺳﺘﻮر ADDدو ﺑﺎﺑﺘﻲ اﺳﺖ در ﺻﻮرﺗﻴﻜﻪ دﺳﺘﻮر
INCدو ﺑﺎﻳﺘﻲ اﺳﺖ. DX ج .دﺳﺘﻮر ADDﻳﻚ ﺑﺎﻳﺘﻲ اﺳﺖ ،در ﺻﻮرﺗﻴﻜﻪ دﺳﺘﻮر
د .اﻳﻦ دو دﺳﺘﻮر دﻗﻴﻘﺎً ﻣﻌﺎدل ﻣﻲﺑﺎﺷﻨﺪ و ﻳﻚ ﻣﻌﺎدل ﺑﺎﻳﻨﺮي ﻛﺎﻣﻼً ﻳﻜﺴﺎن دارﻧﺪ
[email protected]
WWW.IRANMEET.COM
٣٦٧
[email protected]
WWW.IRANMEET.COM
٣٦٨
واژه ﻧﺎﻣﻪ
Abacus ﭼﺮﺗﻜﻪ
Abort ﻧﺎﻗﺺ ﺗﻤﺎم ﺷﺪن-ﻣﺘﻮﻗﻒ ﻛﺮدن
Abstract ﻣﺠﺮد – اﻧﺘﺰاع
Access دﺳﺘﺮﺳﻲ
Access time زﻣﺎن دﺳﺘﺮﺳﻲ
Accounting ﺣﺴﺎﺑﺪاري
Accumulator ﻣﺨﺰن- اﻧﺒﺎره-آﻛﻮﻣﻮﻻﺗﻮر
Action ﻋﻤﻞ
Action cycle دوره ﻳﺎ ﺳﻴﻜﻞ ﻋﻤﻞ
Action rate ﻣﻴﺰان ﻋﻤﻞ
Active ﻓﻌﺎل
Actual واﻗﻌﻲ
Actual address آدرس واﻗﻌﻲ
Actual decimal point ﻧﻘﻄﻪ اﻋﺸﺎر واﻗﻌﻲ
Add ﺟﻤﻊ ﻛﺮدن
Addendum ﺿﻤﻴﻤﻪ
Adder ﺟﻤﻊ ﻛﻨﻨﺪه
[email protected]
WWW.IRANMEET.COM
٣٦٩
Addition ﺟﻤﻊ
Additional اﺿﺎﻓﻲ
Address آدرس – ﻧﺸﺎﻧﻲ
Addressee ﮔﻴﺮﻧﺪه – ﻣﺨﺎﻃﺐ
Addressing system ﺳﻴﺴﺘﻢ آدرس دﻫﻲ
Adjacent ﻧﺰدﻳﻚ-ﻣﺠﺎور
Adjective ﺻﻔﺖ
Alarm ﺳﻴﮕﻨﺎل – آژﻳﺮ
Alarm display ﻧﻤﺎﻳﺶ ﺳﻴﮕﻨﺎل
Algebra ﺟﺒﺮ
Algorithm اﻟﮕﻮرﻳﺘﻢ
Alphabet ﺣﺮوف اﻟﻔﺒﺎء
Ambiguity اﺑﻬﺎم
Analog ﻗﻴﺎﺳﻲ
Analysis ﺗﺤﻠﻴﻞ-آﻧﺎﻟﻴﺰ
And gate ''و ﻣﺪار
And operator ''و ﻋﻤﻠﮕﺮ
Application ﻛﺎرﺑﺮد
Application program ﺑﺮﻧﺎﻣﻪ ﻛﺎرﺑﺮدي
[email protected]
WWW.IRANMEET.COM
٣٧٠
Applicant ﻣﺘﻘﺎﺿﻲ
Approach دﺳﺘﺮﺳﻲ-ﺗﻤﺎﻳﻞ-ﻧﺰدﻳﻜﻲ
Arbitrary دﻟﺨﻮاه-اﺧﺘﻴﺎري
Arithmetic )ﻋﻠﻢ( ﺣﺴﺎب
Arithmetical ﺣﺴﺎﺑﻲ
Arithmetic register ﺛﺒﺎت ﻣﺤﺎﺳﺒﺎﺗﻲ
Arithmetic section ﻗﺴﻤﺖ ﻣﺤﺎﺳﺒﺎﺗﻲ
Arithmetic unit واﺣﺪ ﻣﺤﺎﺳﺒﺎﺗﻲ
Arm ﺑﺎزو
Array آراﻳﻪ
Artificial intelligence ﻫﻮش ﻣﺼﻨﻮﻋﻲ
Artificial language زﺑﺎن ﻣﺼﻨﻮﻋﻲ
Ascending ﺻﻌﻮدي
Ascending sort ﻣﺮﺗﺐ ﻧﻤﻮدن ﺻﻌﻮدي
ASCII ﻛﺪ آﻣﺮﻳﻜﺎﺋﻲ ﺑﺮاي ﻣﺒﺎدﻟﻪ اﻃﻼﻋﺎت
Assemble ﻣﻮﻧﺘﺎژ ﻛﺮدن-ﻣﻮﻧﺘﺎژ
Audio ﺷﻨﻮاﺋﻲ
Audit ﻣﻤﻴﺰي-رﺳﻴﺪﮔﻲ
Automatic اﺗﻮﻣﺎﺗﻴﻚ-ﺧﻮدﻛﺎر
[email protected]
WWW.IRANMEET.COM
٣٧١
Auxiliary ﻛﻤﻜﻲ
Auxiliary operations ﻋﻤﻠﻴﺎت ﻛﻤﻜﻲ
Available ﻣﻮﺟﻮد
Background زﻣﻴﻨﻪ
Back up ﭘﺸﺘﻴﺒﺎﻧﻲ
Back up system ﺳﻴﺴﺘﻢ ﭘﺸﺘﻴﺒﺎﻧﻲ
Base data داده ﻣﺒﻨﺎ
Base number ﻋﺪد ﻣﺒﻨﺎ
Base register ﺛﺒﺎت ﻣﺒﻨﺎ ﻳﺎ ﺷﺎﺧﺺ
Begin ﺷﺮوع ﻛﺮدن – ﺷﺮوع
Bi Conditional دو ﺷﺮﻃﻲ
Bidirectional دو ﺟﻬﺘﻲ
Binary دودوﻳﻲ
Binary code ﻛﺪدودوﺋﻲ
Binary digits ارﻗﺎم دودوﺋﻲ
Binary half adder ﻧﻴﻢ ﺟﻤﻊ ﻛﻨﻨﺪه دودوﺋﻲ
Binary logic ﻣﻨﻄﻖ دودوﺋﻲ
Binary numbers اﻋﺪاد دودوﺋﻲ
Binary notation ﻧﻤﺎﻳﺶ دودوﺋﻲ
[email protected]
WWW.IRANMEET.COM
٣٧٢
[email protected]
WWW.IRANMEET.COM
٣٧٣
Cell ﺳﻠﻮل
Center ﻣﺮﻛﺰ
Central ﻣﺮﻛﺰي
Central processor ﭘﺮدازﺷﮕﺮ ﻣﺮﻛﺰي
Chain زﻧﺠﻴﺮ
Character recognition ﺷﻨﺎﺧﺖ ﻛﺎرﻛﺘﺮ
Check bit ﺑﻴﺖ ﻛﻨﺘﺮل
Check digit رﻗﻢ ﻛﻨﺘﺮﻟﻲ
Chip ﺗﺮاﺷﻪ
Circuit ﻣﺪار
Clear ﭘﺎك ﻛﺮدن
Column ﺳﺘﻮن
Combination ﺗﺮﻛﻴﺐ
Command ﻓﺮﻣﺎن
Comment ﻣﻼﺣﻈﺎت – ﻧﻈﺮﻳﻪ-ﺗﻔﺴﻴﺮ
Communications ارﺗﺒﺎﻃﺎت
Compare ﻣﻘﺎﻳﺴﻪ ﻛﺮدن
Comparing unit واﺣﺪ ﻣﻘﺎﻳﺴﻪ ﻛﻨﻨﺪه
Comparison ﻣﻘﺎﻳﺴﻪ
[email protected]
WWW.IRANMEET.COM
٣٧٤
[email protected]
WWW.IRANMEET.COM
٣٧٥
Counter ﺷﻤﺎرﻧﺪه
Critical ﺑﺤﺮاﻧﻲ
Critical path ﻣﺴﻴﺮ ﺑﺤﺮاﻧﻲ
CRT ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ
Cylinder ﺳﻴﻠﻨﺪر
Data داده
Data base ﭘﺎﻳﮕﺎه داده
Data description ﺗﻮﺻﻴﻒ داده
Date error ﺧﻄﺎي داده
Data location ﻣﺤﻞ داده
Data management ﻣﺪﻳﺮﻳﺖ داده
Data manipulation دﺳﺘﻜﺎري داده
Data preparation ﺗﺪارك داده
Data processing ﭘﺮدازش داده
Data rules ﻗﻮاﻋﺪ داده
Data transfer اﻧﺘﻘﺎل داده
Deciding ﺗﺼﻤﻴﻢ ﮔﻴﺮي
Decimal اﻋﺸﺎري
Decimal digit رﻗﻢ اﻋﺸﺎري
[email protected]
WWW.IRANMEET.COM
٣٧٦
[email protected]
WWW.IRANMEET.COM
٣٧٧
Design ﻃﺮح
Device وﺳﻴﻠﻪ – دﺳﺘﮕﺎه
Diagnosis ﺗﺸﺨﻴﺺ
Diagram ﻧﻤﻮدار
Difference اﺧﺘﻼف
Digital clock ﺳﺎﻋﺖ دﻳﺠﻴﺘﺎل
Disk دﻳﺴﻚ
Disk operating system DOS ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ دﻳﺴﻚ
Display ﻧﻤﺎﻳﺶ
Display unit واﺣﺪ ﻧﻤﺎﻳﺶ
Distance ﻓﺎﺻﻠﻪ
Distribute ﺗﻮزﻳﻊ ﻛﺮدن
Division ﺗﻘﺴﻴﻢ
Document ﺳﻨﺪ-ﻣﺪرك
Documentation ﻣﺴﺘﻨﺪات
Double length ﻃﻮل ﻣﻀﺎﻋﻒ
Double precision دﻗﺖ ﻣﻀﺎﻋﻒ
Dynamic ﭘﻮﻳﺎ
Dynamic memory ﺣﺎﻓﻈﻪ ﭘﻮﻳﺎ
[email protected]
WWW.IRANMEET.COM
٣٧٨
Effective ﻣﻮﺛﺮ
Effective speed ﺳﺮﻋﺖ ﻣﺆﺛﺮ
Effective address آدرس ﻣﺆﺛﺮ
Efficiency ﻛﺎراﺋﻲ
End of file اﻧﺘﻬﺎي ﻓﺎﻳﻞ
Epitome ﺧﻼﺻﻪ-رﺋﻮس ﻣﻄﺎﻟﺐ
Equality ﻛﻴﻔﻴﺖ
Equipment ﺗﺠﻬﻴﺰات
Erase ﭘﺎك ﻛﺮدن-از ﺑﻴﻦ ﺑﺮدن
Eraser ﭘﺎك ﻛﻦ-ﭘﺎك ﻛﻨﻨﺪه
Error ﺧﻄﺎ
Error code رﻣﺰ ﺧﻄﺎ
Error detection ﺗﺸﺨﻴﺺ ﺧﻄﺎ
Error message ﭘﻴﻐﺎم ﺧﻄﺎ
Error rate ﻧﺮخ ﺧﻄﺎ
Exchange ﻣﺒﺎدﻟﻪ
Execute اﺟﺮا ﻛﺮدن
Execution اﺟﺮا
Execution cycle ﺳﻴﻜﻞ اﺟﺮا
[email protected]
WWW.IRANMEET.COM
٣٧٩
Exit ﺧﺮوج
Exit point ﻧﻘﻄﻪ ﺧﺮوج
Expression ﻋﺒﺎرت
Extension ﺗﻤﺪﻳﺪ-ﺗﻮﺳﻌﻪ-ﺑﺴﻂ
External ﺧﺎرﺟﻲ
External interrupt وﻗﻔﻪ ﺧﺎرﺟﻲ
External labels ﺑﺮﭼﺴﺐﻫﺎي ﺧﺎرﺟﻲ
Facility ﺗﺴﻬﻴﻼت
Factor ﻓﺎﻛﺘﻮر –ﻋﺎﻣﻞ – ﺿﺮﻳﺐ
Failure ﺷﻜﺴﺖ – ﺧﺮاﺑﻲ
Fixed ﺛﺎﺑﺖ
Fixed length ﻃﻮل ﺛﺎﺑﺖ
Flag ﭘﺮﭼﻢ-ﻓﻠﮓ
Floating point ﻧﻘﻄﻪ اﻋﺸﺎر ﺷﻨﺎور
Floating point numbers اﻋﺪاد ﺑﺎ ﻧﻘﻄﻪ اﻋﺸﺎر ﺷﻨﺎور
Flowchart ﻓﻠﻮﭼﺎرت – ﻧﻤﻮدار
Folder ﭘﻮﺷﻪ
Format ﺷﻜﻞ-ﻗﺎﻟﺐ
Gate دروازه ﻣﺪار
[email protected]
WWW.IRANMEET.COM
٣٨٠
General ﻋﻤﻮﻣﻲ
Generator اﻳﺠﺎد ﻛﻨﻨﺪه
Global ﺳﺮاﺳﺮي
Half ﻧﻴﻢ-ﻧﺼﻒ
Halt ﻣﺘﻮﻗﻒ ﻛﺮدن
Hardware ﺳﺨﺖ اﻓﺰار
Heading ﻋﻨﻮان-ﺗﻴﺘﺮ
Help ﻛﻤﻚ
High speed ﺳﺮﻋﺖ ﺑﺎﻻ
High order ﻣﺮﺗﺒﻪ ﺑﺎﻻ
Identifier ﺷﻨﺎﺳﻪ
Idle time زﻣﺎن ﺑﻴﻜﺎري
Ignore اﻏﻤﺎض ﻛﺮدن
Image ﺗﺼﻮﻳﺮ
Implicit ﺿﻤﻨﻲ
Inactive ﻏﻴﺮﻓﻌﺎل
Inclusive درﺑﺮﮔﻴﺮﻧﺪه
Increment اﻓﺰاﻳﺶ
Independent ﻣﺴﺘﻘﻞ
[email protected]
WWW.IRANMEET.COM
٣٨١
Index ﺷﺎﺧﺺ-اﻧﺪﻳﺲ
Indexed address آدرس ﺷﺎﺧﺺ دار
Indicate ﻧﺸﺎن دادن – ﺗﻌﻴﻴﻦ ﻛﺮدن
Indirect ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ
Indirect address آدرس ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ
Indirect reference address آدرس ارﺟﺎع ﻏﻴﺮ ﻣﺴﺘﻘﻴﻢ
Information اﻃﻼﻋﺎت
Information retrieval ﺑﺎزﻳﺎﺑﻲ اﻃﻼﻋﺎت
Input ورودي
Input data داده ورودي
Instruction دﺳﺘﻮراﻟﻌﻤﻞ
Instruction address آدرس دﺳﺘﻮراﻟﻌﻤﻞ
Instruction address register ﺛﺒﺎت آدرس دﺳﺘﻮراﻟﻌﻤﻞ
Integer ﺻﺤﻴﺢ
Integrated system ﺳﻴﺴﺘﻢ ﻣﺠﺘﻤﻊ
Interface ﻣﻴﺎﻧﺠﻲ-واﺳﻄﻪ
Internal داﺧﻠﻲ
Internal code ﻛﺪ ﻳﺎ رﻣﺰ داﺧﻠﻲ
Internal sort ﻣﺮﺗﺐ ﺳﺎزي داﺧﻠﻲ
[email protected]
WWW.IRANMEET.COM
٣٨٢
Interrupt وﻗﻔﻪ
Interrupt system ﺳﻴﺴﺘﻢ وﻗﻔﻪ
Iteration ﺗﻜﺮار
Iterative ﺗﻜﺮاري
Key ﻛﻠﻴﺪ
Keyboard ﺻﻔﺤﻪ ﻛﻠﻴﺪ
Label ﺑﺮﭼﺴﺐ
Language زﺑﺎن
Language compiler ﻣﺘﺮﺟﻢ زﺑﺎن
Level ﺳﻄﺢ
Library ﻣﺮﻛﺰ اﺳﻨﺎد-ﻛﺘﺎﺑﺨﺎﻧﻪ
Light ﻧﻮر
Limit ﻣﺤﺪود ﻛﺮدن
Limited ﻣﺤﺪود
Link اﺗﺼﺎل-ﻣﺘﺼﻞ ﻛﺮدن
List ﻓﻬﺮﺳﺖ
Load ﺑﺎرﻛﺮدن
Loader ﺑﺮﻧﺎﻣﻪ ﺳﻴﺴﺘﻢ ﻋﺎﻣﻞ ﺑﺮاي ﺑﺎر ﻛﺮدن ﺑﺮﻧﺎﻣﻪ در ﺣﺎﻓﻈﻪ
Location ﻣﺤﻞ – ﺟﺎ
Logical ﻣﻨﻄﻘﻲ
Logical operation ﻋﻤﻠﻴﺎت ﻣﻨﻄﻘﻲ
Logical operator ﻋﻤﻠﮕﺮ ﻣﻨﻄﻘﻲ
Logical shift ﺷﻴﻔﺖ ﻣﻨﻄﻘﻲ
Loop ﺣﻠﻘﻪ ﺗﻜﺮار-ﺣﻠﻘﻪ
[email protected]
WWW.IRANMEET.COM
٣٨٣
Low ﭘﺎﺋﻴﻦ
Low order ﻣﺮﺗﺒﻪ ﭘﺎﺋﻴﻦ
Low order digit رﻗﻢ ﻣﺮﺗﺒﻪ ﭘﺎﺋﻴﻦ
LSD ﺑﻴﺖ ﺑﺎﻛﻤﺘﺮﻳﻦ ارزش
Magnetic ﻣﻐﻨﺎﻃﻴﺴﻲ
Magnetic disk دﻳﺴﻚ ﻣﻐﻨﺎﻃﻴﺴﻲ
Main اﺻﻠﻲ
Maintenance ﺗﻌﻤﻴﺮ و ﻧﮕﻬﺪاري
Major اﺻﻠﻲ
Major key ﻛﻠﻴﺪ اﺻﻠﻲ
Malfunction از ﻛﺎر اﻓﺘﺎدﮔﻲ-ﺧﺮاﺑﻲ
Match ﺟﻮر-ﺗﻄﺒﻴﻖ
Matching error ﺧﻄﺎي ﺗﻄﺒﻴﻖ
Mathematical رﻳﺎﺿﻲ
Matrix ﻣﺎﺗﺮﻳﺲ
Mechanism روش-ﻣﻜﺎﻧﻴﺰم
Medium وﺳﻴﻠﻪ ﺑﺮاي ﺿﺒﻂ داده
Memory ﺣﺎﻓﻈﻪ
Memory address register ﺛﺒﺎت آدرس ﺣﺎﻓﻈﻪ
Memory cycle ﺳﻴﻜﻞ ﻳﺎ دوره ﺣﺎﻓﻈﻪ
Memory dump ﺗﺨﻠﻴﻪ ﺣﺎﻓﻈﻪ
Memory exchange ﻣﺒﺎدﻟﻪ ﺣﺎﻓﻈﻪ
Memory hierarchy ﺳﻠﺴﻠﻪ ﻣﺮاﺗﺐ ﺣﺎﻓﻈﻪ
Memory location ﻣﺤﻞ ﺣﺎﻓﻈﻪ
[email protected]
WWW.IRANMEET.COM
٣٨٤
[email protected]
WWW.IRANMEET.COM
٣٨٥
Operator ﻋﻤﻠﮕﺮ-اﭘﺮاﺗﻮر
Operator error ﺧﻄﺎي اﭘﺮاﺗﻮر
Option ﮔﺰﻳﻨﻪ
Order ﺗﺮﺗﻴﺐ
Out of range ﺧﺎرج از داﻣﻨﻪ
Output ﺧﺮوﺟﻲ
Output equipment ﺗﺠﻬﻴﺰات ﺧﺮوﺟﻲ
Output unit واﺣﺪ ﺧﺮوﺟﻲ
Overflow ﺳﺮرﻳﺰﺷﺪن-ﺳﺮرﻳﺰي
Overflow check ﺑﺮرﺳﻲ ﺳﺮرﻳﺰي
Page ﺻﻔﺤﻪ
Page address آدرس ﺻﻔﺤﻪ
Page heading ﻋﻨﻮان ﺻﻔﺤﻪ
Paging ﺻﻔﺤﻪ ﺑﻪ ﺻﻔﺤﻪ ﻛﺮدن
Parallel ﻣﻮازي
Parallel operation ﻋﻤﻠﻴﺎت ﻣﻮازي
Parity bit ﺑﻴﺖ ﺗﻮازن
Path ﻣﺴﻴﺮ
Pattern اﻟﮕﻮ
Pattern recognition ﺗﺸﺨﻴﺺ اﻟﮕﻮ
Perform ﻋﻤﻞ ﻛﺮدن-اﻧﺠﺎم دادن
Peripheral ﺟﺎﻧﺒﻲ
Peripheral equipment وﺳﺎﺋﻞ ﺟﺎﻧﺒﻲ –ﺗﺠﻬﻴﺰات ﺟﺎﻧﺒﻲ
Permanent داﺋﻢ
[email protected]
WWW.IRANMEET.COM
٣٨٦
Phase ﻣﺮﺣﻠﻪ-ﻓﺎز
Point ﻧﻘﻄﻪ
Pointer اﺷﺎرهﮔﺮ
Position ﻣﻮﻗﻌﻴﺖ – ﺟﺎ
Precision دﻗﺖ
Predefined از ﻗﺒﻞ ﺗﻌﺮﻳﻒ ﺷﺪه
Primary اوﻟﻴﻪ-اﺻﻠﻲ
Printer ﭼﺎﭘﮕﺮ
Priority اوﻟﻮﻳﺖ
Priority interrupt وﻗﻔﻪ اوﻟﻮﻳﺖ دار
Problem ﻣﺴﺄﻟﻪ
Procedural روﻳﻪاي
Procedure روﻳﻪ-روال
Process ﻓﺮآﻳﻨﺪ
Processor ﭘﺮدازﺷﮕﺮ
Production ﻣﺤﺼﻮل-ﺗﻮﻟﻴﺪ
Program ﺑﺮﻧﺎﻣﻪ
Program compilation ﺗﺮﺟﻤﺔ ﺑﺮﻧﺎﻣﻪ
Program error ﺧﻄﺎي ﺑﺮﻧﺎﻣﻪ
Programmer ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺲ
Programming ﺑﺮﻧﺎﻣﻪ ﻧﻮﻳﺴﻲ
Program segment ﻗﻄﻌﻪ ﻳﺎ ﻗﺴﻤﺘﻲ از ﺑﺮﻧﺎﻣﻪ
Quantity ﻣﻘﺪار
Queue ﺻﻒ
[email protected]
WWW.IRANMEET.COM
٣٨٧
[email protected]
WWW.IRANMEET.COM
٣٨٨
Return ﺑﺮﮔﺸﺖ
Rules ﻗﻮاﻋﺪ
Run اﺟﺮا ﻛﺮدن ﺑﺮﻧﺎﻣﻪ-اﺟﺮاي ﺑﺮﻧﺎﻣﻪ
Sample ﻧﻤﻮﻧﻪ
Scan ﺑﺎ دﻗﺖ ﻧﮕﺎه ﻛﺮدن-ﺑﺮرﺳﻲ ﻛﺮدن
Screen ﺻﻔﺤﻪ ﻧﻤﺎﻳﺶ
Section ﺑﺨﺶ
Segment ﻗﻄﻌﻪ-ﻗﺴﻤﺖ
Segmentation ﻗﺴﻤﺖ ﻛﺮدن-ﻗﻄﻌﻪ ﻗﻄﻌﻪ ﻛﺮدن
Separator ﺟﺪا ﻛﻨﻨﺪه
Sequence دﻧﺒﺎﻟﻪ-ﺗﺮﺗﻴﺐ
Sequential ﻣﺘﻮاﻟﻲ
Sequential processing ﭘﺮدازش ﻣﺘﻮاﻟﻲ
Serial access دﺳﺘﺮﺳﻲ ﺳﺮي
Set ﻗﺮاردادن-ﺗﻌﻴﻴﻦ ﻛﺮدن-ﺗﻨﻈﻴﻢ ﻛﺮدن –ﻣﻴﺰان ﻛﺮدن – ﻣﺠﻤﻮﻋﻪ
Shared storage ﺣﺎﻓﻈﻪ اﺷﺘﺮاﻛﻲ
Shift ﺟﺎﺑﻪﺟﺎﺋﻲ
Sign ﻋﻼﻣﺖ
Signed ﻋﻼﻣﺘﺪار
Significance ﺑﺎاﻫﻤﻴﺖ
Software ﻧﺮم اﻓﺰار
Solution راه ﺣﻞ
Sort ﻣﺮﺗﺐ ﻧﻤﻮدن
Sort bubble ﻣﺮﺗﺐ ﻛﺮدن ﺑﻪ روش ﺣﺒﺎﺑﻲ
[email protected]
WWW.IRANMEET.COM
٣٨٩
Space ﻓﻀﺎ
Stack ﭘﺸﺘﻪ
Standard اﺳﺘﺎﻧﺪارد
Status وﺿﻌﻴﺖ
Step ﮔﺎم-ﻣﺮﺣﻠﻪ-ﻗﺪم
Storage ﺣﺎﻓﻈﻪ
Storage block ﺑﻠﻮك ﺣﺎﻓﻈﻪ
String رﺷﺘﻪ
Symbol ﻧﻤﺎد
Symbolic address آدرس ﻧﻤﺎدي
Symbol table ﺟﺪول ﻧﻤﺎدي
System ﺳﻴﺴﺘﻢ – دﺳﺘﮕﺎه
Table ﺟﺪول
Table lookup ﺟﺴﺘﺠﻮي ﺟﺪول
Tape ﻧﻮار ﻣﻐﻨﺎﻃﻴﺴﻲ
Temporary ﻣﻮﻗﺖ
Terminal ﻧﻘﻄﻪ ﻧﻬﺎﺋﻲ-ﺗﺮﻣﻴﻨﺎل
Test data داده ﺟﻬﺖ ﺗﺴﺖ
Time زﻣﺎن
Time scale ﻣﻘﻴﺎس زﻣﺎن
Transmission اﻧﺘﻘﺎل
Unconditional ﺑﺪون ﺷﺮط
Unit ﻗﺴﻤﺖ-واﺣﺪ
User ﻛﺎرﺑﺮ
[email protected]
WWW.IRANMEET.COM
٣٩٠
Variable ﻣﺘﻐﻴﺮ
Variable length ﺑﻄﻮل ﻣﺘﻐﻴﺮ
Verify ﺑﺮرﺳﻲ ﻛﺮدن
Virtual ﻣﺠﺎزي
Waiting state وﺿﻌﻴﺖ اﻧﺘﻈﺎر
Warning اﺧﻄﺎر
Word ﺷﺎﻧﺰده ﺑﻴﺖ-ﻛﻠﻤﻪ
Write ﻧﻮﺷﺘﻦ
Zero ﺻﻔﺮ
Zero divide ﺗﻘﺴﻴﻢ ﺑﺮ ﺻﻔﺮ