You are on page 1of 23

masm32 ‫ ﻝ‬------------‫ات 

ر‬

masm32 ‫ه ا


 ﺏ‬

.386
.model flat,stdcall
option casemap:none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\masm32.inc
include\masm32\include\debug.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\masm32.lib
includelib\masm32\lib\debug.lib
. ‫ "!   آ‬#$ ‫ت‬%&'‫* اﻝ
)ت واﻝ‬+‫ ه‬// ‫ﺡ‬
.data
 (var) :‫; ﺡ‬%<‫ و‬%‫اآة(  اﻝ‬+‫ اﻝ‬56‫ا‬7 ) ‫ اﻝ& ات‬. /0&‫ اﻝ‬1& ‫ء‬3$‫ا اﻝ‬+‫ ه‬
‫ﻝ >'ل‬
.code
start:
‫ (  ﻝ >'ل‬begin) ;%<‫ و‬%‫زات اﻝ@ﺹ ﻝ‬B‫ آ& ا‬1& ‫ء‬3$‫ا اﻝ‬+‫ ه‬

invoke ExitProcess,0 .%‫  اﻝ‬%6 ‫رة‬%‫* اﻝ‬+‫ ه‬5‫ و‬#$

end start .‫(  ﻝ >'ل‬end.) ;%<"‫ و‬%‫  اﻝ‬C"

‫اع ا !
ات‬# ‫أ‬
D%‫س ﻝ‬:"‫  و‬3@‫ﺡ اﻝ‬F‫ اﻝ‬#F‫اآة وﺡ‬+‫ اﻝ‬56‫ا‬7 ‫ اﻝ& ات أو‬. ‫ع‬7‫ ﺙث أ‬K‫ ﻝ‬K‫ﺝ‬7"
-: ‫اع ه‬7M‫وا‬
. 8 bit $‫( وﺡ‬data byte) ‫رة‬%‫ ﻝ‬0&@ ‫ وه‬db -1
. 16 bit $‫( وﺡ‬data word) ‫رة‬%‫ ﻝ‬0&@ ‫ وه‬dw -2
. 32 bit $‫( وﺡ‬data double) ‫رة‬%‫ ﻝ‬0&@ ‫ وه‬dd -3

1 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
‫ات 
ر‪ ------------‬ﻝ ‪masm32‬‬

‫آ( ا!
ی&  ا !
ات‬

‫  ﻝ >'ل ‪ K K‬أن‬


‫ﻝ‪ R  
" K:‬اﻝ
ت آ )  اﻝ&‪ . /0‬اﻝ& ات ‪ً C‬‬
‫‪0‬ح ‪7'  & .‬ن ‪ (var) :‬وﻝ‪  0‬اﻝ&ﻝ ‬

‫‪var‬‬
‫;‪x:integer‬‬
‫; ا*‪#‬ع ‪ :‬أﺱ‪ ,‬ا !
‬ ‫أي أن اﻝ‪7'"  0‬ن‬

‫أ 
 )‪7' (masm32‬ن اﻝ&‪ . /0‬اﻝ& ات  ﺡ‪ (data) :‬آ ذآ >‪ ً:‬وﻝ<'‬
‫اﻝ&ﻝ ‪-:‬‬
‫أﺱ‪ ,‬ا !
‬ ‫ا  ا‪.‬ﺏ!ا‪ -‬ا*‪#‬ع‬
‫وآ  ا‪ 
CM‬اﻝ&ﻝ ‪-:‬‬
‫‪.data‬‬
‫‪r1 dd 30h‬‬
‫‪r2 dw 20‬‬
‫‪k db 00111011b‬‬
‫‪2‬ﺡ‪/////0‬ﻝ‪XXX 5XXX XXX&" (masm32) XXX‬م )‪ XXX) (hexadecimal‬اﻝ&)‪XXX‬ت أو‬
‫اﻝ&‪0‬ت اﻝ‪B :F‬ﺡ وﺝ‪7‬د ﺙث ﺹ ‪  Z‬ﺡﻝ ذآ اﻝ‪ ] ^: 16‬ذﻝ\ أن اﻝ‪ 16‬ﻝم‬
‫اﻝ<ي )اﻝ
 "‪7‬ﻝ; إﻝ] م ‪ (16‬أ أذا ﺝء ‪ K‬اﻝ‪ 16‬ﺡف )‪ ] (h‬ذﻝ\ أن اﻝ‪7&' 16‬ب‬
‫م ‪ 16‬أ أذا آن اﻝ‪% 16‬رة ‪ (0,1) .‬و &; ﺡف )‪ ] (b‬ذﻝ‪ \X‬أن اﻝ‪7X&' 16X‬ب‬
‫ﻝم اﻝ‪. eC‬‬

‫ آ ‪3@" f‬ن‬
‫ﺡ‪ //‬ﻝ
&‪ . 7‬اﻝم اﻝ<ي إﻝ] اﻝم ال‪ ]
1F: 16‬اﻝ‪K‬د ‪ً C 16‬‬
‫‪r2 dw 20‬‬ ‫‪r2  6‬‬

‫‪16 20 4‬‬
‫‪16 1 1‬‬
‫‪0‬‬
‫‪ r2‬ه ‪14h‬‬ ‫'&‪ #‬اﻝ‪ . 16‬ا‪ )>M‬إﻝ] ا‪ ]
M‬و‪ .‬اﻝ ‪F‬ر إﻝ] اﻝ  ‪ .‬أي أن ‪ 6‬‬
‫أ اﻝ&‪ . 7‬اﻝ‪ eC‬إﻝ] ال‪h 16‬ﺥ‪ +‬آ أر‪ bits 5‬و!‪ ' 5‬اﻝ‪ 16‬اﻝ‪+‬ي ‪ 
:‬م‬
‫ال‪C 16‬‬
‫‪k db 00111011b‬‬
‫‪ C 1011‬اﻝ‪ 11) 16‬أي ‪(B‬‬
‫‪ C 0011‬اﻝ‪(3) 16‬‬

‫أي أن ‪ k  6‬ه ‪3B‬‬

‫‪2‬‬ ‫ا
اق ادﺱ‬ ‫أاد ا 
 
 ا ا
ا ‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

(PrintHex) 9‫أی ز ا‬
56‫ا‬7 ‫ت أو‬$F
‫  ﻝ‬%i‫ن اﻝ‬7'"‫ و‬+ )&‫ 
] ﺵﺵ اﻝ‬%i
‫ز ﻝ‬j‫ا ا‬+‫م ه‬K@&F
l ‫ ﺡ‬hexadecimal ‫ م‬$ &‫ن اﻝ‬7'"‫ و‬32bit 1$‫اآة )اﻝ& ات( ذات اﻝ‬+‫اﻝ‬
.‫ ة‬%‫ آ‬#&'" ‫ أن‬#$ (P,H)‫أن ﺡف‬

(Register) ‫ت‬2= ‫اع ا‬# ‫أ‬

. ‫ع‬7‫ى اﻝ
 وهﻝ\ ﺙث أ‬K‫; ﻝ‬$‫ وف ﺡ‬3‫ 'ن ﺥ‬. ‫رة‬% -:(register) $F‫اﻝ‬
-:‫ت‬$F‫اﻝ‬
eax,ebx,ecx,edx,esi,edi,esp,ebp -: ‫ وه‬32 bit 1$‫ت ذات ﺡ‬$F -1
ax , bx , cx , dx , si , di , sp , bp -: ‫ وه‬bit 16 1$‫ت ذات ﺡ‬$F -2
ah , al , bh , bl , ch , cl , dh ,dl -: ‫ وه‬bit 16 1$‫ت ذات ﺡ‬$F -3

eax register C  7" '‫ﺵ‬

16 bit ax

ah al
8 bit 8 bit
eax bit 32

(Transfer Instruction) >*‫أی زات ا‬

1- mov instruction
-: ‫ أن‬l ‫( ﺡ‬destination ]‫ إﻝ‬source) ‫ت‬7& nF‫ز ﻝ‬j‫ا ا‬+‫م ه‬K@&F
. :‫ي "@ج ; اﻝ‬+‫ اﻝ'ن اﻝ‬-: source
.  :‫  ; اﻝ‬:&F" ‫ي‬+‫ اﻝ'ن اﻝ‬-:destination

-: ‫ز ه‬j‫ا ا‬+‫  اﻝ ﻝ‬0‫واﻝ‬


mov destination , source

. &"B source ‫  ال‬6 -1//‫ﺡ‬


. 1$‫ ﻝ‬.‫و‬F& source=destination ‫ن‬7' ‫ أن‬#$-2

3 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

mov ‫ @ی ز‬# ‫ ا‬A‫ا‬


1- mov register, register ex\\ mov eax,ebx
2- mov register, memory ex\\ mov ax,var1
3- mov memory, register ex\\ mov y,edx
4- mov register,‫ﺵة‬%  6 ex\\ mov ah,70h
5- mov memory,‫ﺵة‬%  6 ex\\ mov k1,55h
‫ﺡت‬
(. &) ‫ ذاآة‬67 .  :‫ز اﻝ‬7$B -1
mov memory, memory
ex\\ mov x, r1 false
destination ‫ا‬77' ‫ أن‬.' B cs, eip, ip -2
mov eip , eax false

]‫( إﻝ‬10h) ;& 6‫ ذاآة و‬567 ‫ت‬7& nF‫ ﻝ‬masm32 


  #&‫ أآ‬//‫س‬
‫؟‬eax C (register) $F

.386
.model flat,stdcall
option casemap:none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\masm32.inc
include\masm32\include\debug.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\masm32.lib
includelib\masm32\lib\debug.lib
.data
r1 dd 10h
.code
start:
mov eax,r1
PrintHex eax
invoke ExitProcess,0
end start

4 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬


‫ن ا‬DE (‫آ‬

-: ‫ة اﻝ&ﻝ‬+‫ف " ﻝ اﻝ‬7> save ‫ أو‬save as ‫ @&ر‬file e6 .

ali %‫ اﻝ‬1>‫ أ‬


ً C *K .asm&‫ آ‬#$‫ و‬1>B‫ ا‬#&' file name :‫ ﺡ‬
]
‫ أو‬save ]
^! ‫ه‬K‫ و‬ali.asm file name :‫  ﺡ‬#&'
. (Keyboard) . (Enter)

^‫دة  ﺵ‬7‫ﺝ‬7‫ اﻝ‬save ‫ اﻝ!^


] أداة‬#$ ‫ أو إ‬K" ‫ آ‬K //‫ﺡ‬
. ‫ اﻝ& ات‬q)‫دوات ﻝ‬M‫ا‬

5 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬


‫ ا‬G(*‫آ( ﺕ‬
‫ة‬+‫ف " ﻝ اﻝ‬7> Assemble ASM file ‫ @&ر‬Project e6 . -1
-:  ‫اﻝ&ﻝ‬

]XX Volume in drive ‫رة‬XX% ‫ ًة‬XX‫ﺵ‬% Assembling ‫رة‬XX% KXX ‫ت‬XXr ‫أذا‬
X" 1X‫ أذا ﻝ‬X‫ أ‬،X C‫ة اﻝ‬7Xi@‫] اﻝ‬X‫ إﻝ‬X:& / X‫وﻝ] ﺹ‬M‫ة ا‬7i@‫  اﻝ‬+ )&‫ذﻝ\ أن اﻝ‬
. + )&‫ اﻝ‬K  1‫ ﺙ‬save ‫داة‬M‫; و!^
] ا‬0 hi‫  ; ﺥ‬%‫] ذﻝ\ أن اﻝ‬

‫ة‬+XX‫ اﻝ‬XX‫ ﻝ‬XX" ‫ف‬7XX> Assemble & Link ‫ر‬XX&@ Project XXe6 .XX -2
-: ‫اﻝ&ﻝ‬

‫ ] ذﻝ\ أن‬error 


‫ آ‬Press any key to continue ‫رة‬% %6 " 1‫أذا ﻝ‬
/0‫ة و‬+‫ اﻝ‬t
 error 
‫ت آ‬r ‫ أ أذا‬/ ‫  ﺹ‬C‫ة اﻝ‬7i@‫  اﻝ‬+ )&‫اﻝ‬
. C‫وﻝ] واﻝ‬M‫ة ا‬7i@‫ اﻝ‬K ‫ و‬save ‫داة‬M‫ و!^
] ا‬%‫اﻝ‬

6 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
‫ات 
ر‪ ------------‬ﻝ ‪masm32‬‬

‫‪&@ Project e6 . -3‬ر اﻝ@ ر ا‪M‬ﺥ  وه‪7> Run program 7‬ف  ﻝ‬
‫" اﻝ&) ‪ +‬آ  اﻝ‪+‬ة اﻝ&ﻝ  ‪-:‬‬

‫ﺡ‪ //‬م ‪ hexadecimal‬آ ‪K‬د  ; &ج إﻝ] ‪ 4 bit‬ﻝ‪+‬ﻝ\ '‪7‬ن ‪K‬د‬


‫ا‪M‬ر‪6‬م اﻝ& ‪h‬ﺥ‪+‬ه ‪ 567‬اﻝ‪+‬اآة )اﻝ& ( أو اﻝ‪$F‬ت ‪7 .‬ع ‪ 8 bit‬ر‪  6‬‬
‫أ ذات ﺡ‪ 16 bit 1$‬أرﺏ‪ L‬أر‪6‬م و ذات ﺡ‪   M 32 bit 1$‬أر‪6‬م ‪.‬‬
‫ﺡ‪ //‬ﺡﻝ وﺝ‪7‬د ‪K‬د أر‪6‬م أ‪ . 6‬ا‪M‬ر‪6‬م اﻝ‪K‬دة !‪ 5‬أﺹ(ر ‪K:‬ر اﻝ‪K‬د‬
‫اﻝ‪7
i‬ب ‪ .‬ﺝ اﻝ ‪F‬ر وآ  اﻝ‪C‬ل ا‪-: "u‬‬
‫‪mov ax,16h‬‬
‫ ه‪ *+‬اﻝﻝ "'‪7‬ن ‪ ax  6‬ه ‪B 0016h‬ن ‪ ax‬ذات ﺡ‪ 16 bit 1$‬و&ج إﻝ]‬
‫أر‪ 5‬أر‪6‬م ‪.‬‬
‫‪mov eax,2h‬‬
‫ ه‪ *+‬اﻝﻝ "'‪7‬ن ‪ eax  6‬ه ‪B 00000002h‬ن ‪ eax‬ذات ﺡ‪32 bit 1$‬‬
‫و&ج إﻝ] ﺙ  أر‪6‬م ‪.‬‬

‫= ‪ #‬أ‪-: O‬‬


‫‪1- mov al,66h‬‬
‫اﻝ‪3@ 16‬ن ﻝ<' اﻝ&ﻝ ‬
‫‪eax=00000066‬‬ ‫‪ax‬‬
‫‪ax=0066‬‬
‫‪ah=00‬‬ ‫‪0000‬‬ ‫‪00‬‬ ‫‪66‬‬
‫‪al=66‬‬ ‫‪ah‬‬ ‫‪al‬‬

‫‪eax‬‬

‫‪7‬‬ ‫ا
اق ادﺱ‬ ‫أاد ا 
 
 ا ا
ا ‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

2- mov ebx , 40
(hexadecimal) ‫ إﻝ] م‬16‫ اﻝ‬7" #$ ‫* اﻝﻝ‬+‫ ه‬
28h ‫ ه‬40 16
‫
 ﻝ‬:‫  اﻝ‬:‫ن اﻝ‬7'"
16 40 ebx=00000028
16 2 8 bx=0028
0 2 bh=00
bl=28
3- mov dh,9h
edx=00000900
dx=0900
dh=09
dl=00

Q‫  ا‬RS!‫آ( ا‬
.ً :> ‫ﻝ; آ ذآ‬7 .' 1‫( وإذا ﻝ‬Hexadecimal) ‫ م‬16‫ن اﻝ‬7' ‫ أن‬#$ -1
#F‫( وﺡ‬binary system) eC‫ إﻝ] اﻝم اﻝ‬#‫ﻝ‬F‫] ﻝ‬i‫ اﻝ‬16‫ اﻝ‬7" -2
.1$‫ ﻝ' ﺡ‬7
i‫م اﻝ‬6‫ر‬M‫د ا‬K
.0 ]‫ إﻝ‬1 ‫ وآ‬1 ]‫ إﻝ‬0 ‫ آ‬#
: \‫( وذﻝ‬2'complement) 1&‫&@ج اﻝ‬F -3
.(1 K ‫ وﻝ‬0=1+1 ، 1=0+1 ، 1=1+0 ، 0=0+0) 1 5 5$ -4
.(hexadecimal) ]‫د اﻝ" إﻝ‬K‫ل اﻝ‬7 -5

-: O‫ أ‬# =
1- mov ax,-30h
]‫ و&ج إﻝ‬16bit 1$‫ ذات ﺡ‬ax ‫ن‬B 0030 #&'‫دس < و‬F‫د م اﻝ‬K‫ اﻝ‬-1
‫م‬6‫ أر‬5‫أر‬
-:/%0  eC‫د إﻝ] اﻝم اﻝ‬K‫ل اﻝ‬7 -2
0000 0000 0011 0000
1111 1111 1100 1111 7‫ ه‬1&‫ اﻝ‬-3
1 + 16‫ اﻝ‬5 5$ -4

1111 1111 1101 0000

F F D 0 7‫ اﻝ" ه‬-5
eax=0000FFD0
ax=FFD0
ah=FF
al=D0

8 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

2- mov eax,-3h
eax=FFFFFFFD -:7‫ن اﻝ" ه‬7' :F‫ات اﻝ‬7i@‫ ){ اﻝ‬t %i&
ax=FFFD
ah=FF
al=FD

3-mov eax,-1
eax=FFFFFFFF
ax=FFFF
al=FF
ah=FF
eax ‫ول‬M‫ ا‬two register ‫ت‬7& .  K%&
‫ ﻝ‬masm32 
  #&‫ أآ‬//‫س‬
‫؟‬90h ;& 6‫ و‬ebx C‫ واﻝ‬60h ;& 6‫و‬

.386
.model flat,stdcall
option casemap:none
include\masm32\include\windows.inc
include\masm32\include\kernel32.inc
include\masm32\include\masm32.inc
include\masm32\include\debug.inc
includelib\masm32\lib\kernel32.lib
includelib\masm32\lib\masm32.lib
includelib\masm32\lib\debug.lib
.data
.code
start:
mov eax,60h
mov ebx,90h
mov ecx,eax
mov eax,ebx
mov ebx,ecx
PrintHex eax
PrintHex ebx
invoke ExitProcess,0
end start

9 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

(H.W) ‫ واﺝت‬# =


k 7‫ول ه‬M‫ ذاآة ا‬67 .  K%&‫م ﻝ‬7: masm32 
  #&‫ أآ‬//1‫س‬
‫؟‬mov ‫ام أز‬K@&> 10h ;& 6‫ و‬n C‫ واﻝ‬30h ;& 6‫و‬

ِ ‫ات اﻝ&ﻝ  وأ‬7i@‫ اﻝ‬+) //2‫س‬


‫ ؟‬e&‫^ اﻝ‬
1- mov ax,9Bh
eax=?
ax=?
ah=?
al=?
2- mov bh,1001b
ebx=?
bx=?
bh=?
bl=?
3- mov edx,-19
edx=?
dx=?
dh=?
dl=?
4-mov ah,10h
mov bx,ax
ebx=?
bx=?
bh=?
bl=?
5- mov dx,-30
mov bh,dh
ebx=?
bx=?
bh=?
bl=?

10 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

-: ‫ أن اﻝ& ات  ﻝ<' اﻝ&ﻝ‬D


‫أذا‬//3‫س‬
.data
r1 db 00000010b
r2 dw 20h
r3 dd 10h
"‫^ اﻝ‬
ِ ‫ ﺹ  أ‬D‫رات اﻝ&ﻝ  ﺹ  وأي  ﺥ~} ) أذا آ‬%‫ اﻝ‬. ‫ي‬h
‫(؟‬hi@‫ اﻝ‬#%> ^
ِ ‫ ﺥ~} أ‬D‫وأ أذا آ‬
1- mov ax,r1
2- mov ax,r2
3- mov eax,r3
4- mov r2,r1
5- mov r2, dx

2- Xchg Instruction
‫  اﻝ‬0‫( واﻝ‬two operand) .
 ‫ت‬7& .  K%&
‫ز ﻝ‬j‫ا ا‬+‫م ه‬K@&F
-: ‫ﻝ; ه‬
Xchg destination , source

-: ‫ا ا@ی ز ه‬GW # ‫ ا‬A‫ا‬

1- Xchg reg , reg ex\\xchg eax,ebx


2- Xchg reg , mem ex\\xchg ax,var1
3- Xchg mem , reg ex\\xchg r1,ah

//‫ت‬0‫ﺡ‬2
.1$‫و ﻝ‬F& ‫ن اﻝت‬7'" ‫ أن‬#$ -1
.‫ ذاآة‬67 .  K%&‫ اﻝ‬.'B -2

11 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

edx ‫ و‬66h ;& 6‫ و‬eax ‫ ه‬.


$F ‫ت‬7& K%& ‫م‬7:  #&‫ أآ‬//‫س‬
‫؟‬Xchg ‫ام أز‬K@&> 39h ;& 6‫و‬
.code
start:
mov eax,66h
mov edx,39h
PrintHex eax
PrintHex edx
Xchg eax,edx
PrintHex eax
PrintHex edx
invoke ExitProcess,0
end start

-:(H.W)‫ واﺝت‬# =
1
r1 7‫ول ه‬M‫ ذاآة ا‬67 .  K%&‫م ﻝ‬7: masm32 
  #&‫ أآ‬// ‫س‬
‫؟‬Xchg ‫ام أز‬K@&> 100h ;& 6‫ و‬r2 C‫ واﻝ‬220h ;& 6‫و‬
2
ِ ‫ات اﻝ&ﻝ  وأ‬7i@‫ اﻝ‬+) // ‫س‬
‫ ؟‬e&‫^ اﻝ‬
1- mov eax,-40
xchg ah,al

2- mov ebx,0ffh
mov edx,-2Ah
xchg bx,dx

3-mov ah,-7
mov ax,-30
xchg eax ,ebx

12 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

3- movzx {Mov with Zero Extend}


5 X>7& ‫م‬7X:‫( و‬destination) ]X‫( إﻝ‬source) ‫ت إل‬X7& nFX ‫ز‬Xj‫ا ا‬+X‫م ه‬7:
32 bit ‫ أو‬16 bit ‫ أ‬1$‫ اﻝ‬/%0 ‫ر ﻝ‬F ‫   أﺹ)ر إﻝ] ﺝ اﻝ‬:‫اﻝ‬
destination > source -: ‫أي أن‬
-: ‫  اﻝ ﻝ; ه‬0‫واﻝ‬

movzx destination , source

-: ‫ا ا@ی ز ه‬GW # ‫ ا‬A‫وا‬

1- movzx r32,r8 or m8 ex\\ movzx eax,bl


2- movzx r32,r16 or m16 ex\\ movzx edx,r
3- movzx r16,r8 or m8 ex\\ movzx bx,al

.  &" B‫( و‬destination) . 6‫( أ‬source)‫  إل‬6 //0‫ﺡ‬2

-:  ‫ اﻝ&ﻝ‬e&‫^ اﻝ‬
ِ ‫ أ‬//‫ل‬C

mov bx,0A69Bh
movzx eax,bx eax =0000A69B
movzx edx,bl edx =0000009B
movzx cx,bh cx = 00A6

.16‫ ر‬7‫ ه‬A ‫ﻝ


] أن ﺡف‬B‫ د‬tF‫ل اﻝ‬C‫  اﻝ‬16‫ اﻝ‬t%F ‫ي‬+‫ اﻝ‬0 16‫ ر‬//‫ﺡ‬

4- movsx {Mov with sign Extend}


5 X>7& ‫م‬7X:‫( و‬destination) ]X‫( إﻝ‬source) ‫ت إل‬X7& nFX ‫ز‬Xj‫ا ا‬+X‫م ه‬7:

/EX ‫ن‬X‫ ﺹ(
وإذا آ‬bit
EX D‫ر  ﺡل آ‬F ‫   أﺹ(ر إﻝ] ﺝ اﻝ‬:‫اﻝ‬
/%0X ‫ ﻝ‬F ‫
ف‬/‫ ا‬YZ/‫ات ی‬/‫ واﺡ‬L/‫ آ أرﺏ‬: ‫ أي أن‬1(s) YZ‫ ی‬1 #‫ ه‬bit
32 bit ‫ أو‬bit 16 ‫ أ‬1$‫اﻝ‬
destination > source -: ‫أي أن‬
-: ‫  اﻝ ﻝ; ه‬0‫واﻝ‬

movsx destination , source

13 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

-: ‫ا ا@ی ز ه‬GW # ‫ ا‬A‫وا‬

1- movsx r32,r8 or m8 ex\\ movsx eax,bl


2- movsx r32,r16 or m16 ex\\ movsx edx,r
3- movsx r16,r8 or m8 ex\\ movsx bx,al

.  &" B‫( و‬destination) . 6‫( أ‬source)‫  إل‬6 //0‫ﺡ‬2

-:  ‫ اﻝ&ﻝ‬e&‫^ اﻝ‬
ِ ‫ أ‬//‫ل‬C

mov bx,0A69Bh
movsx eax,bx eax =FFFFA69B
movsx edx,bl edx =FFFFFF9B
movsx cx,bh cx = FFA6
&‫ﺽ‬#‫ﺕ‬
eC‫ إﻝ] اﻝم اﻝ‬A 16‫ل اﻝ‬7 A 7‫ ه‬16‫ أن €ﺥ ر‬q‫ ﺡ‬A69B ‫ ه‬bx  6
/%0 ‫ات ﻝ‬K‫ واﺡ‬f ! ‫ أذًا‬K‫ واﺡ‬7‫ر ه‬F ‫ ﺝ اﻝ‬. bit ‫ أن €ﺥ‬q‫ ﺡ‬1010
-: ‫ آ ﻝ<' اﻝ&ﻝ‬32 bit 1$‫اﻝ‬

1111 1111 1111 1111 1010 0110 1001 1011

F F F F A 6 9 B

-:(H.W)‫ واﺝت‬# =
1- mov bl,-7
movzx ax,bl ax=?
2- mov ax,901Ch
movzx edx,ah edx=?
3-mov ax,-30
movsx ebx,ax ebx=?
4- mov ah,-fh
movsx bx,ah bx=?

14 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

Arithmetic Instruction

1- Inc Instruction
. (operand) ]‫ إﻝ‬1 ]‫ز ﺏ^ﺽ‬j‫ا ا‬+‫م ه‬7:

-: ‫ز ه‬j‫ا ا‬+‫  اﻝ ﻝ‬0‫واﻝ‬


1- inc reg ex\\ inc ax
2- inc mem ex\\ inc r

-: O_‫  ا‬# =

1- mov ax,30h
inc ax ax =0031h

2- mov ax,30
inc ax
(hexadecimal) ‫ إﻝ] م‬30 16‫ اﻝ‬7" #$ ‫* اﻝﻝ‬+‫ ه‬
16 30
16 1 E
0 1
ax = 001F  :‫ اﻝ‬/%0" inc ‫ أز‬t %i" K‫ و‬ax =1E  6 ‫أي أن‬

-:(H.W)‫ واﺝت‬# =
1- mov ax ,-30
inc ax ax=?
2- mov bx ,7
inc bx bx=?
3- mov al,17
inc al al=?
4- mov ah,-1
inc ax ax=?
5- mov al,FF
inc ax ax=?

15 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

2- dec Instruction
. (operand) ‫ ال‬. 1 ‫ز ﺏ^ ص‬j‫ا ا‬+‫م ه‬7:

-: ‫ز ه‬j‫ا ا‬+‫  اﻝ ﻝ‬0‫واﻝ‬


1- dec reg ex\\ dec ax
2- dec mem ex\\ dec r

-: O_‫  ا‬# =
1- mov al,1
dec al al = 00
2- mov ah,7
dec ah ah =06
3- mov ax,40
dec ax
(hexadecimal) ‫ إﻝ] م‬40 16‫ اﻝ‬7" #$ ‫* اﻝﻝ‬+‫ ه‬

16 40
16 2 8
0 2
ax = 27h  :‫ اﻝ‬/%0" dec ‫ أز‬t %i" K‫ و‬ax =28h  6 ‫أي أن‬
4- mov al,-7
dec al
#‫ﻝ‬F‫ اﻝ‬. 
@&
al=F8 0000 0111
1111 1000
1+
1111 1001
1-
1111 1000

F 8
-:(H.W)‫ واﺝت‬# =
1- mov al,-30
dec al al=?
2- mov bx,-79
dec bh bh=?

16 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

3-Add Instruction
 0‫( واﻝ‬destination ) ]‫( إﻝ‬source)‫ت ال‬7&  ‫ز‬j‫ا ا‬+‫م ه‬7:
-: ‫اﻝ ﻝ; ه‬
add destination, source
//‫ت‬0‫ﺡ‬2
.1$‫ ﻝ‬. &‫و‬F&  ‚ . & ‫ آ‬5‫ز ﺝ‬7$B -1
.‫ ذاآة‬67 .  5$‫ز اﻝ‬7$B -2
KXXXXX‫ار واﺡ‬KXXXXX: ‫ن‬0XXXXX:‫دة واﻝ‬XXXXX3‫( واﻝ‬sub)‫ح‬XXXXXi‫( واﻝ‬add)5XXXXX$‫ت اﻝ‬XXXXX
 -3
.(flag register) ]
‫( "ƒﺙ‬inc&dec)
.(1 K ‫ وﻝ‬0=1+1) ، (1=0+1) ، (1=1+0) ، (0=0+0)-4

-: O_‫  ا‬# =
1- mov r1,20h
mov eax,40h
add eax,r1 eax = 00000050
0010 0000
0100 0000 +
0110 0000

6 0

2- mov bl,40
mov ah,32
add ah,bl
0010 1000
16 40
0010 0000
16 2 8
0100 1000
0 2
bl= 28h
ah = 4 8

16 32 ah=20h
16 2 0
0 2

17 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

-:(H.W)‫ واﺝت‬# =
1- mov bl,-20
mov al,20
add al,bl
2- mov b,-56
mov eax,0ACD2h
add ah,bh
3- mov bl,5
mov ah,-3
add eax,ebx

4-sub Instruction
 0‫( واﻝ‬destination )‫ ال‬. (source)‫ت ال‬7& ‫ح‬i ‫ز‬j‫ا ا‬+‫م ه‬7:
-: ‫اﻝ ﻝ; ه‬
sub destination, source
.add ‫ز‬j‫
; ){ ﺵوط ا‬t%i"//‫ﺡ‬


ح‬9‫آ( أﺝ
اء   ا‬
. eC‫( إﻝ] اﻝم اﻝ‬destination)‫( و ال‬source) ‫ل ال‬7 -1
.0 ]‫ إﻝ‬1‫ و‬1 ]‫ إﻝ‬0 #
: \‫( وذﻝ‬source)‫ ال‬1& ‫&@ج‬F -2
.(source)‫ ال‬1& 5 (destination)‫ ال‬5$ -3
.K‫اﺡ‬7‫ اﻝ‬5 ‫( أو‬carry) ‫ ال‬5 "‫ اﻝ‬5$ -4
.(hexadecimal)‫  إﻝ] م ال‬e‫ اﻝ‬$ &‫ل اﻝ‬7 -5

-: O_‫  ا‬# =
1- mov al,20h
(source) 0010 0000
sub al,20h
(destination) 0010 0000
al=00
(source) 1& 1101 1111+

1111 1111
1+
0000 0000
0 0

18 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

2- mov eax,70h (source) 0011 0000


mov ebx,30h (destination) 0111 0000
sub eax,ebx (source) 1& 1100 1111+
eax = 00000040
1 0011 1111
1+
0100 0000

4 0

3- mov al,66h
mov bh,50h
sub al,bh al=16h

4- mov eax,80h
mov ebx,60h
sub eax,ebx eax = 00000020
//‫ت‬0‫ﺡ‬2
#F‫ <'
 و ﺡ‬K‫ﺝ‬7"B (destination >= source) ‫  ﺡﻝ‬-1
.:F‫ات اﻝ‬7i@‫اﻝ‬
#‫ﺝ‬7 ‫ن‬7' ‫( وأن‬hexadecimal) ‫ب م‬7&' ‫د‬K‫ن اﻝ‬7' ‫ ا ة أن‬#$ -2
.ً :>   ‫ آ‬#‫ﻝ‬F‫ اﻝ‬. 
@&‫( و‬hexadecimal) ‫ﻝ; إﻝ] م‬7 .' 1‫وأن ﻝ‬
.'‫ وﻝ‬:F‫ات اﻝ‬7i@‫ ){ اﻝ‬t%i (destination < source) ‫  ﺡﻝ‬- -3
 ‫ وآ‬#‫ﻝ‬F‫ اﻝ‬. 
@&‫ات آ )  اﻝ‬7i‫
; ﺥ‬t%i #‫ﻝ‬F‫د اﻝ" ﻝ‬K‫ اﻝ‬%&
-: ‫
 اﻝ&ﻝ‬CM‫ا‬
1- mov ah,30h ( source) 0111 0000
mov bh,70h (destination) 0011 0000
sub ah,bh (source) 1& 1000 1111+
ah = C0
1011 1111
0100 0000 1+
1011 1111 0100 0000
1+
‫( ــ‬4 0)
1100 0000

C 0

19 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

2- mov bx,-30h
mov cx,20h
sub bx,cx
(-30) #‫ﻝ‬F‫ اﻝ‬. 
@&‫ اﻝ‬#$ ‫* اﻝﻝ‬+‫ ه‬
0000 0000 0011 0000 0030
1111 1111 1100 1111
1+

(destination) bx 1111 1111 1101 0000


(source) cx 0000 0000 0010 0000
(source) 1& 1111 1111 1101 1111
(source) 1& 5 (destination) 5$
(destination) 1111 1111 1101 0000
(source) 1& 1111 1111 1101 1111
1 1111 1111 1010 1111
1+

1111 1111 1011 0000

bx = F F B 0

-:(H.W)‫ واﺝت‬# =
1- mov al,79h
sub al,-1
al=?
2- mov eax,-64
mov bx,-13
sub ebx,eax
ebx=?
3- mov bx,0A332h
mov ax,60
sub ah,bh
ah=?
4- mov eax,-22
sub ax,-3
ax=?

20 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

5-Neg Instruction
(2'complement ;‫ﺥ ) ﻝ‬K‫د اﻝ‬K‫ز ﻝ'{ أﺵرة اﻝ‬j‫ا ا‬+‫م ه‬K@&F
-: ‫ز ه‬j‫ا ا‬+‫  اﻝ ﻝ‬0‫واﻝ‬
1- neg reg ex\\ neg ax
2- neg mem ex\\ neg r
-: ‫
 اﻝ&ﻝ‬CM‫ وآ  ا‬Q‫  ا‬RS!‫ات ا‬7i‫ا; ){ ﺥ‬K@&>‫ ا‬//‫ﺡ‬
1-mov al,5h 0000 0101
neg al 1111 1010
al=FB 1+
1111 1011

F B
2-mov al,-5h
neg al
al=05

3- mov eax,30h
neg ax
ax=0000FFD0

4- mov ah, 30h


neg ah
eax=0000D000

-:(H.W)‫ واﺝت‬# =
1- mov ax,-33
neg al
al=?
2- mov eax ,88
neg ax
ax=?
3- mov bh,40
neg bh
neg bx
bx=?

21 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 


  #&‫ أآ‬//1‫س‬
-:‫ة‬7i‫ﺥ‬
r = -x +(y-z)
.32 bit 1$‫ واﻝ& ات ذات ﺡ‬z=60h ‫ و‬y=30h‫ و‬x =10h ‫
 ً أن‬
.data
x dd 10h
y dd 60h
z dd 30h
r dd 00h
.code
start:
mov eax,x
neg eax
PrintHex eax eax=FFFFFFF0
mov ebx,y
sub ebx,z
PrintHex ebx ebx=00000030
add eax,ebx
mov r,eax
PrintHex r r=00000020
invoke ExitProcess,0
end start
‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 
  #&‫ أآ‬//2‫س‬
-:‫ة‬7i‫ﺥ‬
r = - (x -(y-z)+n)
.32 bit 1$‫ واﻝ& ات ذات ﺡ‬n=40h ‫ و‬z=30h ‫ و‬y=20h‫ و‬x =10h ‫
 ً أن‬

.data
x dd 10h
y dd 20h
z dd 30h
n dd 40h
r dd 00h
.code
start:
mov eax,y
sub eax,z

22 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬
masm32 ‫ ﻝ‬------------‫ات 
ر‬

PrintHex eax eax=FFFFFFF0


mov ebx,x
sub ebx,eax
PrintHex ebx ebx=00000020
add ebx,n
neg ebx
mov r,ebx
PrintHex r r=FFFFFFA0
invoke ExitProcess,0
end start
-:(H.W)‫ واﺝت‬# =

‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 


  #&‫ أآ‬-1
-:‫ة‬7i‫ﺥ‬
k = - (x +y-(z-n) )
.16 bit 1$‫ واﻝ& ات ذات ﺡ‬n=40h ‫ و‬z=3 ‫ و‬y=20h‫ و‬x=22 ‫
 ً أن‬

5 sub ‫ام أز‬K@&>‫ون ا‬K‫ ﻝ اﻝدﻝ اﻝ&ﻝ  و‬masm32 


  #&‫ أآ‬-2
-:‫ة‬7i‫  آ ﺥ‬e&‫ء اﻝ‬i ‫أ‬
r = x-y-z
.32 bit 1$‫ و اﻝ& ات ذات ﺡ‬z=30h ‫ و‬y=50‫ و‬x=44 ‫
 ً أن‬

‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 


  #&‫ أآ‬-3
-:‫ة‬7i‫ﺥ‬
z=(x+y)-(r-n)
.32 bit 1$‫ واﻝ& ات ذات ﺡ‬n=55h‫ و‬r=30 ‫ و‬y=100h‫ و‬x =11h ‫
 ً أن‬

‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 


  #&‫ أآ‬-4
-:‫ة‬7i‫ﺥ‬
z=-y+r-(n+w)
1$‫ واﻝ& ات ذات ﺡ‬w=40 ‫ و‬n=55h‫ و‬r=30 ‫ و‬r=606h‫ و‬y =10h ‫
 ً أن‬
.32 bit

‫  آ‬e&‫ء اﻝ‬i ‫ أ‬5  ‫ ﻝ اﻝدﻝ اﻝ&ﻝ‬masm32 


  #&‫ أآ‬-5
-:‫ة‬7i‫ﺥ‬
z=(2x+2y)-(r+(-n))
.32 bit 1$‫ واﻝ& ات ذات ﺡ‬n=5h‫ و‬r=30h ‫ و‬y=10h‫ و‬x =1h ‫
 ً أن‬

23 ‫ا
اق ادﺱ‬  ‫أاد ا 
 
 ا ا
ا‬

You might also like