Professional Documents
Culture Documents
9 - Lap Trinh NASM Windows
9 - Lap Trinh NASM Windows
B mn MMTVT - HCMU
LP TRNH HP NG X86
Mc ch
Lm quen vi ngn ng lp trnh Assembly trn kin trc x ! "it c#ch vit$ %&ch$ ch'y v ch(n l)i *%ebug+ m,t vi ch-.ng trnh /.n gi0n
Tm tt l thuyt
12p ng *3ssembly+ l ngn ng bc th4p$ gip ch5 ng-6i lp trnh khng ph0i ghi nh m7 m#y *5pc5%e+ m s8 %9ng c#c t: ng g2i nh *pseu%5;c5%e+ g<n vi ngn ng t= nhin /> miu t0 cng vi?c c<n th=c hi?n@ Auy vy$ 3ssembly r4t g<n vi ngn ng m#y$ /Bi hCi ng-6i lp trnh ph0i hi>u bit t-.ng /Di /<y /E vF c4u trc ph<n cGng m#y tHnh@ Ii m)i ki>u kin trc cE3 b, vi x8 lJ$ cK m,t b, l?nh ring$ %5 /K$ cK m,t ngn ng 3ssembly ring ch5 nK@ L /My$ chng t3 nghin cGu 3ssembly ch5 c#c b, vi x8 lJ Nntel thu,c hO x !@ P#c ch-.ng trnh sQ /-2c vit ch5 ch /, th=c *re3l m5%e+ tr5ng RST v /-2c bin %&ch bUng VetWi%e Assembler@
C u t!"c c#$ m%t ch&'() t!*(h h+, ()@%3t3 <Khai bo d liu (kiu tnh)> secti5n @bss <Khai bo d liu (kiu ng)> secti5n @c5%e Xm3inPYATt3rtupZ [ Vh7n b\t /<u ch-.ng trnh$ cK th> th3y /]i [ t^y thu,c v5 l5'i pr5_ect t'5 trn Iisu3l P <Cc lnh thc thi> secti5n
secti5n @c5%e Xm3inPYATt3rtupZ push c3ll m5v push push push push push c3ll
! CD thc hin 2u5t ! *+i "#$ *7tEtd"andl7 c%a ,indo-. /01 ! F&u handl7 2u5t $#n h)nh
! Chi<u d#i c%a chu6i ! F5G Ha chI c%a chu6i ! *+i "andl7 2u5t $#n h)nh ! Ju5t chu6i (a $#n h)nh
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;j;
B mn MMTVT - HCMU
! *+i h#$ K2it0(oc7.. thot ch&'ng t()nh
L-u JZ ; nOi ch-.ng trnh /Fu ph0i cK /5'n c5%e th5#t khCi ch-.ng trnh$ nu khng ch-.ng trnh sQ khng %:ng khi ht ch-.ng trnh cE3 mnh@
P#c ki>u % li?uZ b *j byte+$ W *g bytes+$ % *c bytes+$ q * bytes+$ t *jh bytes+ V d oh3i b#5 tr5ng @%3t3
mess3ge msglength buqqersire %b i1ell5 W5rl%pi %b jg %W jhgc resb resb resW resq gss j j jh ! Khai bo $t -o(d cL kch th&Mc l# NO>P
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
B mn MMTVT - HCMU G 2
inc ebx inc byte ke%il !/dd. N to anG (7gQ$7$ 72c7Bt .7g %ec %l %ec e%i 3%% 3l$ kAYYAu v esil 3%c ecx$ ebx !/dd. (7gi.t7(. S Ca((G TlagU !V.7d To( adding WP bit nu$.U x3%% ecx$ ebx !7c2R7c2S7b2X 7b2Ro(iginal 7c2U sub e3x$ ebx ! 7a2 R 7a2 ? 7b2 sbb ecx$ ebx ! Eub. (7gi.t7(. ? Ca((G TlagU
Gh5 ch"
mul bl ! a2RalZbl (un.ign7d) imul bx ! d2[a2Ra2Zb2 (.ign7d) ohng %4u@ imul cx$ %x$ jg1 ! EB7cialX c2Rd2ZN>" (.ign7d onlG 3l lun l sD h'ng cE3 phxp nhMn ) *h5yc 3x h5yc e3x+@ mul ecx ! 7d2[7a2R7a2Z7c2 ot qu0 /-2c /-3 v5 3x *h5yc %x %iv cl v 3x h5yc e%x h5yc e3x+@ ! ah[alRa2QclX un.ign7d \uoti7nt in alX (7$aind7( in ah i%iv cx ! d2[a2R(d2[a2)Qc2
3n% 3l$ bl !alRal /]^ bl 5r e3x$ jh !7a2R7a2
_`
OOOOOOO/" x5r 3h$ ch !ahRah J_` ch test 3l$ c !97.t. bit > in al Y OOOOONOO _r LA"`L !au$B to F/bKF iT bit > i. c7(oU
n5t ebx neg A`na shl e3x$ j !7a2 i. logicallG .hiTt7d
r5t3te
l7Tt N bit Bo.U s3r esi$ cl !7.i i. a(ith$7ticallG .hiTt7d (ight r5l si$ jc !.i (otat7d l7Tt bG NP Blac7.U rcr bl$ cl !bl (otat7d (ight cl Blac7. th(ough ca((GU L?nh %&ch chuy>n %= li?u *ki>u m5v e3x$ kb3rl !`7T7(. to th7 cont7nt. ;m;
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
B mn MMTVT - HCMU
bytes$ W5r%s 3n% %5ubleW5r%s+ oT ba( gi3 c#c th3nh ghi v gi3 th3nh m5v e3x$ b3r !`7T7(. to th7 add(7.. oT ba( ghi v v^ng nh@
m5v e3x$t3blekebxl !K``_` m5v e3x$kt3blevebxl !_UKU m5v e3x$kesZe%il !_UKU %3t3 %W h !^ata tGB7 d7Tin7d a. doubl7 -o(dU @@@ m5v k%3t3l$ g !^o7.ndt -o(kU m5v W5r% k%3t3l$ g !_UKU %W5r% inputXqilen3meXptr ! %'ng cE3 ph-.ng thGc push v push push e3x p5pZ push j Ah3nh ghi$ b, nh *t: b, nh /n
push$ p5p
b, nh+$ hUng sD$ th3nh ghi /5'n$ c6 hi?u$ v t4t c0 c#c th3nh ghi pushZ Vguzn cE3 % li?u cK th> lZ "4t k{ th3nh ghi j! h5yc mg bit$ hUng sD$ th3nh ghi /5'n$ W5r% h5yc %5ubleW5r% cE3 b, nh p5pZ Vguzn cE3 % li?u cK th> lZ "4t k{ th3nh ghi j! h5yc mg bit$ th3nh ghi /5'n *ng5'i tr: PT+$ W5r% h5yc %5ubleW5r% cE3 b, nh L4y /&3 ch| cE3 % li?u v5 b4t k{ le3 th3nh ghi mg bit n5@ CI } P A T a S K ()hL$ Yesult rer5 P3rry 5ut ~ P6 nh 13lq c3rry 5ut ~ P6 nh ph9 Yesult p5sitive Yesult h3s even p3rity Sverql5W 5ccurre% ~ P6 trn
le3
e3x$ kesive%il
C7c cI h5EuJ
LE(h A0 A7(hJ cmp Ysj$ Ysg V d cmp AL$ RL Ct .e ; d khi .o .nh > thanh ghi /F ;# ^F
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;c;
B mn MMTVT - HCMU
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;s;
B mn MMTVT - HCMU
CyAt/m C$llJ L?nh sysc3ll lm tre5 s= th=c thi cE3 ch-.ng trnh v chuy>n quyFn /iFu khi>n ch5 11 *bUng c#ch gOi c#c hm cE3 ein%5Ws AaN+@ "0ng c#c system c3ll LE(h h+, ()K ()hL$ HOm t!9( CUU push ;jj "\t /<u ch-.ng trnh xu4t@ hfile detTt%13n%le*;jj+[ c3ll XdetTt%13n%lebc m5v k5utputXh3n%lel$ e3x push ;jh "\t /<u ch-.ng trnh nhp@ hfile detTt%13n%le*;jh+[ c3ll XdetTt%13n%lebc m5v kinputXh3n%lel$ e3x push h Ah5#t ch-.ng trnh@ return h[ c3ll X`xitar5cessbc push h u4t@ eritefile*hfile$ 5utputXstring$ push %W5r% bytesXWritten length$ bytesXWritten$ h+[ push length bytesXWrittenZ kHch th-c cE3 push %W5r% 5utputXstring chu)i xu4t r3@ push %W5r% lengthZ chiFu %i cE3 chu)i k5utputXh3n%lel 5utputXstringZ /&3 ch| cE3 c3ll Xeritefilebgh chu)i xu4t r3 5utputXh3n%leZ l6i gOi hm /n detTt%13n%le push h Vhp@ Ye3%file*hfile$ inputXstring$ push %W5r% bytesXre3% length$ bytesXre3%+ push length bytesXre3%Z kHch th-c cE3 push %W5r% inputXstring chu)i xu4t nhp v5@ push %W5r% kinputXh3n%le lengthZ chiFu %i cE3 chu)i l inputXstringZ /&3 ch| cE3 chu)i c3ll XYe3%filebgh nhp v5 5utputXh3n%leZ l6i gOi hm /n detTt%13n%le
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;!;
B mn MMTVT - HCMU
<hanh ghi =S> ?ng vai tr@ l c!n trA ngn xp ($tack p!int r)+ luBn chC n Cnh cDa $tack1 Stack phEt triFn th ! chi5u giG4 cDa Ha chC vng nh (Cnh cDa $tack luBn c? Ha chC th0p)1 Iai tha! tEc c" bGn tr!ng $tack l pu$h (a 49t ph6n t7 v! $tack) v p!p (l0y 49t ph6n t7 ra khAi $tack)1 pu$hJ giG4 =S> i ;+ lu giE trH v! B nh 4 =S> chC n1 p!pJ c!py giE trH tr!ng vng nh c chC n bKi =S>+ c9ng ; v! =S>1 LM&&J pu$h Ha chC lnh phQa $au LM&& v! $tack v nhGy n ch"ng trPnh c!n1 N=<J p!p Ha chC t: $tack ra v Ru4p n Ha chC ?1
SQ -TJ !Un ch"ng trPnh xu0t chu8i ngc+ chu8i nhp v! l #I ll!%
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;;
HDTH Kin trc my tnh & Hp Ng <rUng thEi b9 nh khi v! thD tTc (il Vrit J
B mn MMTVT - HCMU
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
; ;
B mn MMTVT - HCMU
WO5 tX,
17y vit ch-.ng trnh h2p ng VATn trn ein%5W *khng %^ng l?nh gi0+ /> gi0i quyt c#c bi t5#n s3uZ j@ Vhp v5 m,t chu)i$ xu4t l'i chu)i /K r3 mn hnh *ech5+@ IH %9Z Vh3p m5t chu5iZ 1ell5 Phu5i %3 nh3pZ 1ell5 g@ Vhp v5 m,t kJ t=$ xu4t r3 kJ t= liFn tr-c v liFn s3u@ IH %9Z Vh3p m5t ky tuZ b oy tu lien tru5cZ 3 oy tu lien s3uZ c m@ Vhp v5 m,t kJ t= h53$ in r3 kJ t= th-6ng@ IH %9Z Vh3p m5t ky tuZ A oy tu thu5ngZ 3 c@ Vhp t: bn phHm g sD nguyn$ tHnh t]ng$ hi?u$ tHch$ th-.ng cE3 g sD@ IH %9Z Vh3p s5 thu nh3tZ Vh3p s5 thu h3iZ c A5ngZ jj 1ieuZ m AichZ g Ahu5ngZ j %u m s@ Vhp v5 g sD nguyn$ xu4t r3 phxp s5 s#nh gi3 g sD@ IH %9Z Vh3p s5 thu nh3tZ ! Vh3p s5 thu h3iZ T5 l5n h5n l3Z Vhp m,t kJ t= t: bn phHm@ Vu kJ t= v:3 nhp thu,c kh;l$ k3;rl$ kA;}l th xu4t r3 mn hnh kJ t= /K v l5'i cE3 kJ t= /K *sD$ ch th-6ng$ ch h53+@ IH %9Z Vhp v5 m,t kJ t=Z s oJ t= v:3 nhpZ s l sD Vhp v5 m,t kJ t= Z q oJ t= v:3 nhp Z q l ch th-6ng Vhp v5 m,t kJ t= Z R oJ t= v:3 nhp Z R l ch h53 B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM ;;
!@
B mn MMTVT - HCMU
Vhp m,t m0ng c#c sD nguyn n ph<n t8$ xu4t m0ng /K r3 mn hnh@ IH %9Z Vh3p m3ng c3c s5 nguyenZ j g m c s n3ng vu3 nh3pZ j g m c s
Vhp v5 m,t sD nguyn n$ tHnh t]ng t: j /n n@ IH %9Z Vh3p m5t s5Z c A5ng tu j %en c l3Z jh Vhp v5 m,t chu)i$ xu4t r3 chu)i ng-2c@ IH %9Z Vh3p v35 m5t chu5iZ hell5 Phu5i ngu5c l3Z 5lleh
B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM
;jh;