Professional Documents
Culture Documents
الدورة الشاملة فى ال Assembly
الدورة الشاملة فى ال Assembly
ATREا
ﻡ ا
ا
رس اول – أ ا
Number Systems
ام أﻥ
ا ار
ا
...
: Binary
ها ه ام ا وه ا"
ام !ب!,...ب ﻡ اا *+ﻡ ن ﻡ دوا $آ...
$%ه .اوا - $ﺕ$ف اـ
assemblyأو اـ visual basicأو أي 4ء ﻡ ه .ا"ت..ه ﺕ
ﻡ* ﻡ 6ا
ر ا ...$%و7د ﺕر آ $%أو م و7د
آ ، $%و= اﺕ<; :ان ی$ﻡ
! 8و7د ا
ر $ﻡ 1 8وم و7د$ .ﻡ. 0 8
ام ا إذن ی
ن ﻡ ر= CD,ه 0و ... 1و
E,ن أس ام ) .(BaseیIوي . 2
ﻡE, Kن ﺕ
ﻡ* ه: .
]MOV EAX,DWORD PTR DS:[40A710h
ه *Mی
ا
ﻡ* ﻡ %ا *+اوا $ا !
$%ب :أﻥ%
1010000100010000101001110100000000000000
أﻡ ﺕ
Push EAX
%,
1010000
اﻥ: $
decimal binary
0 0
1 1
2 10
3 11
4 100
5 101
6 110
7 111
8 1000
9 1001
إن أول ,) Vا( ی low bit :Iأو ) Least Significant Bit (LSBأي ا_ Vذو ا
Dا=* ،و ,اE, *Dن V $+d
) ,اIر( ی high bit :Iأو ) Most Significant Bit (MSBأي ا_ Vذو ا
Dا.:
ﻡKﺡ :ﻡ ﻥDل E, 10100101bﻥ ﻥ = _ی$ي و%ا وﺽ ﺡ$ف , bﻥ%ی ا ...=$ها ...h$4 l
ﻡذا إذا أردﻥ 67دی م ا ؟ m -س د ﻥ$ى...
0=0+0
1=1+0
10=1+1
ی
ن ها ام ﻡ 16ر= )رﻡ (8ه ) :ﻡ ا Iر(
FEDCBA 9876543210
أس ام ) (BaseیIوي . 16د ﻥ$ى آ Rی أن ﻥ
cام ها ام...
0ﺙ 1ﺙ ... 2ﺙ 9ﺙ Aﺙ ... Bﺙ Fﺙ 10
ﻡ اي ﺡ*a؟ آ ,ا..;Iأﻥ ا وﺡ اﻥ
V%ار=م وو Mإ :أ $+ر= ﻡ وه Fاﺽ$tرﻥ إ :ا
_ا$<a i
وإﺽc 1
,ﻥ
ا
.
اﻥ $إ :ها ) :اأ ا
_ 6ﻡ اIر(
… 108 109 10A 10B 10C 10D 10E 10F 110 111 112 113….
آ ,ام ا ,أﺕ$tق ت ا!Iب ,ها ام ر vأﻥ %ﺕ
_ 6ﻥ< lاDة ,ام ا....;I
ام اﻥ
OCTAL
ها ام ی
ن ﻡ ﺙﻥ
رﻡز ه 7 6 5 4 3 2 1 0
وا i,ی ن آ
)ﻡ اIر (
...
0 1 2 3 4 5 6 7 10 11 12 13 14 15 16 17 20 21 22 23 24 25 26 27 30 31
32 33 ...
ها ه ام اmف 6kاس ,...ام ا$Sي هك 10أر=م ): (digits
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
!ی* ﻡ أي ﻥم إ :ام ا$Sي E,ﻥ ﻥ_أ ـ MSBوﻥm i$bس ام ﻡ ,$إ :اDة ا
ﺕIوي ﺕ$ﺕ fا ، =$ﺙ
ﻥ
*Dإ :ا =$ا
i$b,س ﻡ ,$إ :اDة ا
ﺕIوي ﺕ$ﺕ_... iوﻥ 6kه .ا.D
ﻡ!
Kی* 10100101bﻡ ام ا إ :ا$Sي ،
آ ﺕ$ى!
...ی* ﻡ ام ا إ :ا$Sي E,ﻥ ﻥ_أ ـ MSBوﻥ i$bب )2اس( ﻡD
,$ة ا
ﺕIوي ﺕ$ﺕ_, ، i
ﺡ
، 7ﺙ ﻥ % 6kا_ Vا
ﻡ$bو ب 2ﻡD
,$ة ا
ﺕIوي ﺕ$ﺕ_...iوه ا...ﺕ ,اaرة %,واﺽ!
...
د ﻥ ;_tا< $ة :ﺕ!ی* ا 1234h
Dﻡ ا $Sي إ$S :ي :
ﻥ_أ ـ MSBوه ، 1ﻥ i$bس )أي (16ﻡ ,$إ :ﺕ$ﺕ fا) =$أي ، (3ﺙ ﻥ * ik,ﻡ 2 6ﻡ$bو
س
)أي (16ﻡ ,$إ :ا
$ﺕ) fأي (2وه ا...
ﻥ< lا< $ة ﺕ : ;_tا
!ی* ﻡ ام اﻥ إ :ام ا$Sي.
واNن اkاب ه ﻡ ﺕ$ا , .د reminderﻡ أ( '& ، #ﻡ ا"
ر . ""#أي أن
359=101100111
ﻡKﺡ
:ا_$ﻡ fk, _-
kأن ی ;_Iأي =
Iا $Sي ،ا 0 =$إذا آﻥ Vﻡ_
!$ف K,...ا1B2
D
ﺕ_ :Dآ ه ﻥ VI %ﻡ_
!$ف C441 ،ی fkأن ﺕ
_. 0C441 %
اﻡ" *% $ی
..أﻥ $اkول <* * ...ر= l %هك ﻡ ی iDم ا )ﻡ 6ا= Vی pﺡ< iها lﻡt
ﻡ . (pﻡ Kا$
,ض أﻥ ﻥ$ی ا
!ی* ﻡ 1001101101bإ :ه p...lأن ﺕ_أ ﻡ ID
= ، LSBا =$إ :ﻡkت آ*
ﻡ
kﻡ ﻥ
ﻡ + 4ﻥت .ه ا :
)-ﺡ yأن ا
kا
,اIر ﻡ ﻥ
ﻡ ر= CD,ﻥ! ﻥ$یه ﻡ ﻥ
ﻡ 4أر=م ،ا ﻥ Rbإ$<M %ی إ :اIر(
واNن ﻡ اkول ی pأن ﺕKﺡ yأن 1101ﺕ ، D *Dو 0110ﺕ ، 6 *Dأﻡ 2 *D
, 0010
أذن اﺕ. 26D w
وا lی
< lا$tی!
،
Dی* 0B45Aﻥ_
Iل آ* ر= ی, ، iDـ Aی 1010 %Dو 5ی 0101 %Dو 4ی 0100 %Dأﻡ
، 1011 %D, Bإذن ا
1011010001011010
k
ض أن أول$
< إذن ی أن ﻥ.$<a ا%, (256 combinations) R
c د ﻡ256 * , (V )ی8-bits إذا آن ی
.
_ (256-128)
_
وااد ا7( ه ﻡ127-0) د128
. binary ـiD ﻡ ی: إi!
ﻥhI_ ﻥE, f7 ي د ﻡ1st complement اـ: لa!
110110 : *a!, binary : إ%!ﻥ ﻥE, 54
D 1st c : لa! إذن
:
_; اد
اtﻥ ﻥ, -54 أي،
_
D اVأﻡ ا آﻥ
st
1 c = 2 power n – 1 – number in binary
... وه اn=16 ـ, word V وأن آﻥn=8 ـ, V
یD اVن آﻥ, ، ﻥتcاه ﺕ د ا$ ا
ﺕn
. n سz
,$ ﻡ2 أي2 power n
st
V"
یa 1 c : إ%
!ی-54
D ا:
_; ادt . binary : إ%= ﺕ!ی$ أي اNumber in binary
_` ادaر آ یI ی$<M < )أﺽ00110110 ويI ﺕ54
Dن ا, Vﺡ- ....* ﻡ ه%ى أ$+
أDی$h هك
(: %% ﻡ أV ه* رأی. 11001001 : *a!
, V * آl ن اNﻥت( وا+ 8 ﻡ ﻥ ﻡ
8bit ﻡbاب ﻡ ن أیk أن ی ن اfk ا ی8bit أيbyte
{, دی ﻡ7 ! ﻥ100000000 هwى اﺕ$آ ﺕ
أي00000000 :D_ ویMSB ه* اـk وی
ﺕ، overflow ا!ب, :I ا!
ﺕ.ن ه, 9bit : a أﻥ ﺡqﺡ
...$<M
32768 أول، (#. &دا ﻡ65536 |S ﺕ16 bits أنq( ﺡ16 bit values) word
{, _; ا
ﻡ* ﻡt ا_أ یl<ﻥ
.
_Iم
* ااد اc
I( ﺕ65536 : إ32768) =_ وا،
_7م
* ااد اc
I( ﺕ32767 : إ0 د )ﻡ
Second complement :
اﻥ-ا
. binary ـi _رة اد ﺕ!ی. ا * اول واي ورiI<_
ه ﻥ7اد اz ا * اﻥ
110110 : *a! * اﻥ ﻥ% ﺕ!ی54 ـ,
. ا * اول: إ1
,ﺽE i لa!
ا,
_I اD أﻡ ا * اﻥ
: إذن * اﻥ11001001 ويI * اول ﺕ-54 أن,$ ;I ال ا,
2nd c = 1st c +1 = 11001001 + 1 = 11001010
Assignment :
I-convert these values from decimal to hexadecimal , then to Binary
a) 15 b)150
IV- find the 1st and 2nd complement of the following decimal values :
a) 154
b) - 413
References:
1- http://en.wikipedia.org/wiki/Main_Page
2- http://www.al-ebda3.info/ib/
3- http://www.emu8086.com/
4- http://www.arabteam2000.com/
5- Assembly Language: Step-by-Step , Jeff Duntemann
6- introduction to computer , Jawdat Abu Taha
http://www.at4re.com
ج2 و، (processing)
& *) (م، (inputs)
ز ا ه آ
ا ت وا ت
. (outputs ) ت2 ا3
. ( www.google.com:>? @ ا5 ﺩBC )...35 67 آن ﻩ: := أل آ2 5
ز ا
:
35 (Ranges) =مIﺩة أK G (=) ا إB آ و
? ا ت3
ا ` ﺡ^ (مa b5 75 cﺩة \اK ?دة أو5 (chip) ﺡB\ ﺩ نI CPU ا ـ
Oh ىj@ ا ت ا5اC )g3 ( و(مarithmetic and logical calculations) (e3 ا ﺡ= وا
@5 ﺩBC @ اaB ا يmicroprocessor ـG=B 5
k 3 ر اe b5 .
)ب وا ﺡSا ﺡ
...U m>ب ﺡ&) أS&
ز ﺡ3 وا.ا ﺩوا ا
وا اآة دا
: اSSj@ ا ت ا5 نCPU ) ا ـg5
تK( وor , xor , and , etc…) (e3 ( وا... حq b) =@ ا ت ا ﺡK o=5 ا ﺡﺩةnه
. (...m>ا (ر @ ا ت )أآ أ
Registers تVGP
– اU
(temporary)Iu @ اBC2 ﺩم ت ا2= ﺩاBS @ ةm> وﺡﺩات ذاآةGK ﺡيB CPU إن ا ـ
...ﺡﺩدة5 واﺡﺩة (م: آ، registers تx&= @ ا5 ﺩدK GK ا اآة ﺡيn ه. ت
.(ﺡy تx&= @ اK O7? \حOSو
ديu aB وأ، `
اa > ا ﺩا3 ﻁ اO ت اy7yك اxS@ أ5 \ @K رةK ه
. - م – أيg3 ىj> ا3 ت ر ﻁ اy7 اG إ
: CPU Buses @ ا ـ5 ث أاعx* ك3ه
طe G إh ( ا\رات ا ﺩاsenses) |=B ( ا يline) ﻁ2 @ ا5 نB: Control Bus-1
. CPU ا ـ:أى ﺡ) \رات ﺩا
. @ ا اآة تBو3K ﺡيB @ ا ا ي5 واﺡﺩn& ﻁ، The address Bus -2
.
@ ا اآة وآ
إ5 (م (اءة ا تB @ ﻁ &ه، the Data Bus -3
... CPU ا ـ: ﺩاO ت اx&= اGK 7?5 ةg O( 3Kوا¡ن د
((ﻁh \ة5 (Be 3
B O?آS... internal architecture ا ـG ق إe @ أ: gﺡx5)
...تx&= =مIﺩة أK ﻁe2 ها اOh ك3آ ى ه
: general purpose registers
: ) صS ا35 : و، ضm ا5K تx&=5 8 P 8086 &ت5 إن
¨Bq @K 16 أولG أو إEAX ¨Bq @K 32 ا ـG ا >ل إP3B تx&= اn هb5 :5 ﺩ ا3K
@B y EAX @5 أن ا (=) ا يªﺡy . اGK AH وAL ¨Bq @K 8 O* أول وG إG أو ﺡAX
EAX GK ¨e3B 5 q . ?د35 :| ﻩ5 :5 اP3B O?= (ﻁ ا (=) اh . ا?ادGK ا >ل إ ﻩ
. EBX,ECX,EDX GK ¨e3B
...
35 :&=5 :ت آ5ﺩا2Sﺡﺩد اB ه ا ي5 ن ا¥h ، :&=5 : = @ ا5 )« اGK
)أوRAM ا اآةV ا:دة ﺩا5
j KS : )B ا واآn هb5 :5 آ أن اBﺩ
...35 ا ز =B 5 Buses ﺩام ا ـ2S ا eB
5 :5 «ه( ﺡ^ ا
: segment registers
. GS وFS : )=( هUB ا &ت ا ﺡﺩOh @h=&@ إ5 ك3 هaBأ
ةh ) و @ نnن ه¥h ، segment registers ا ـOh I @ أيBC2 P3B @ أﻩ5 )« اGK
pointing at accessible Oﺡﺩدة وه5
5 ﻩ: ، ضm م اK V تx&= @ ا5 ع3 ن ها اj...>
.(: @ اK O3 = y) blocks of memory
ان3K أيG >ل إgeneral purpose registers ا ـb5 3 G إ3 x segment registers إن ا ـ
.ذاآة
SI = وDS = 1230h ba أن &B 12345h OBC? ان ا اآة ا3K G ل إذا أرد ا >ل إU ا:S GK
O ا16 @ ا (ﺩ ـ5 y@ ﺩBو3 @ ا5 ﺩد أآK G ا >ل إ33B ﻩ هاj ( ﺩةBq n ه. 0045h
.segment registers
ا ـ
ا ـb5 وﻩ10h ـsegment register ب ا ـa OBC? ان ا3 (م ت ﺡ=تB CPU إن ا ـ
: ها. general purpose register
: BX, SI and DI ن¥h ، Oاh ا:| . effective address G=B @3*ان ا ن =&@ إ3 إن ا
. SS b5 :h BP and SP 5 أDS b5
.effective address
أن ن3B y ىjض اm ا5 ت اx&= ا
. ?ه ﺡ3 &يB O ا اG | دا وأﺩا إB وه، CS b5 :B داEIP إن
( (: آ هO ا2= ^ﻩ ﺡS دروGK afeef ا | ´خb5) :=مI* أx* G ت إB(=) ا ا
اBe ﺡOh (ﻁh دة5 O وهK اGK ) ا ﺡOh ?ﺩy
= أي أ5 « تB را-
ﺡ إ3= @ ﺡO ا ﺡI اOh .تB ا اnل هxmS@ اh hت إB راG ﺡن إB ر
¨e3 (م
وﺡﺩة ا ﺡ=ب واO ا ت اb و = ﺡm * وO ت اB ا اO وه:b ت اB را-
اOh
G ا ( ﺡn هG( 1 ( ﺩا
اbذا و¥h
)ﺡB 5 ت اB راO وه:ةe= ت اB را-
> &5 5¨ أواBq @K 5 اOh 5 ه اmB
ةeS تB را3 وbت وB را6 5ﺩ2=5 « تB را7 GK ﺡيB 8086 اOh تB ا ا:&=5
CF Carry flag
PF Parity flag
AF Auxiliary flag
ZF Zero flag
SF Sign flag
TF Trap flag
IF Interrupt flag
DF Direction Flag
OF Overflow flag
ا ﺩرس ا (دمOh )أراآ... ا ا ﺩرسassignment ﺩB y...G ﺩ اI ن درس ا مB 3 هG إ
References:
1- http://www.emu8086.com/
2- http://www.arabteam2000.com/
3- Fundamentals of Computer Organization and Architecture ,
Mostafa Abd-El-Barr and Hesham El-Rewini.
4- Assembly Language for Intel-Based Computers , Kip. R. Irvine
http://www.at4re.com
allko
<ﻩxacker خ4 درس- – رس ('ذة – ﺡ#ا ا+ ه- اء آة01ا" أود أن أ إ أن أ#$
. ا@ف- <A اB ﻉC... =
ا
DOS م ا
ضGﺱب دون اJة ا0K1ام ارد وأ#G< اﺱEL -M" ﺱبJ
اDOS DE"
<L و. اصSTت اS ا
وﺱا، ﺡQOEة ﺡ ا0K1T اX+ هE
Q . N"0O واA اK<POQ
^N_ اX+ ه-$ - و. ﺱبJة ا0K1ارد وأE د ﺱىT اYﻉE ا-L ﺱ[لDOS ا ن+ه
: ^ اN_ اLEYE$ `Kة <م ﺱD=ا
تO<E واdirectories رسKO` اQ إدارة و-L b[ ﺱDOS "ﻉ م: تO<Eإدارة ا -
ت م#' i"C -L تO<E" ا#ﻉQ إ
ء وBhﺱQ Yا$ BEY .صA< اL دة1Eا
إK"0GQ BS< إدارة اEL ءoL p ذ-رآQ ( ﻉC m$ 16 تAh ﺱ$ ا+ )هDOS
.DOS
o<h$ ﺡE "ﺱK ، Eج اG ا/ G اL - E اDOS ""ﺡ م: Input/output -
. Interrupts ﻉتCAE اi"C -L تhﻉEإ'اج ا/إد'ل
صA ا- ا اA" K .م#GﺱE اX#"" $ أي+OQ DOS -M" : اEJQ -
. ﻩ+O` "ﺱ<` اx اآة+<ﻩ =ن اEJ
اآة+ ا- ا آ0 ﺡp ذS y@G" ، X+O اا# اﺡDOS EJ" #L : اآة+إدارة ا -
. "هJQ اآة أو+ ا- #"0E اo<h$ < ﺡE و"ﺱ، تhﻉEت واE<ة اﻉO
E آ، ﻉتCAE اi"C -L E ا-$ﻩ و$ @لQb< اEL DOS -M" : Interrupts ﻉتCAEا -
EA ك اQ =E" لAE ﻉ< ﺱ ا، ﻉتCAE اX+ت ه#' Q ""ك ﺡ
.^ ﻉN_ز وY ﻉتCAE م ا- ءا01 ﻉ<ﻩ1( وTerminate-Stay Resident) اآة+ا
" واcool boot ﻻع اردS اEﺱQ <EL وث#ﺱب ﺡJء إ ا$K= اPدة وL إ-L (
"
iS#Q اء1اآة وإ+ اBS آ اO@Q <ﻩL ضOQ [ اKدة اLﻉ ﺡ إE د'ل اKL
CS YﺱE اEJQ `x - و، اآة+ اiAJت اG
- o<Yو ا ﺱT اE<ا ن اﻉ+< هL و، OP EA$ IP YﺱE واFFFF[0]h ﻉان$
BIOS (Basic Input Output System)تQا" و#
= اQ واFFFF[0]h اﻉان#L BAQ اآة+ا
O<GE ا+E اyJO$ BIOSتQه رو#ﻉ$ أ#Q . ROM اآة+ ا
-Ah p ذ#ﻉ$ BIOS تQ روQ .K[KQﺱب وJ$ PEة ا0K1T< آ اL اﻉف$
: Eاآة وه+ ا
ا$ -"وL <L AhE اX+ي هJQ : Interrupt Services Table ﻉتCAE ا#' ول#1 -1
. اآة+ ا00000h اﻉان- اء#$ اp وذ، ﻉتCAEت ا#'
ة#"#L ` ﻉ<تQاآة و+ ا- 00400h اﻉان#L أ#Q Ah وه: BIOS تh ﻉAh -2
.ﺱبJ$ hJEة ا0K1T ا-L
<ﻩL رD ﺡل اﻉ+O اA اصSTت اSص ام ﺱاS -L p ذ#ﻉ$ BIOS تQ روJQ
وio.sys -O<E' اT ا اEJ" . صA اpد ذ1E اbootstrap Qا+ ا0OJ ا$ إ
io.sys # "ﻉ. io.sys +Oا" ا#$ hA إhA +O اA"اآة و+ص إ اA ا- msdos.sys
<'ا# اDOS تhاول ﻉ#1 'T اK" . msdod.sys إXور#$ +O اA"اآة و+ﻉﻩ اQ
+O"ص وA ا- config.sys ^<Eأ اA" `x ﻉتCAEت ا#' -"وL ول#1 - ص <مGﺱ` اAوا
autoexec.bat ^<E أوا ا+O ﺱXور#$ ي+ اcommand.com إ+O اmsdos.sys A" أ'ا.Xأوا
.ﺡQOE ﺡ ا- <'#Eت اhﻉE اoSوا و"اT اJ K"و
.ي#<A"` ا#A اDOS ﺱ م$ ﻉC ا+ه
<ﻩL # وﺡBhA - com $ ^(" . com وexe "+O اا ا- -x ا-L DOS ` امL#"
واا#G <ا ا@ ة اo وه ع ﺱ.س#=Eت واhﻉEت واE<ة اﻉO `" أن
.اآة+ اEAEا
<L) س#=Eت واhﻉEت واE<ة اﻉO BhA @< هO BCA - ^(Q K exe ا$ أ
."#1 DآT اا اoﺱQ أ'ى( وهBCA "=ن هك#S...STا
مA" ي+ اcommand.com EJ ا$ 'ﻻل- -A$ اﺱ-L آﻻ اB < اﻉEL DOS -M"
-L آﻻ اB ﻉ<ﻩQ ^<G ﺱBh$ و.`=Jﻩ اE<ﺱQ S اآة+ي إ ا+O ا اEJ$
o<C #L EJ ا$ ه0Y" ط اﻉ" اhGﺱﺱﻉض ان ا....EKﻉ ا'ﻻC oﺱ$
.iﺡb mS إ وcom تO< -L "#J ا1M وﺱexe اع- $ +OQ
b إJJ@ﺱ اE` اA$ SS:SP وCS:IP ﻻتYﺱE ا1 زوEJQ A"h اX+K$ `Q #S ﺡ¡ أﻩb
انL ﻻنEJ" E =ﻻهES B T اp+ت وآhﻉE اBhA انL <L يJ" b DS YﺱEأن ا
.ﺱﻩO$ ES وDS ES - " أنexe < اL ﺱج أنb ا-=E" ا+< هL وPSP BhA
. ت اhﻉE اBhA ل إP<
Stack
س4ا
Q AhE اX+ ه#OQ .stack L#Q اآة+زة اYJ Ah " إ+Oج اا اJQ
ﺱﺱTت اhﻉE@ اL لC أنE<L ، mSM =
$ تhﻉE وا-" اﻉو-"0G اآة+ ا- 0ﺡ
.word ة# واﺡE< ه آstack
إذاcom ا$ p+ 1 ﺡb اﻩb ﺡﻩ إexe ا$ stack ﻉ"^ اـQ E< اL "
اـBhA "ا#$ ﻉان$ SS BhAE اY ﺱDOS K" .£ ﺱ#= ^"ﻉQ
" م ا
.Jﻩ اES "ﻩ أوK
إstack ` اـYJ$ SP YﺱE اK" E آ،stack
جGQ ES ه أولstack <ـAQ ES '£ ( أي أنLast In First Out) LIFO أ#E$ ا+ هE"ﺱ
YﺱE اK<L M" b -= دة ﻩ1 AQ stack اـ- KL1` اﺱQ ` اAﺡ¡ أن اb .ﻩ
. stack اـK E" b إoY" -د ﺡ1 ه ه وX " ذآE ، SP
<L يJ" أي رغunderflow وه ﺡstack اـ- ES Jو ﺱJ و هTا
( FFFFh EAا
يJQ SP )أيoverflow < ﺡE وهstack <ـES Bو دJ K D اJأ ا
EهT ا$ <h p "
= ذ. stack اـB <ﻉQ ر+Jﻉ« ا$ 'Q " p+( و0 EAا
دةL ® إL#ﺱQ ةAل ام إ ﺡ ® ﺱA وا1O hﻉQ ا ﺡEﻉ
.#"#1 - oﺱJﻻع اSض أو إKاﺱ
K"وL mﻉ أآ إذا آO$ اآة+ت اE<ل إ آP<ت اEL +OQ x86 تYﻉE اBhﺱQ
= آ$ ﻻD 0012 ذات ازاﺡE<=ل إ اPﻉ اE اBh "ﺱMOV E<ﻉQ O 1زو
ان ديL ذاتE<= اm أ إذا آ1ا زوL p<EQ KT ﻻD AX YﺱE ة إ اKGوﺱ
ض أنO ا ﺱE<= اX+ل إ هP< -Qh' ﻉE ا+O ﺱ+N#L 0013 آﻉان ازاﺡ
: ا
= اE آKQ"J
ﻩP و#ﻉ$ AL YﺱE إ ا0013 ة ذات ازاﺡYJ"ت اJ ﻉE ا±و "ﺱTة اhG ا
ة ذات ازاﺡYJ ا± "ﺱK Dة اhG أ ا، 0014 و0012 -زاﺡb ا#L -QYJإ آﻻ ا
@ﺡQ p+$ و0015 و0014 -زاﺡb ذات ا-QYJﻩ إ آ< اP و#ﻉ$ AH YﺱE إ ا0014
. 0123h هAX YﺱE"ت اJ
X+ هm إذا آE ﻉE$ مE إ اهb و/ "دO ا-L ^<GQ Y$ 1و0 اBSاE اY$ جJQ b
BSل إ اP< اEL نb JJP N <L @J ﺱ-J آﻻ اO 1 د" أم زوBSاEا
.ﺡJP =
$ K<A وK$ وآKQاءS -EQ اآة+ت اE<آ
تhﻉE آ اBQ ^ أوP Yا$ even EﺱE( اdirective)ﻩ1ام ا#G اﺱBhﺱ
.ن ﻉ أآ <اE 1و0 ا-" ذات اﻉوBSاEاآة ا+ ا
: Assembling and linking
أوmasm آـassembler hاﺱ$ ﻉﻩEYQ #L و، source code Eت "ﺱE<ﻉQ - ﻩ$=$ مAQ
ﻁ$ Linkers اـ#ام اﺡ#Gﺱ$ مA `x ، object code E< <^ وﺱﻁ "ﺱL @JQ p tasm
.# واﺡ.exe ^< <L @لJ اﻉ« واKﻉ$ B .obj ت اـO<
: @دAEﺡ اQ ا@رة ا
: <EﺱTا ا$ "hQ ﺡ اﺡQ K وان أ ا ا@رة ا
.
<EﺱT ا$ $=$ مA (winasm , radasm , notepad , …) رJ ام أي#Gﺱ$ -1
.asm اد#$ (D< <^ )أو أآL @J
وع ﺱE¡ اO ﺡ#ﻉ$ -2
ت اـO< <^ أوBEY$ مA (MASM , TASM , FASM , …) assembler BEY ام أي#Gﺱ$ -3
.asm
^< )آ.obj اد#$ relocatable object module, E< <^ "ﺱL @J ، BEY ا#ﻉ$ -4
( # واﺡ.obj ^< <ﻩ$A" .asm
^<E< اL @J و.obj ت اـO< BE1 ﻁ$ (link , tlink , …) linker ام أي#Gﺱ$ مA -5
.ي+Oا
.
< 0ه1 .exe ^< هQوا...K ا#S ه -6
p<Q دةL اo<h" h' وث#ن ﺡb...(h' ث أي#J" ` ض أﻩO ة آh' ﺡ¡ أﻩ آb ﻉC
ى#( إﺡh' وث# ﺡ-L "ﻉEK ؟ آEﺡT<ن ا$ -EKى اﺱQ ه...#"#1 - ةhGا
...اﺡEا
debugger ام#Gج ا اﺱJ K E =ﻩ ` "ﻉ.exe ^< <L <@( وﺡh' ث#J" ` اذا...'£ أ
$ مA( ﻉد <ﺱرس آد وhG اآ
ف =ن ا#ﻉ$و...( ﻩhG ا-C ﺡ ا واآ
فA
.(hG اoي ﺱ+ا=د ا
-L ث#JQ ت اbAEروس وا# ا- #"#ك اﻉK ﻁ$ وااBEYEم اKO Bاذا أردت اﺱ
...اDل آhQ ورة أن# اX+K #" أرb A$ ﺱm<S E آ...ا+ه
effective addresses اﺡ ﺡل اـ- #"0
X+ هregisters ﻻتYﺱE ﻉ` ا-= ، m$ 20 - =نQ x86 تYﻉE ا-"(ن اﻉو$ <S
ر®` أنm$ 20 `YJ$ ذاآة-"وL B إذن آ^ ﺱ` اﻉ، m$ 16 - =نQ تYﻉEا
- b#$ -<Yام ﺱ#G اﺱ-E=" J ؟ اm$ 16 @ هST اKEYﻻت ﺡYﺱEا
...<=
E اm< ﺡ#A $ و20 - أي أآm$ 32 EKEY ﺱ" ﺡ-<YﺱEا...#واﺡ
أن#" . ( MyWord : ا+اآة )وﺱ` ات ه+دة ا1 ت ﻉ$ A #" ىQ Eآ
ا اﻉان+ @^ ه-<Y ﺱ#Gى اﺱQ E= ، MyWord ﻩ#1Q ي+ﻉ اﻉان اE< د#J
: ه آeffective addresses آ ان ا@ اﻉ <ـ+Q ، ES:[BX] آ
Segment: offset
BX د1 اﻉان- offset ء اـ01 وES د1 اﻉان- segment ء اـ01 ا "ﻉ أن+وه
ا
= ا "ﺡ. AX إK$ oه+" وMyWord اـJ" ا هك وoه+" ﻉ أنE ا- #"و
MOV AX, ES:[BX] E< اﻉ+OQ ءxث أ#J" آ
<L ( وهكRAM) اآة+ى اQ -E ا...ﻩQﻻY ﺱ- ءا01 ىQ و8088 ﻉEى اQ اﺱر
تLEY اevenly EﺱA =نQ Segment Adresses )اـSegment Adresses اـ-"وL "ﺱره
8088 آ أن+Q ذا، m"$ 16 أ آ#Q أن-=E" لA Lأو د.10h أيm"$ 16 أ آ#Q mEYﺱ
-=E" mEYﺱن أن اﺱJ$ +'T$ و، اآة+ ا- - m"$ 1048576 – أي1mb B =ﻩ اﻉE"
O<G = 65536 أي أﻩ هك، 65536 Q ا16 `ﺱAQ 1048576 اذن، m"$ 16 أ آ#Q أن
= : لAQ #S . 10h هmEYان آ ﺱL -$ قO ىQ E آ. X#L أ#Q أنmEY <ﺱ-=E"
< اﺱرL ا-" ﻉو، Kب اﺱ$ - ﻩL ﺱ ءb` اQ "K ا0 هك... 1h قOأرى ا
آ-$ قO اm<S Eﻩ آT اOP A' ﺱT اO@ ا-= 0B8000h PT$ m آ0B800h D
( ﻩL ا اﺱ+ EN داOP كK اذن10h ي "<ﻩ ه+ان واL
mEY اﺱ-L 02Dh #=ن "ﻉEا ا+ ه، اآة+$ دة =ن1 KG ﺱ#" اMyWord إن
ام#G= اﺱE" ﺡ¡ أﻩb -= . 0B800 : 02D هMyWord اـX+ان هL ا ن+ 0B800h
offset <^ ازاﺡGه ﺱ#L 0B801 ةKS اmEY اﺱ-= و، أ'ىmEYﺱ
: x(© اO K ا-" اﻉوBE1 ل أنA = أنE" $ و01Dh وﺱ@ﺡ
0B800 : 02D
0B801 : 01D
0B802 : 00D
Segment: offset @$ -" اﻉو$ آ-L... ةP ﻻﺡ... أوﺡ انmJP أن ا@رة أ#ALأ
...©=K< ان ام ه اL ل#Q ا-ES" اK h A^ اﻻﺡQ b أoY
.-xb اK"وL 0' #S -" و أMyWord #1Q -" ﻉ<` أJP ان أ. ا ا@رة ة أ'ى#<ﻉ
. AX K ووﻉMyWord +'<ب و أhE ا اﻉان اo ذه#S ﻉE "=ن اE< اﻉ+OQ #ﻉ$
.ﻻD DS ' آـ£ Segment Register ام أي#G اﺱp=$ ﺡ¡ أﻩb
References:
1 http://www.arabteam2000.com/
2 Assembly Language: Step-by-Step , Jeff Duntemann
http://www.at4re.com
. 1 أو0 ! اEPQ= وflag *= N 7 آ، N 16 0 ه70ا اEن هGH ىJ6 آ
...UJ =ج ا. ,U= W>"ت و. . @. S@ أN=ة ا رأJ!? اUJ6 ,= أرNآ
• Carry Flag (CF) - this flag is set to 1 when there is an unsigned overflow. For example
when you add bytes 255 + 1 (result is not in range 0...255). When there is no overflow
this flag is set to 0.
• Zero Flag (ZF) - set to 1 when result is zero. For none zero result this flag is set to 0.
• Sign Flag (SF) - set to 1 when result is negative. When result is positive it is set to 0.
Actually this flag take the value of the most significant bit (MSB).
• Overflow Flag (OF) - set to 1 when there is a signed overflow. For example, when you
add bytes 100 + 50 (result is not in range -128...127).
* J6 TEST وCMP
6 . ولn ا7.
اlH
ن دا6 0H ، ا
تzE ه,
•
. ءl ن أي6 W!ﻁ وH ا=تJا
CF, ZF, SF, OF, PF, AF l ا
ت هzES JQ6 lا=ت اJا •
mov 6 ز أن0= W -. ، 0 اk?@ . @= أن0H two operands =ن هك., •
.0 اk?@ . S@W ecx,ax
! اzESH ، ى ا
ت,( ﺡ7.
.) operand آـ. : N= ه أ@ﻩ اذا راzJ ذآ0= . =أ •
30 ! ا7! @ أl
6 mov ebx,30 -. ، !ﺡW ي إذا = هكJ
م اlه
.اE وهkS 30 ! ا7!@ l
6 mov ebx,30h ، يJ
two operands ان اـ: @ أJآE6 . z,=J6 يE ا0د ا,6 أن0H ةJاآE ﺡ ان اlH •
ا"ب0 operand أ اـ,9@ @H ةJاآE ﺡ ان اlH اE ، 0 اk?@ . @= أن0=
ةJاآE ان ا، J. أيPointer >ر ـP اl وهptr ، byte * أو ﺡword أوdword .أ
ADD DWORD PTR DS:[ECX],EAX : -.
اzE ا* هJ@ أ. (-. DS:[BX] )
SUB AX , WORD PTR DS:[ECX] zEأو ه
1 AND 1 = 1
1 AND 0 = 0
0 AND 1 = 0
0 AND 0 = 0
.!ﻁH ا=تJ * اJ6 0 اAND !م ﻩ6 . k? !م6 TEST
6 -5
: l ه آTruth Table اـ، !".
!م6 OR
6 -6
1 OR 1 = 1
1 OR 0 = 1
0 OR 1 = 1
0 OR 0 = 0
1 XOR 1 = 0
1 XOR 0 = 1
0 XOR 1 = 1
0 XOR 0 = 0
* 9"= ءl اk?@ . راتG بJ IMUL ، ون إرات, بJ ا. MUL
6 •
. IDIV وDIV
CF , OF : !ﻁH ا=ت اJان * اJ6 IMUL وMUL
6 •
H (set to 1) 1 !ا= اJ ا6 ه76 ه, ، ت-.
ا0 ﺡ. J9 أآ0ن ا6 .,
H
! اHوJ
. J¡ ا=تJH IDIV وDIV
9 . أ. (set to 0) 0 !ن ا-H ا ذ,
. (undefined)
: l هIMUL وMUL l
6 lH بJ اS = * أl ا,ا!ا •
-2 * -4 = 8 = 8 h = 1000 b
MOV AL, -2
MOV BL, -4
IMUL BL
; AX = 8 h = 1000 b
1700 * 520 = 0D7D20 h = 11010111110100100000 b
Hن إGH 7 ، kS أ@ﻩl
= اESH h !ﺡ- اN? اذا أ. ا، يJ
أ@ﻩl
= اESH د آ ه,
اN9 أ@ﻩ اذا آ¤ﺡW
.=ري9 د,
أن اl
6 b !ﺡ-ا
(ﻩ: ,=J6 . 0 96) ! ث-ت اWي =¦ اE اlول ا,0 اSH DIV وIDIV 9 .أ
REG
memory
: !ﻁH ا ه احESH ، segment register ت-. ا, ﺡ آن أﺡlH .أ
( destination SUول )اn ا7. ( إ* اsource ر,> )اl@ ا7. !م « ا6 اzEه
!م ﻩ. ، ذ7 = آ,
فJ
@ W H .¯ آ.اJ9 @ ا....n ا. 7!وا¬ن ا* ا
.¯.@J9 ا7 آk!ﻁ وH z,=J@ . E?= يEه آ اد ا
9553h+35h=9588h
mov eax,9553h
add eax,35h
111011101b * 100100001b=100001101001111101b
mov eax,111011101b
mul 100100001
فJ ' ا وذ. 70. * ا. فJ ascii اـ: 7!6 أي أن، فJﺡn' ا. 7.
ا = : ﺡ-.
: l ال اlH ' آa' : اE ه6دJ?. °>6 l.-
NEG 5
MOV AL, 5 ; AL = 05h = 0000 0101
NEG AL ; AL = 0FBh (-5) = 1111 1011
NEG AL ; AL = 05h (5)
NOT 00011011b
MOV AL, 00011011b
NOT AL ; AL = 11100100b
= S@, DS:[2156] ا
ان, ةJاآE اlH دةU. 00011011b !ض ان اJ? ، ا الE هlH
: l ا7
NOT 00011011b
NOT [2156] ; [2156] = 11100100b
...,! 6 ون, و³9 . إ=>ل اlH N!H و,: أن أآن7.²... درس امlS= ا* ه
Assignment:
Write a code that perform the following arithmetic operation : (with minimum instruction)
[ (555AAA h + 10001000100010001 b ) * 666777888 ] / 0E777C h
References:
1- http://www.emu8086.com/
2- http://www.arabteam2000.com/
http://www.at4re.com
I- jumping instructions
).1 ا2 3ء أ5 ا
( ا6!. . إن أرد0...%$
& ) !م &
( ا'وا#ن ا+ ,"#$ آ
L وconditional jump ه(> ا'وا ا =وط,!$... ! أوا ا78 &ا9 ذ6; 0
. unconditional jump =وط
...!ﺡS (آه8 هL P0 أوا ا! ا=وط وهك ا, ﺡ أه2
ﺩول اOا
... jne 6; 6P 6#$ jnz و، je 6; 6P 6#$ jz ﻩ ا أن1
.ا
أﺡﺩ- – &
|ف1
! اﺩرسyOه(> ا...x" borrow واـcarry ﺡ م اـ. ;ن دwوا
.0= "ﻩ ا، O1" 2&# ا اafeef اﺩروس خ
: carry م اـ0 ا#&ت ا'رSف اﺡ#
2
ﺩول اO ا.أ
اﺡ0 ، 0 ويcarry ن اـ+ (
ا'وxP
ا'و )ا| ف اxP اOت اS ﺡ2 ى$ آ
1 ويcarry واـ0 ( ويsum) عO ا.3 إذن10 ) ه ا
ن أي$ 1 1 5 ;ﺩ#&اا
( carry : ; !ل. 2"18'& >( وه، &ﺩ واﺡﺩ: !ل. #&)
87H+93H ﺩد# ا5 ى ا(ي ﺡﺩث ;ﺩ. ;ن دwوا
87H=10000111 83H=10010011
C C C Carry
st
1 0 0 0 0 1 1 1 1 number
1 0 0 1 0 0 1 1 2nd number
1 0 0 0 1 1 0 1 0 result
ignored MSB LSB
|& a O
؟ اZF (Zero Flag) اا2ن هw وا... 00011010 = 1A h 2 هO
ا
. ZF=0 )واﺡ !!! ( اذن
اﺩرس5؟ راa; آ...15 O
'ن ا، 0 ؟ &
آﺩSF(Sign Flag) اا2ن هwوا
.%5 ﺩد# ﺩل ;" أن ا0 ﻩ.ى إ$ آMSB ا اـ.أ...ا'ول
هx آ، ( MSB ﺩد )اـ# اx آ2 ة3' ا.m ا ا. ؟ أCF (Carry Flag) ذا ; اا
.m" 6! 1 أ اـ0 اـ. ى$ وآ، 10 O
1 و1 5 ﺡ2 ﻩ. "
أa" وﺩ، 1
,ه"> وO$ ه0 (ه"ﻩO$ ,$ 2# ignored
ب0 ﻩ6 8 &"ن ا'ﺡ و أ1 ا
)ه(ا اـ
>(" آ#
..."#
ﺩ ;" ا# ذا؟ ه(ا...O
ءا ا5 >1
#.
MOV BL , 83H
ADD BL , 87H
"; |
!
8 O
اذن ا، &
ت !ﻁ8 ﻩ
ـO"م أن ﺡ# وBL 2 نm
8 O
أن ا$
. Carry Flag ا% (ه3' اa1 &
ت وا8
.overflow وه(ا & م اـ
CMP BL,2
JE allko
MOV DX,44
JMP at4re
allko:
MOV BL ,7
at4re:
NOP
ا
( ا6!
8 ، وا$ ذا+ ، JE £ هك ة =و,
، 2 ! اBL . !ر,
ﺩا1 ا2
£1& 9) وذ.1ن ا0 أي2 label و0 ى$ آ. label ; رة1; هallko و، allko
.
ن8
ن رأ7!& ;1
ﺩ$ ا(ي,8S
& ا0&
ا(ي2
ا' ا...2#1£ 60=& ( ا'وا$ )#
& ا8 2
& ( ا! ة و$
وا؟, ذا ان
. at4re اlabel ا اـ£ =وL "ﻩ ة. mov dx,44 ﺡ ;ﺩم اواة ه2 ( 8
.
(هNOP "#
ا ا6!
. ,
. (ه$ ,
وmov bl,7 "#$ ا6|8 ﺡ اواة2 إذن
. (ه$ ,
وnop "#$ ا6|8 ﺡ ;ﺩم اواة2
أ
.ء2¥ 6#& !م$ S . أي أno operation
|ر ـ3 ا2 هnop "#$
ا401200 ) ذاآةx3 $ ا25H ! ا6!. 2و¦
ﻩ ه.. د0ى ه(ا ا. ; د/
ل3
:
! ا7" ا# ه(> ا6# ق£ هك ;ﺩة... ( 401208
MOV EAX,25H
MOV ECX,8
BEGINNING:
MOV BYTE PTR DS:[401200+ECX],EAX
DEC ECX
JNZ BEGINNING
RET
¯) ECX 6O ا2 8 ! ا. ,
EAX 0ت وxO أﺡﺩ ا2 25H ! ا. ﺩا1 ا2
6!"ﻩ أ ا... BEGINNING ,8& LABEL هك,
( ﺩاد# آECX ﺩمm
. دة أن#ت ا5 0 £¥
2( ه25 h) "!. د. 2
'ن ا! اBYTE PTR ﺩم هm
( اDirective) ﻩ5
أن ا°ﺡS ، MOV
!" أول ة. ,
8 25h !ن ا+ 2
& و1 ( &!ﺩارECX) ﺩاد#!ص ا.+& !م. ,
. a& ,O&ﺡ
2
&) ZF=1 ن+ | ا اECX a"ذا وﺹ+ £ هك ة =و,
401200 + 8 = 401208 ا
...>ﺩ#& ا ا' ا(ي608ط ا! و¥ !( و
ﺡ#
!" ا! ا ا'آ ا. ن ﺩ0.
!8 2
&ﺡ! و$ اذا ا=طECX=7 ن، 'ول ةDEC ECX ( $ و6!. "; ﺩ أول#& 17& 0..
BEGINNING ا
ة ;ﺩه3' اة ا2 6!" ا#& !م. ا ان...(ا0ى وه3 ة أ6!" ا#& !م.و
ﺡ! إذا, ا=ط إذاZF=1 إذاECX=0
إذا.ن ﺩ ا0. و401200+0=401200
.6=
م ا. ( اcontrol) ة7 أي ا;دة اRETURN 2# وه(اRET وه2
( ا' ا.
. "ت#
ه(> ا2 ﻩ.ﻩ ا أ1
.ا...ةP0& ﺩمm
$"ت ا! و#$ 3³ ء5 = ا. أن2!&
( هMSB )أيa& 3³ 1
#$ أن ه(> ا'وا2# ه(ا. 15 و إ18 رة إ¥ أ;ﺩاد ذات إ6#
.
.%8 ﺩد# 1 واذا آن و ـ%5 ﺩد# 0 رة ذا آن و ـ¥´ اa&
instruction description
JG JMP IF OP1>OP2 (JMP IF GREATER)
JNG JMP IF OP1 <= OP2
JL JMP IF OP1<OP2 (JMP IF LESS THAN)
JNL JMP IF OP1>=OP2
JGE JMP IF OP1>=OP2 (JMP IF GREATER THAN OR EQUAL)
JNGE JMP IF OP1<OP2
JLE JMP IF OP1<=OP2
JNLE JMP IF OP1>OP2
¯ﺩد و#ء ا5 ( هMSB ) أيa& 3³ أن1
#$ 2 15ﺹ &';ﺩاد ا3 2 "ت#
أ ه(> ا
.رة¥´ ;" اSدا
instruction description
JA JMP IF OP1>OP2 (JMP IF above)
JNA JMP IF OP1 <= OP2
JB JMP IF OP1<OP2 (JMP IF BELOW)
JNB JMP IF OP1>=OP2
JAE JMP IF OP1>=OP2 (JMP IF ABOVE OR EQUAL)
JNAE JMP IF OP1<OP2
JBE JMP IF OP1<=OP2
JNBE JMP IF OP1>OP2
. 1111 1111 : 2
( آa& ,O )&ﺡ2yP" &م اP$ ,
-1 إن
اذا، 0 1 أآa -1 واﺡ أن ا=ط
ﺡ! ـ، 0 و& اـ-1 & اـ.هك ;" !ر
2# RET "#$ هك,
ECX=3 ﺡ1| MOV ECX,3 "#$ ﻩ ا5
8 2
& ( ا! ة و$
. ).1ء ا.ة ا ام وإ7ع ا5إر
. JG S &ﺩJA aﺩm
8 ا0 & ¯ ا....2
د ا0ة ;" ا. أ0
MOV AL , -1
CMP AL,0
JA SECOND
FIRST:
MOV ECX,3
RET
SECOND:
XOR ECX,ECX
RET
S >( JA "#
1& 0 1111 1111 : 2
( آa& ,O )&ﺡ2yP" &م اP$ ,
-1 إن
ء5 2 ه6& رة¥´
ﺩل ;" اa MSB ة3' اa1 اذن ا15 أ;ﺩاد6#
. ه.' -1 2#$
... 255 وي$ ﺩهO8 ا ;=ي1111 1111 !اذن ﺡ ا..., ا
XOR ECX,ECX "#
ا ا6!
8و...ﺡ! ا=ط$ اذا !ﺩ...آﺩ$ 60& ؟0 1 أآ255 6ن هwوا
..دة "م#" RET "#$ هك,
ECX=0 6#O
8 2
ا
. ).1 ا.data 7! 2 ا
ات#$ ,
.# ,O وﺡ,8 ا(اآة ﻩ ا2 ن0 ا
ه
: 2
ﺩول اO ا ا.أ
: 2
( آxP) 4445h y( و&! ا&
ﺩاxP) word ,O( و &ﺡxP) allko ,8&
#$ ,
•
Allko dw 4445h
: 2
ن ا| آ0
8 ؟yﻩ أي ا&
ﺩاy7;ﺩ إ. S 0
¯ ا. #$ .ذا أرد •
Allko dw ?
" yﻁ ا&
ﺩا#$ , ﻩ اذا. أ°ﺡS..yد ا&
ﺩا5= ا ;ﺩم و$
م8S اx;
.data? 7! 2 ﻩ#$ 9"#
,ﺩه. و، a& 6 آ2 450 y&
ﺩاSﺩ و ا! ا. &
ت ا(اآة و4 O ﺡ. أرد. ض أ •
: "ﻩ# "; ه(ا...,8S ¯ ا. aﺡ$ #5
Alalme db 450,450,450,450
: 2
آ68! أ£ هك0
Alalme db 4 dup (450)
:2
آ...yء ا&
ﺩا7; دون إ0 ء2= ¯ ا. 6; 0
Alalme db 4 dup (?)
ﺩامm
8 ا90 (3³ )أو أي ﺡفA آ
& اﺡفSﻩ &ﺩ. ه أ،
ﻩ# 9"; %O 3³ أ •
... ASCII ﺩول5 2 ا! ا!&" ﻩ
Y db 65
(: ت.
ﺡS&
& 2 اﺩ;ء,0 $ أ.
.ن درس ام ﺩ ا0 ا ه
Assignment:
I- What is the value of the SF , CF , ZF and OF flags after the following code is carried
out?
MOV BX , 81E1 h
ADD BX , 0C0FD h
II- what is the value of EAX after the following code is carried out ?
MOV BX , -5
CMP BX , 5
JA SECOND
FIRST:
MOV EAX,3
RET
SECOND:
AND EAX,0
RET
III- Rewrite the following code without changing what it do.
MOV EAX,25H
MOV ECX,8
BEGINNING:
MOV BYTE PTR DS:[401200+ECX],EAX
DEC ECX
JNZ BEGINNING
RET
IV - define a word-sized variable , named "allko" , with a 8100 h initail value.
V - define a word-sized variable , named "allko2" , without an initail value.
VI – define an array of character , a,b,c and d .
VII – define a string of your choice.
References :
1- www.arabtem2000.com
2- www.emu8086.com
http://www.at4re.com
درس ام ث ت اوران وازا!!, ...ول أر)( ت '& # ، %ه!ك ا
ات ا./0ى 5 6...ل 2 3 1! 4ا !!,ول أه...%&' 1
أ.!, :ض 78ا0وا .ا./0ى...
ROL
ه2ا ا .0ه ا/ﺹر ـ Rotate Leftأي وD .ر ...أآ .FاM#م ' H#Lا IJ, KآH
KPء ) !ROL AX,1 2N
ROL AX,1
Before 1 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0
After 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 1
CF :
1
V6آ Uأن ^ (MSB) S) ./Tو ].و أﺹ I8أول ) ، (LSB) Sأd' :ن ه2ا ا c S8ذه! `Da S8ﻩ
ا CF eآ ه وا.IJ
ROR
iNaا.#Nة ' # ROL Kا.Nق أن ا ]5اوران ه V6 .ث ! ! 2Nأ.
) ROR CH,3ه2ا ا .0دل ! 2NأMn ROR CH,1 .ث .ات (
Before:
before 0 0 1 1 1 1 1 1
1 0 0 1 1 1 1 1
1 1 0 0 1 1 1 1
after 1 1 1 0 0 1 1 1
CF :
1
SHL
e اMSB اـtه2( وLSB e ا )إ0 'J ^ إ.(Shift Left) رD إزاH) &م.0ا ا2ه
: ا2# أي ه. CF
Before:
0 1 1 1 0 1 1 1
After:
CF:
0 1 1 1 0 1 1 1 0 0
. 2 ]( )ـ.^ و, ي2ب اد )ا.:) ة واة &م. SHL . أ2N! إن... ازا. أواK' هw&a
: K ا.zaأ
shl ax, 1 ;Equivalent to AX*2
shl ax, 2 ;Equivalent to AX*4
shl ax, 3 ;Equivalent to AX*8
etc…
...ب.: ا5a ب,6 ' آSHL . أK' `مD اH5Dن ا# انt5' ، ﻩ8a ا#
SHR
: V6... أ8 اiNa
اـH H 0 K Uوآ... CF اـe اLSB ج اـ.` U آV6... SHR AL,1 : لFا ا2ى ه.a !د
... MSB
Before:
0 1 1 1 0 1 1 1
After:
CF:
0 0 0 1 1 1 0 1 1 1
... 2 e ه.^ و, K ا& اDc K! ة واة. SHR . أ2N! إن
حD . ROL AX,3 أي أن آـ. 1 )&ار6 إ.! او# 6 8086/8088 ت5 K' •
تe 8w! .0ا ا2 ه.!# 1 .F )آ. اوI8 أﺹ80286 ) # ، 1)
ROR / ROL / SHR / SHL
ECX c H5 ف, ]21'...Sc : د.5 K هSHL ECX,32 HF 2N! • إن
ل اـ8D, 1! اK' ، ا0 ل/دd) &مH إزا وآ32 ﻩ ه!كa0...ا.Nﺹ
ﺹر/). 5! اiNa eدي ا, SHL ECX,33 HF ' :أ...ا.N ﺹ32 )ـECX K' S) 32
K1' 6ف و إ1 اH5D^ ا5 Hcات أ. أن ^ )دt5 رD ن ازا أوd'
. Sc :
ﻩa أK! ة. 16 BX H5D ا. 'وSc : : أK هROR BX,16 HF نd' HF) •
8w! 1DNa ة.#N ا. ROR BX,1 '# ROR BX,17 أن: أV6...eو0 ﻩ اeد إ,
. ROL e
unsigned Kه ه.^ و, K ا& اSa آK' (N! 2 تN: e D&• ا
) ازاSc K' .ن ﺹ# 5!' راةP ذات اSaأ ان آ..رةPأي )ون إ
K' ]5D' Kc) ن آن ه!كd' ، 2 e D& ) اSc أي، ة واة.
. Kc8 اe ( اﺹلwD ' ة. .F( أآD&ت ازا )أ2Na #... CF
: ا ا2N! '# هSHL AX,8 HF 2N! • إن
MOV AH,AL
MOV AL,0
: ا ا2N! '# هSHR BX,8 HF 2N! • إن
: ا ا2N! '# ه
MOV BL,BH
MOV BH,0
: ه ا2N! IJ K واOLLY a.) ذة/] اﺹر ا2 هe ا.za ا/ "!ل
MOV AX,64
SHL EAX,0C
MASM ( آـ5ا ا.) K' !) HEX مz!) اد0ض أن ا.N' OLLY آـI&!ا ا.) K' ﻩa أV6
: K آt#' MASM a.) K' )Dد ا#) ا# ﻩa أي أ. DECIMAL مz!) اد0ض أن ا.N'
MOV AX,100
SHL EAX,12
...ت أول 'ﻩ. وa.) IN) Sc U آIJ eو0 اﺹرة اK] ه2ه
: F8 وان
ى./ة أ. F8
64 h * 1000 h = 64000 h (( أيC ' &ة. 2)) )ـ64 h ب.:) !c !aأي أ
100 * 4096 = 409600 (( أي12 ' &ة. 2)) )ـ100 !).J ، ي.L) أو
Call function
…
…
…
ret
Assignment:
I - write a code that multiply 62 by 8
II - write a code that divide 4000 by 16
III- what is the value of CF after the following code is carried out
Mov ax,10
Shl ax,12
References:
• http://www.arl.wustl.edu
• http://www.arabteam2000.com
http://www.at4re.com
%@ JK ;
وIر اI اE ﻉ3(<
آFG
م4H 3 keygen 3(?م @ﻩ ﻉC ; أن ه ا ارسDCأ
.
0 KeyGen اـP- ?م- (9 و8) %
ارس ا
CONSOLE
60 )...UC' اR- 3(ﻉ0 @ ة اوس-@ ة آC T F
<(&ﻩ-< UC' ا&(
أن اD R ﻩ-< أ
... GUI
اـV(
اR6 ذات ااU ا'ا,&< Xآ- -C أ, إDCأ...
V تR6وا
0?
<د0c
='
ﻩJ4... WinAsm UC Z'=. مX&0 `0 أ. masm32 UC Z'=
?م.
ه أن0ﻩ ا6
ﺡC
: %
ى اnew project
h اFile
(V4 ; JK *&ﻩd نeوا
J4 ا(ن ا(ﺹ
اد%@ نe وا. OK
أوC*ﻁ اG اJK . Console Application
رh اT&< ى. (آ
%
(@?ت وsource code اـPG آن ; ا((; ان ا:
sﺡu)
ارة ا%@ Dا.
اد ا ي
: (...%&'()
ا,&<
ﻉدوا. انJآ0
; أرR 3 paste وcopy 3(?ا ﻉ.
...اc اc اد3&?م
ﺡ-
386.
.D*C ; c ه ا اﺱ. 80386 U(<
ا
ﻉ&(ت اﺹ
(ﻉz ﺱ
م0 انmasm32 '0 cه ا اﺱ
.model flat, stdcall
.-z اP(6 %@ *
0 ; `0 اc ا اﺱR@ ;}(~ ا. stdcall و) <; اـ. model <; ه
اـJ&
C ;
option casemap:none
.ﺡفI )
ح )ﺡ?(
ن ﺡﺱ
ﺡ
اlabels ان اـ%-ﻉ0 cه ا اﺱ
include windows.inc
. (-ﻩ ه.0
ﺡ-'
آ-CH )وآ-& %@ windows.inc ;(`
?م0 نH masm32 '0
include kernel32.inc
ء% اC
include masm32.inc
ء% اC
includelib kernel32.lib
kernel32.lib & P -zC ﻁ0 أنlinker ' اـ0
includelib masm32.lib
ء% اC
.data
تC' اPc?
0 ا%-ﻉ.
HelloMsg db "Hello World",0
%
u< ; % هR.0
وﺡMsgBoxCaption R(ﺡف( اI )&ﺱ&
; اstring 0?م
ﻉC -ه
( c++ اـ%@ )آ( ه اﺡل0 ـ%R
-
string أن اـ%-ﻉ0
0R- ا...ﺹ-
ا
CRLF db 00Ah, 00Dh , 0
الXC ?ن0 وهذان ا(
*ان ﻉCRLF (CARRIAGE RETURN , LINE FEED) J *
0?م
ﻉC -ه
.3 ا واﺡاc
اd
ExitMsg db "Enter to Exit",0
. ﻩ3K( c حd '
.data?
.R
V(
ا
ا4 ) %
ت )ا(
*ات( اC' اPc?
0 ا%-ﻉ.
Buffer db ?
.
V(
ا
ا4
* ﻩ
.code
ي-
اد اPc?
0 ا%-ﻉ.
start:
(&
ر أي آh(; ا0...
اد0 ا, إ. %
ن رأ
ن( وهc?C ﻉه60 ﻩCI) label ;< <'رةstart
(&آ
...u= beginning ى آـhأ
invoke StdOut , addr HelloMsg
دC %
اUC
ان اﺱ-< %R@ addr HelloMsg أ، string رR ا(ﺱو
<; إStdOut
دا%<
ﺱC -ه
.
ااD R أي أن ه ا ه ا'را
اﺡ.RG<
invoke StdOut , addr CRLF
. واﺡc (?ار3
اd لX-- -C أي اCRLF % هRGﻉ- %
اUC
اﺱ-ه...ء% اC
invoke StdOut , addr ExitMsg
.3K( c حd '
invoke StdIn , addr buffer,1
) ; ﺹC ا
?'ل أي0C ) ;ﺡC P4 اا%@ .ﺹ ; ا(ﺱ
م- اﺹ
?'ل اStdIn
دا%<
ﺱC -ه
R@ 1 أ اـ.ان ﻉودةK )ﺱ
*ق إ0 ) UC
ن <ض اﺱI *&ﻩ. J
0 @رUC'& اI "
@G اـ "إD ه
.( واﺡا ; ا(ﺱ
مcharacter) @ ﺡ3'?
ﺱ- -C أ, ا0 &ا
وه%C=ا'را
ا
invoke ExitProcess, 0
. 0 ا'را
اﺡ وهRVc< ?مC وUC'ء اRC
اﺹExitProcess
دا%<
ﺱC -ه
end start
; -
'ﻩ هC ,&<) ¡
0 (@.,&<) ا%@ ه-'
آ-C) start -'
آ-C ا )ﺡ. UC'
ا0RC , إ. D ه
.
ن اأ
نc?-ون ا
D Rزرار آI اEﻁ اﻉ&ي ﻉ0 ى...-zC بzC -<ن دeوا
...06 وعF J4
. ok *ﻁG ا اV?&. ن ﺡدا0 أيdefault ه اـStandard EXE رh إن
%@ Dا.
اد ا يJ4 ا. message box UC...- UC اول3(?م ﻉ-...
@رdd Rs. نeوا
:
ارة ا
UC' ا%@ Rﺡd J
0 J %
ة وا0z اcIح @?ﻁ ا- ; ...اc اc اد3&?م
ﺡ-
.اﺱ
push MB_OK
.?ﻩ )ﺡ-<
ﺡث- . MessageBox
; را
ات داP ا'را
ااP@ دJ
0 -ه
push offset MsgBoxCaption
©= ه ا ه ا'را
ا. U ا(ﺱ,&< أ%@ Rs
%
اstring ( اـoffset) ان-< P@ دJ
0 -ه
push offset MsgBoxText
.%C= ه ا ه ا'را
ا. U وﻁ ا(ﺱ%@ Rs
%
اstring ( اـoffset) ان-< P@ دJ
0 -ه
push NULL
. 0 ـR(; ا
'ا0 .ء%d ) ﺹا أو%-ﻉ. NULL
(& آ.
ه ا أول را
call MessageBox
( stuck اـ%@ ; ا'را
ات0X. J
0)
رﻉI اR. را
ا- ا
<ء اا
ﻉ ان د@ﻉJ
0 -ه
push NULL
ExitProcess
ا'را
اﺡ اP@ دJ
0 -ه
call ExitProcess
UC'ء اRC
اﺹExitProcess
دا%<
ﺱC -ه
z'& % اﻉ0ت ا0
- %@ Xacker ا ?)ت4او ا..%&'(ا آ
ب ا4@ %C= اc <; اﺱ3اذا اردت ا
ﺹ
&
ﻉ0
اول را.Zs را
ات آ( )ﺡ4 hH. ه-
ا%
اMessageBox
ان دا.ﻩ
ة وة.)?(@
. (@ ة- )اU اـ(ﺱD R style ـ
?0~ ك- ه. string ان &ـ-< ,&< &ﺡلoffset ﻩ6. -
ا-C ا )ﺡ... اد,&< 30ﻉ. 3(ﻉ- نIا
: %
ى آhا
push MB_OK
lea eax,MsgBoxCaption
push eax
lea eax,MsgBoxText
push eax
push NULL
call MessageBox
-C@ ى. (آ... او هstring ان ـ-< ,&< ﺱ
م &ﺡل. RC أي اload effective address %-ﻉ. lea
(&ﻉ. ان
(stuck) ا(س, ا?(
إT&. P@C JK ;( وh ا3z
ر أي ﺱh اT-(0) eax 3z ا(ﺱ%@ ان-ن اﻉXC
. push
ا اـcا
P(z(; ﺡ© ان ا...%C= ا)&ب ا)ول او ا%@ )
<ء اا
اءcall وpush
?0~ -
ا-C ا )ﺡ
--(@ (`0 أfasm P(z J<0 R@
'-() masm32 هwinasm UC ﺱ
ﻩ0 ( ا يassembler)
: %
ا )ﺡ.
R اﺱ,R
- %@ %&'() ا3ﻉz. *?م ﺹ0 masm32 @نP4 اا%@ .ىhا
ام ﺹ*
ا
: ;< ء-*
)(; ا0
push MB_OK
push offset MsgBoxCaption
push offset MsgBoxText
push NULL
call MessageBox
: وه... واﺡcﺱ
(ﻉتz( اP R(; ا
ا0 )( وdirective) ﻩ6. ;< <'رة% هinvoke
(&آ...
* اD
هR ى )ﺡ
%
اaddr
(& آ ` )ﺡ0 أ.
¡ @ﻩ ا'را
ات. ¡ ا ي.
ا )ﺡ. masm
ـ%R@...u= tasm آـh)ا
. invoke
* ﺹ%@ offset
(& ا
ام آT-(0 ) ﻩC ا,
'ﻩ إC ا. string ان اـ-< P@ د, إ.
: %
آR
ى @(; آhI اا
ا,&< 'c-0 ء% اC
invoke ExitProcess,0
...
z
- اC ,&< -&ى ﺡ. (آ...D R R'
اﺡ ف ا¯ اﺱ?
وا...¡0z
J4 نeا
'c
وةTﺡC اT ذP ;...= 3R ا%R@ invoke ?
اـ0~ ﺱ
م- ن @<اe ; ا:
sﺡu
(...= اآJ&
ﻉ. %; آ.h)?
; ا0cا
MB_OKCANCEL ـR'
ﺱ. ب ان6 . messagebox (ﻁ اـC ;< <'رةZ&4 ( آ%R@ MB_OK أ ص
ب6 نe ا. cancel وok ك- هF' @?ﻁ أﺹok د زر6ﻩ ل وC أz
-C أي ا. + رةd R ا
'اT-(0 or
(& آ. MB_YESNO or MB_ICONASTERISK or MB_DEFBUTTON2
رh(; ا0 © ﺡwinasm 3'4 ; P T (ﻁ جC 3 T
ء آ-ﻩ اC ا )ﺡ.
ﻉKu=(ط اCI ا--
: ,&< 3 اﺱ
ﺡC نe ا.(ط ا(
@ةCI اP(z
(V4 ; 0. (ﻁ ا ي-ا
Assignment:
I- write a console program that receive the name of the user then print it , like this :
note that the program should take the name then print it followed by the sentence "is da
best" .
References:
ARTeam Win32 Assembly for Crackers – Goppit
http://www.at4re.com
... "ه#* )ا( وأزرار و+ ,- ."ى آ...ا
م ا
9 رIJ Gﺡ... add new Rc "B اProject 9() ,6 وا;ن...1 2
ا
رس ا4 4 ا آ+"و56 758أ
view 9() ,4 X
ه"اJ explorer bar ا
ـ,-
)ان:
"ى اexplorer bar ا
ـ4 ﻩ84 Qأ... زر)ء9LM ة
explorer "Bا
Resources ﺹ[
ـM6 2)( وASM Files) source code ﺹ[
ـM6 2)...,2) ,6 ن- "وع ا;ن5
ان اGﺡ
:
"ى اexplorer bar * ا
ـL أ4 ا;ن. (Resources Files)
: 9 ا ﺹرة ا4 آfg وأexplorer bar " ا ـde ا;ن. Resources "Bا
: resources ا
ـ9 4
"ى اe "ض أنL.. (Add new dialog) ر2
ا,6 " أول زرBوا;ن ا
. Dialog وTool Box "B اview 9() ,6... dialog ا ا
ـmI
ر6n اj 94k" إ8 ا;ن
. Dialog و "ﻁ ا
ـTool Box " "ﻁ ا
ـIs
*- w+ fgx4 "de " ا
وسy6 انGﺡz .زرارn ا94ku صB وهToolBox "ﻁ4 ر2
ا,6 " دس زرBا
.*Ln ا4 ,-
وdialog ا
ـ,6 ن-6 أي4 "م ا
}ر2 ) . + 96z+
:
* ا-5
fgﻩ أ8 أGﺡz
98B "B .ص ﻩB ID
ﻩresource *-4...ص
}رM
اID ه ا
ـ98B 98~..."هde ... ا98B ه98B أول
9 -
اX- : 9sﺡz6) . hello : ,-
م واآ أي ء وz-
اX26"ه واB ا. ا
}رw+ ب-
م اz-
ه اCaption
"Is 68"
assembling and linking *+ + ﻩ8" إ ا# *-5 "Ise أن ا
ﺡ"وف ف,6 #"
اw+ 9 "
. ( *-5 9 "
ا9 -
ا
dialog وﻁ ا
ـ4 "6 وا;ن ار. edit "ﺹ+ ر( وه2
ا,6) "ﻁ5
ا4 "ﺹ+ " راB وا;ن اtoolbox ا
ـw
د إ8
. ق ا
}ر4
) #ر4 "آﻩeب وا-
م اz-
اf26 واtext ﺹ" أ وه+ "B" أB اexplorer bar ا
ـ,6 ( وا;نedit) ""ﺡe "6 رIJ Gﺡze
نx ﻩ
"ى+ ن-6 أي4 "8ا... dialog " ﺡ ا
ـde X- : 9sﺡz6) *-5
ا اmI dialog ا
ـf ﺹ. ( -e
.(ء5e " آ-e " اوd
ﺡ و) ﺹ-ﺡe وI+ ا
وسk....ط8 I fgا
}وا ا
: اw+n "ىexplorer bar ا ـ,6 (IDD_DLG1001) w+n م ا دz- " اd8 +ا;ن د
Caption "ﺹ+ w
ول واذه إn اw+ "8 ا. """ ا
ﺡ6
ا
}ر وا8
واdialog ﺹ" ه ا
ـ+ أول
. hi – 9"
اL – "B زرا.k أ. www.alalame.net/vb : w
م اz-
" ا#و
:
هك زر آMake 9() *L" أs8ﻩ؟ ا4 ذيm
ا4 ذج ه}ة8 ,6 dialogs ا
ـ94k" إe ) وا;ن
: اX ﻩ ه6 وdialog ء ا ـLB اGﺡz . visual mode : off k وw * ا8 آ... , ﻁ ا }ر اdkا
."- *I ا
"( اk
ل اzB ,6 *
4 X z ,-
...96" " ا9Q 9 آX- زر94k إذن
. ﻩ وا
ﺹﻩ هM284 ﻩ4k" إe } هdialog اذا آن هكQأ
Project "B اexplorer bar * "ﻁ ا
ـL أ,6 ا;ن
"Ise " ان8 ا
}رX
ذw+ ﻁdQ8 6+ ﻩ ه+ "8 6 ا;ن. untiteled1.asm .6 "B اexplorer bar ا
ـw+ أ4 وا;ن
:
ن آ- د ا
ب-
ا...j n ا
" ا4 9
ف هx6 "# " أول...د "ا "ا-
"ح اx آ
د
ه أنQ أ، I+(declaration) نz+ مe ان4 z6 function *+ "e 6+ ، "ىBn ا96"
ت اd
4
~ ,6 وproto ا
ﻩ, ~ آ,6 وmydialog ه9( إ"ا4"+ "2
ا اm ه4 . (procedure)9( ا"اm ه,+ ,8
.DWORD=Double Word ع8 ,6 "ات6"ى ا
راe وآ، 9( ا"اmI
"ات6ا
را
. dialogs "
ا
ـd ,
"2
ا اmه
ف ا
هx
" ا# "2
ا
.data?
hinstance HINSTANCE ?
9) I
ت ا8
أي اuninitialized data ﺹ[
ـM6 ﻩ8"ق أL
ا,-
.data *6 ﻩ6 ت8
6 ه.data? إن
.9( ا ا9) *ﻩ ﺡ8 أw+ 9
؟ د96z+ ﻩ8 hinstance "d
ن ا4 Gﺡze -4 ، 9(ا ا
: ( هc++ ـ92 ) 9 ا ا."e... ا ﺡدةmodule ( ـhandle) j6 رعu مe GetModuleHandle 9 ان دا
ـQ6 8 و
إن أرد.
ﻩj6 "8 يm
اmodule ا ا
ـI string w+ (pointer)"y6 ه9
ا
اmI
"6أي أن ا
را
ﺡ4 Gﺡze آ,-
...I+ "اy6 "ف8 ~ 68"
6 ن-6 4 ( kernel32.dll )أيstring ا
ـm}ن هM8 8u4 z6 kernel32.dll
9
داe يm
ا.
أي ا...9
ء ا
ا58 إ4 مMي اm
ا.
j6 رعu مe 9
ن ا
اu4 9
ا
ﺡm ه4 ."اLg " آن6ن ا
راu4
. eax 4 }نM "
اj
آ" أن اm
" .ﻩ4 GetModuleHandle
:
( ه آc++
ـ92
) IL"4 DialogBoxParam 98
ا9
ا
ا6أ
int DialogBoxParam(
HINSTANCE hInstance,
LPCTSTR lpTemplateName,
HWND hWndParent,
DLGPROC lpDialogFunc ,
PARAM dwInitParam);
. dialog box ا
ـw+ يmL
اIL6 ا
ﺡيmodule
ـj6 ول هn" ا6ا
را
dialog ا ا
ـm هI6 "عLe
ا9gnة اm4
أي ا. مnة اm4
j6
ا. dialog box ا
ـw
" إy6 ه8
ا
I2 )ﺡdialog box ا
"ر ا
ـ9
ﺡد ا6M
ا. dialog box ( ا
ـprocedure)9( إ"اw
" إy6 ا
"ا
. WM_INITDIALOG ة2
( ا9
"
)ا2
ا,6 lParam "6 را1" ,+
: procedure ا ـXe ﺡت6 "ى8 + ا;ن د.68" ء اI8 وهI "ﺡ1 9 ا9 ا ا
HWND hwndDlg,
UINT uMsg,
WPARAM wParam,
LPARAM lParam );
.*( ر1" ,+ مs
ا6 *6 dialog
ـ4 . messages ه9 رn" اg
اmإن ه
6 أdialog ا
ـw
ا9g ا
ا9
"
ﺡد ا8
" ا6 وا
راdialog Box
ـj6 ( هw
وn 9
"
ول )أو اn" ا6ا
را
,+ 94kت إ66 " ا
"ا ﺡد6
* ا
را، dialog ا
ـw
ا9g ا
ا9
"
ا,+ 94kت إ66 ﺡد4
" ا6ا
را
,6 68"
ا1d أو أن-z6– 6 زرw+ مM2
ﻁ اdQ أنX
m 8 ,ﺡ4 9g وا9
ل ر8 6+ . 9g ا
ا9
"
ا
...w+n x زر
اstring ا
ـw
" إy6 ا
ه. [
ي "ض اm
" ﺡد ا
ﺹ" ا6 را8~ . dialog box
ـj6 " ه6أول را
.Ik"+ ف
ا-e أن6u4 – ا
وال9
أوm ه9
ا92
ﺡ ا
ﺹ" –اء1 4 رانB X
ﻩ ه8آ" أm
"
.4 6 اm" وه- *I أID ا
ـ9 آ آx
...ص ﻩM
اID ا
ـ-e أو أن، z6 DC_BUTTON1002 أي، "ا
ﺹ
mL4 "6م ه أM2
ا,6 9g ا
ا9
"
¯ ا8ﻩ اذا آ8ا أm وهif uMsg==WM_COMMAND. ه9( ا"اXe 4 " أول
1002 )" ا
ﺹ" ذي ا
ـ,+ درةg ، 9g ا
ا9
"
9
ت ا6
¯ ا8ﻩ اذا آ8ل أe w
وn ا2 if هكif ا
ـm ه,k .9
" ا6واnا
. ( edit """ ا
ﺡ6 4 )أي1003 )"
ا
ﺹ" ذي ا4 msg1 "ضe أنI6 واSetDlgItemText 9
دا+4 <,n>ا
}ر ا
9
دا+4 <"2n>ا
}ر ا1004 )" ا
ﺹ" ذي ا
ـ,+ درةg ، 9g ا
ا9
"
9
ت ا6
¯ ا8ﻩ اذا آ8ل أe 98
ا
هك,"5
ا, هذ. ( edit """ ا
ﺡ6 4 )أي1003 )"
ا
ﺹ" ذي ا4 msg 2 "ضe أنI6 واSetDlgItemText
. if *+ Ie
اendif
:
اmL4 قz#م ه إM2
ا,6 ا
ﺹدر9
"
¯ ا8ﻩ اذا آ8 أe m وهelseif uMsg==WM_CLOSE. هكX
ذ
. if *+ Ie
اendif هكX
و ذ. dialog box ق ا
ـz#u مe ا
فEndDialog 9
ا
ا+ا
.مs
اw
"ة ا2
اe
اRET 9e ~ هك. 9ة اﺡM
اm وهxor eax,eax . eax *2
" اL ﺹ9e exe ه
. 9(ء ا"اI8 إ96 mydialog end 8 9I
ا4و
:
"ى اe "ض أنL ( وا;نwinasm 6 L8 *QL) 6 ن-6 4 تL
اGLأﺡ... w+n ا4 Go All زرw+ ﻁdkا;ن ا
: (,n ا
}ر اw+ ﻁdQ
ذة اBx6 ا
ﺹرةm)ه
´28 ا وا+"و56 ءµ8 أresource 8
واasm ولnن اL6 ت هك4"
ا4…ات اM
"ا ا4 xB X
"IJ إن
يm
زر اw+ ﻁdQ
-
اk
اw
* ا8ن اn واnew rc "B اmake 9() ,6 ~ رس آد2
ا2) w
اasm .6 ﺡت6
ن "ىn ا. winasm 6 L8 4 تL
اGL واﺡgo all زرw+ ﻁdk ا. ا
ﻩresource .6 ﺡت6 ´28 واmake 9() *Lأ
...14"6 ه6 6 آﻩ6 98ك رxB e ﺡول ان...B أz 9
ا
http://www.at4re.com
ار
ا )ا وا( أ آ ا
ام
winasmآ )ا +ا
*
)(...ا-م
0آ ﺹ /0آ....وإ 56
-ﻩ أ...23ا<)ح
-:ن ﺹﺹ ـ crackmeاEي وﻩ اCخ
ColdFeverآﺡي
0ى ا*) .واﺡ / 3دي اﺡي .
أ-Sض آ)ا
Qﺹ Pآ) اﺡ..3ﺡي T Uا6) W.Q...ت
coldfever
اﺡ ا*) . olly +آ )Qى ه0ك دا . F9 l m/ bp .401172 0/ GetDlgItemTextAأد PSأي
ا
و allko :وأي ر oو . 123456 :اtن ا . register Usه / oا (F8)*Q . olly 5وQ 0/ﺹ Pا5
اـ 0/ CALLا-0ان F7 Us 4011B6آ
)ى ذا T-3ه0ك.
ان أول ﺡ)ف ا-زر ا . 4E6AF4BC 6ه WEاـ )Q loopﺡ/ 5د ا)ات 3وي -ل ا-زر
oﺹ . 3ذا آن -ل ا-زر ، 5ن ه WEاـ )Q loopدور Qا ، 0lأي / P/ 3اـ xorﺡ)ف اCول
وا
ا-زر / P/ 3 l .أ*ﻩ <) Qﺡ-ل ا .0ا). 6د oه :إ 5ر-ز ﺹ sاـ
. asciiا 3 3m0إ ه WEا)-ز إ FIT- 5و ﺡﺹ 5/ Pا)3ل .اtن د 0/ﺹ ا .ا 3ه0ك 4
أﺡ)ف
أول آ3)
Pل sا / )0ا-زر ا PSوه
. FIT-
اtن . winasm + ) Psأ < <)و3T /ا .واtن project (oا. new rc )S
< oء ) 3T dialogأول زر ار
) . (explorer U3اtن أ < )
Qﺡ) )3وlث أزرار آ ﺹ-رة
: ا
include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib
| ا* ت6
نt وا. 4messages P*6Q 5وC ا0...
ءP*6Q ل3) ا-Q ()اTﺡ أن إ
:
ا03
.data
special1 db "FIT-",0
special2 db "%d",0
.data?
hInstance HINSTANCE ?
NameBuffer 32 dup(?)
SerialBuffer 32 dup(?)
mystr 32 dup(?)
3 إن أردت ا.
آ هm" اﺡs "اﺹWE ه. (handle) *6 ﻩ20 ﻩ0
)s
ه5وCا
...ª ) ا5/ « ﺡP اﺹ
32 dup('d') ª* آ- . NameBuffer )s ﺹS ª3 32 . ﺡ ر ﺡ.ﺡQ ا
مm
ا/ : E W3) اE * ه. d ﺡ)ف32 m ª3 32 . ﺡ ﺡ.ﺡ
أ ا)وض: لQ ر23 أ.
ءm أن اﺡ ر5/ لQ
ون ' ' ( اm )ﺡ أ
: اE: ه. اQ : أن
NameBuffer db 32 dup(?)
: . ( db ﺹo )أdirective اـQ / ء0s
ا0: uninitialized data P 0 C...:<
.m*:Q ك أن3 initialized data ى-
T-3 « ﺡ.data o
0/ 0
...ªo¯ )sﻩ آ0 أ ا)ا. SerialBuffer «) اs ا5/ ®*|03 ا<
ء
:
|) اC
ذ ا3 . wsprintfA ا
ام دا
.const
IDD_KEYGEN equ 1001
IDC_NAME equ 1002
IDC_SERIAL equ 1003
IDC_GENERATE equ 1004
IDC_COPY equ 1005
IDC_EXIT equ 1006
ار- و ) ﺡ1001 ID ﻩ اـ.: ن زر ا. أن *) ا- ﻩ هP آ0( هconstants) ªا-| ا6 -ا هEه
)s |ء/¥ مQ equ اةdirective إن اـ. resources اـ6 اE: وهID 1003 ل ﻩ اـ3)ا
:
ا03 نt ا.error |
6 اWE) هs أي ﺡو.+ )* اP/ ال- l o
.code
start :
invoke GetModuleHandle, NULL
mov hInstance,eax
invoke DialogBoxParam, hInstance, IDD_KEYGEN, NULL, addr DlgProc, NULL
invoke ExitProcess,eax
ء ا/
ذ ا3 . يE0د ا-: ا3
ا03 )|
l .د-:| ا6 0( 0
أ03 )|
أول
()اT¥ ا«
ي ا. kernel32.dll دة ﻩ أي-T- اy *6
ﺹرS. GetModuleHandle
ا
*اﻩ ـ0:3 وdialog ا
ا
اـ، kernel32.dll y *6 ولC ا: رC ا*را)ات ا. dialog اﺹ ـ
()اT إ5 ا)ا ¯) إ، (ة أمE T-3 ﻩC )م )ﺹCة اE0 *6 « ا، (1001 اص ﻩ )أيID
)® را3) / m*6
« )ﺡdialog box ا
)ر اـ6ﺡد ا3 ا، dialog box ( اـprocedure)
.+ )*ء اm ﺹS اا ا. WM_INITDIALOG )ا)
( اة+ اlParam
: د-: أ
ﻩ اW. generate أ زر
.if eax==IDC_GENERATE
invoke GetDlgItemText,hWnd,IDC_NAME,addr NameBuffer,32
call Generate
invoke SetDlgItemText,hWnd,IDC_SERIAL,addr SerialBuffer
: (* ا/ Pm د-: ا3- ªo) ل3) ا-Q ()اT د اص-:)ى ا0 نtوا
1 Generate proc
2 mov edi,offset NameBuffer
3 invoke lstrlen, edi
4 cmp eax,5
5 jl NOINPUT
6 invoke lstrcat,addr SerialBuffer,addr special1
7 xor eax,eax
8 xor ecx,ecx
9 invoke lstrlen, edi
10 mov ecx, eax
11 sub ecx,3
12 mov edx,4E6AF4BCh
13 xor eax,eax
14 xor ebx,ebx
15 begin:
16 mov eax,dword ptr [ebx+edi]
17 inc ebx
18 xor edx,eax
19 dec ecx
20 jnz begin
21 invoke wsprintf,addr str3,addr special2,edx
22 invoke lstrcat,addr SerialBuffer,addr str3
23 NOINPUT:
24 ret
25 Generate endp
: !"#$%إ( '& ا
.*)ف ا/ و أmod و تU6 xm ت: ﺡ. و63)| اª)T...E ن63) ك0ه
!!! U6 )|
أ6 أو5 ر...اد آ)ة- آ أآ5ﺡج اQ وPm
C واﺡة وه
ا63)
)ح
:
اy( أinclude windows.inc P
ردة )أ- ات ا
include ufmodapi.inc
includelib ufmod.lib
:
اy أ.code |6 نtا
include allko.inc
xmSize equ $ - table
ﻩ3 اEه...56
-ء اm ¥ دا- آ2 أنWM_CLOSE
) ن اص:ن ا|*
أ ﻩ
اtوا
:
ا|) ا
invoke uFMOD_PlaySong,0,0,0
*ت:ك ات وا0 ه. winasm . ا<)وعªﻩ وﺡo ª*Q
)ض أ ا، 0ﺡ
وufmodapi.inc وufmod.lib :
وه. ا<)وع ﻩªي ﺡE ا.
اm و.3
ا
chiptune.inc
y ا5/ Q 063) ؟y !! آ56
- اy -m « أ ا. Ä m )sQ
ول واCا
ل-ﺡ0
y آ: / . array of bytes آـP ( ا63)|*ﻩ اQ اE )هresource آـ56
-ا
l + )* اﺡ ا.(thx THigo !)E ﺹS . ) ارسª6 ؟ أرarray of bytes 5 ا56
- اy
.) ﻩQ
6
- y ) أيS واload )S اfile (o
: 0 هW)اQ 5ادات ا/¥ ) اy اPﺡQ نtا
16 و0 6 أ ا.o) اª* آsize S
E 27E8 ﻩ. ﺡWرS أªo يE اyﺡ أن ا
. go )Sن اt وا، dump to file رS 5/ ﺹﺡ/ و50Q 23 أ، asm : sر اS ا5 ا *ﻩ ا. )اsQ
(5/C
ا اE) هS ا0 C) allko.inc
اﺡﻩl اﺡﻩtable.txt
y 5/ Pء
ﺡﺹm ا
!!! 56
-
ا. GO all Usن اtوا
درس ا م ه ارس ا
دورة ! ATREا اآز...ه)ا ارس !('ول $%ث
'+,ط :
-آ 0 4إ/ 01'2ر ,ع ، bmpوه)8' !9 :ة و>= <0
-آ 0 4إ/ 01'2ر ,ع ، jpgوه)'!D9 :ج ا Bأآاد ( 0ودوال
') 4(! 0/ه'...
-آ 0 4إ Fade In %E9 01'2و . Fade Out
آ 0 4ا/ 01'2رة ه !1E...0O'P 0Q R> 0 Sض أU [!4> WX \,وح OYو'U,V> WXء
...OY dialogواdن O8ﻁ اـ ) tool boxان 'g Oها '<g'> +1ر( view toolbox :
ا
! زر اkرة
واpن ﺡك ا1 8mق اـ dialogو!$ﺡ rأن ا \(O q D> P9 8mر ﺡود اkرة...ار
ﺡودا آ' ...O9ه)ا :$s
xج \ > wﺡار ، OYاP2ﻁ addوﺡد /رة ' 0>'!> X %ا و ... '< IDه)ا : $s
%اP2ﻁ . okواdن اP2ﻁ 9 ' BSاk'> :رة :
: %
'R!9 Xءل '...اا w1ا 9 Bآ 0 4ا/ 01'2ر اـ ' jpgد(' 'Xدر BS Oا/ 01'2ر اـ bmp
و>= > 0}'R؟ +,م >' 01'2أآاد ا 0 1'2؟
ﺡ '(Rه('ك ~ > Rﻁ/...ر ) 0}P jpgا '1ن ﺡ<' Oن ا/ s> P/ر $s ، bmp
اﺡى اkر ي آ'ن ﺡ<' ) 4, ، 197kb : (bmpاkرة >. 23kb : jpg 0P k
'دراX نO winasm – وه انjpg ر/ امx!( اS – أي0'D ا:) ه1 0Q R> 0U ه('ك
0+OQ> p ا$s , w> زر او01'2 اw Q!R9 '!'> وvisual اw2 = اPU9 BS
. ه)ا ارس1 '+ﺡp :ذآE = آ ة وه('ك ﺡ0U> WR :)' هS...0OوO
. Project add new RC % file new standard exe...OY وعU 'ءU,V> X نdوا
ا'نB'ت اول اO!D R(> X ، testRC ,'s واtest اول، 'نk, 'ن4 'ت ه('ك+1 ا1
. ﻩkx ا'ن اB ا,'s'ت اO!D و، ﻩkxا
: ىR ا ' ا0O ااو1 '! !ى اGo All ﻁ زرP2ن اdوا
w9 انBR(9 p ، وعU اr4D> م+9 انwinasm \( ~Q 08'U ا:) ه:9 = أنX ' })
(. وعU'ت ا4 ﻩ1 r4D! ا ا)ي4, 1 image 'ةRرة اkا
...O(ى ' ا
386.
.model flat,stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\masm32.inc
include \masm32\include\gdi32.inc
include \masm32\include\user32.inc
include \masm32\include\kernel32.inc
include \masm32\include\Comctl32.inc
include \masm32\include\comdlg32.inc
include \masm32\include\shell32.inc
include \masm32\include\oleaut32.inc
include \masm32\include\ole32.inc
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\gdi32.lib
includelib \masm32\lib\user32.lib
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\Comctl32.lib
includelib \masm32\lib\comdlg32.lib
includelib \masm32\lib\shell32.lib
includelib \masm32\lib\oleaut32.lib
includelib \masm32\lib\ole32.lib
: > YO (ى 'ذا1...'<( \Sس دE> p...'( ه.lib واـ.inc اـs(' ه('ك اRﺡ
.data
msg db "hi",0
.data?
hInstance HINSTANCE?
hBmp dd?
.code
start:
invoke GetModuleHandle,NULL
mov hInstance,eax
invoke DialogBoxParam,hInstance,1001 ,NULL,addr dlgproc ,NULL
invoke ExitProcess,NULL
: 0 '! اQى ا, '(Sد...'!<' دا, Q ا:)ه...OY p نd اB!ﺡ
end start
<(' ' هO D(1 ، = آ أو آاآ0R('> ...Q = ا+ ه اO(' اRﺡ
=4أ
if uMsg == WM_COMMAND
زرBS ﻁP اw =' ! 0ز$ اQ(' ا42'ل أs ه)ا ا1 $s1...kX ف ' أ9 \, أ+! Sو أ
: ,أ...\) ' 9 messagebox جx! q ﺡallko
.if wParam==1002
invoke MessageBox,hWnd,addr msg,addr msg,MB_OK
.endif
w2 ( !!! ' 0 اY وﻁ إ1 ﻩ9 p wQ'> ...~ >ﻩ¢9 أي 'ن1 '§ ) أو, ¡
ا1
: ! '!ا ! اY¥ا
O tamplete 0>'s> وهk, 4 >ﻩfinal '> 'ت+1 ا1 ! ، !'مx ا1و
. ا<' ي آx!ا
http://www.at4re.com