You are on page 1of 10

HDTH Kin trc my tnh & Hp Ng

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

V d Ph-.ng trnh s3u in r3 mn hnh %Bng ch .H/ll0 10!l23


gl5b3l extern extern extern secti5n hell5XW5rl% bytesXWritten 5utputXh3n%le Xm3inPYATt3rtup X`xitar5cessbc XdetTt%13n%lebc Xeritefilebgh @%3t3 %b %% %% i1ell5 e5rl%i$ jh$ h h h ! Khai bo chu6i h7llo8-o(ld ! 9(: ;< chu6i -o(d =>?bit t@ ,(it7Ail7 ! 9h7 .tanda(d outBut handl7 ! "#$ chnh c%a ch&'ng t()nh ! *+i h#$ thot c%a ,indo-. /01 ! *+i h#$ 23 l4 c%a ,indo-. /01 ! *+i h#$ 2u5t c%a ,indo-. /01

secti5n @c5%e Xm3inPYATt3rtupZ push c3ll m5v push push push push push c3ll

;jj XdetTt%13n%lebc k5utputXh3n%lel$ e3x

! CD thc hin 2u5t ! *+i "#$ *7tEtd"andl7 c%a ,indo-. /01 ! F&u handl7 2u5t $#n h)nh

h %W5r% bytesXWritten jm %W5r% hell5XW5rl% %W5r% k5utputXh3n%lel Xeritefilebgh

! 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;

HDTH Kin trc my tnh & Hp Ng


push c3ll h X`xitar5cessbc

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@

4h$5 670 65( t!0() h+, ()P ph#p tr5ng @%3t3Z


8t9( 65(: 2845;u <L: 8)57 t!= >h?5 t@0:

P ph#p tr5ng @bssZ


8t9( 65(: !/A845;u <L: 8)57 t!= >h?5 t@0:

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

oh3i b#5 tr5ng @bss


qilen3me number bignum re3l3rr3y

C7c th$(h )h5 t!0() NBCM


R li?u cE3 th3nh ghiZ j!;bit cE3 th3nh ghi 3h 3x 3l ;bit j!;bit mg;bit mt r,ng P#c th3nh ghiZ e3x eb x ecx e% x esp eb p e%i esi 3h bh ch %h 3x bx cx %x sp bp %i si 3l bl bl %l Accumul3t5r "3se Nn%ex P5unt R3t3 Tt3ck a5inter "3se a5inter Restin3ti5n Nn%ex T5urce Nn%ex ;g;

B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM

HDTH Kin trc my tnh & Hp Ng

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

M%t AD lE(h NBCM c' 6F(


LE(h Nhm lE(h AD hHc
inc %ec %estin3ti5n %estin3ti5n d7.tination R d7.tination S .ou(c7

Gh5 ch"

3%% %estin3ti5n$ s5urce

sub %estin3ti5n$ s5urce imulwi%iv mulw%iv

d7.tination R d7.tination Y .ou(c7

VhMnwPhi3 cK %4u cE3 sD nguyn@

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

VhKm l?nh l5gic


3n% 5r x5r test

_`

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

n5t neg shiqt

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;

VhKm l?nh %&ch chuy>n m5v

B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM

HDTH Kin trc my tnh & Hp Ng

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;

HDTH Kin trc my tnh & Hp Ng

B mn MMTVT - HCMU

Nhm lE(h (hFyJ


LE(h (hFy ? c7c cI '( LE(h 45;m t!$ cI MJ _r _e _nr _ne _ecxr 45;m t!$ cI (hNJ _c _nc 45;m t!$ t!O(J _5 _n5 45;m t!$ 2 uJ _s _ns 45;m t!$ ,$!5tyPt(h chQ(RJ _p _pe _np _p5 NhFy >h5 A0 A7(h S AD >hT() 2 u LE(h _e _r _ne _nr _3 _nbe _3e _nb _b _n3e K ()hL$ _ump iq rer5 _ump iq equ3l _ump iq n5t rer5 _ump iq n5t equ3l _ump iq `P h _ump iq c3rry _ump iq n5 c3rry _ump iq 5verql5W _ump iq n5 5verql5W _ump iq *neg3tive+ sign _ump iq n5 *neg3tive+ sign _ump iq p3rity _ump iq p3rity is even _ump iq n5t p3rity _ump iq p3rity is 5%% K ()hL$ _ump iq equ3l _ump iq rer5 _ump iq n5t equ3l _ump iq n5t rer5 _ump iq 3b5ve _ump iq n5t bel5W 5r equ3l _ump iq 3b5ve 5r equ3l _ump iq n5t bel5W _ump iq bel5W _ump iq n5t 3b5ve 5r equ3l

B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM

;s;

HDTH Kin trc my tnh & Hp Ng


_be _n3 NhFy >h5 A0 A7(h S AD c 2 u LE(h _e _r _ne _nr _g _nle _ge _nl _l _nge _le _ng _ump iq bel5W 5r equ3l _ump iq n5t 3b5ve K ()hL$ _ump iq equ3l _ump iq rer5 _ump iq n5t equ3l _ump iq n5t rer5 _ump iq gre3ter _ump iq n5t less 5r equ3l _ump iq gre3ter 5r equ3l _ump iq n5t less _ump iq less _ump iq n5t gre3ter 5r equ3l _ump iq less 5r equ3l _ump iq n5t gre3ter

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

;!;

HDTH Kin trc my tnh & Hp Ng

B mn MMTVT - HCMU

Ct$c> VO GH5 hOm


Stack (ngn xp) l vng nh c bit c truy cp th ! c" ch #v! trc ra $au% (&'() * &a$t 'n (ir$t )ut)+ ngh,a l -. liu n! a v! $au $/ c l0y ra trc1 2gn xp g34 nhi5u ph6n t7+ 48i ph6n t7 l 49t t: (; byt )1

<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

&nh LM&& v N=< tr!ng vic gOi ch"ng trPnh c!n

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

<rc khi thWc hin call XVrit (il YZ[

Sau khi thWc hin call XVrit (il YZ[

B mn M!ng my tnh & Vi"n thng # Kh$% CNTT # Tr&'ng (H KHTN T)HCM

; ;

HDTH Kin trc my tnh & Hp Ng

B mn MMTVT - HCMU

TO5 l5Eu th$m >hF0


kjl@ httpZwwWWW@n3sm@usw%5cwn3sm%5ch@html Ahe VetWi%e AssemblerZ VATn@

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 ;;

!@

HDTH Kin trc my tnh & Hp Ng @

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;

You might also like