You are on page 1of 10

Bi ging Vi iu khin Bin son: Ths L Hong Anh

CHNG III : LP TRNH HP NG V TM TT TP LNH I. LP TRNH HP NG : Hp ng ( assembly language ) l ngn ng ca my tnh c v tr gia ngn ng my v ngn ng cp cao.Cc ngn ng cp cao nh Pascal,C s dng cc t v cc pht biu d hiu hn. Ngn ng my ( machine language ) l ngn ng dng s nh phn ca my tnh. Mt chng trnh vit bng ngn ng my l mt chui cc byte nh phn biu din cc lnh m my tnh thc thi c. Hp ng thay th cc m nh phn ca ngn ng my bng cc m gi nh gip ta d nh v d lp trnh hn. Ex : lnh cng c m nh phn l 10110011 c hp ng thay th bng m gi nh ADD Mt chng trnh vit bng hp ng khng th c thc thi trc tip .Sau khi c vit xong chng trnh ny phi c dch thnh ngn ng my. Mt chng trnh vit bng hp ng l chng trnh vit di dng cc k hiu, cc m gi nh trong mi pht biu tng ng vi mt lnh ca ngn ng my. Mi dng lnh c chia thnh cc trng cch bit nhau bi khong trng hoc Tab. Khun dng tng qut ca mi dng lnh nh sau: [ label : ] mnemonic [ operand ][,operand ][, ] [;comment] Label: nhn Mnemonic : m gi nh Operand : ton hng Comment : ch thch a. Trng nhn : Nhn l mt loi k hiu v c nhn dng bng du : ( kt thc nhn). Nhn phi c bt u bng mt k t ch, du hi ?,du ni di _ v tip theo phi l cc k t ch,cc s, du ?,du _. Nhn c th di ti a l 31 k t dng ch thng hoc ch in. Nhn khng c trng vi cc t kha ( cc m gi nh, cc ch dn, cc ton t hoc cc k hiu tin nh ngha ). b. Trng m gi nh : M gi nh l cc k hiu biu din cho cc lnh . Trng m gi nh ca lnh theo sau trng nhn . Ex : MOV,ANL,SETB .

Trang 16

Bi ging Vi iu khin Bin son: Ths L Hong Anh

c. Trng ton hng : Trng ton hng theo sau trng m gi nh. Trng ny cha a ch hoc d liu m lnh s s dng. Mt nhn c th c dng biu th a ch ca d liu .Cc kh nng ca trng ton hng ph thuc vo thao tc. C thao tc khng c ton hng (ex: lnh RET,NOP..) trong khi cc thao tc khc cho php nhiu ton hng cch nhau bi du phy. d. Trng ch thch : Cc ghi ch dng lm r chng trnh c t trong trng ch thch cui dng lnh. Cc ch thch c bt u bng du ; . Cc ch thch c th chim nhiu dng ring v cng phi bt u bng du ; . Cc chng trnh con v cc phn c kch thc ln ca chng trnh thng bt u bi mt khi ch thch bao gm nhiu dng ch thch gii thch cc t trng ca chng trnh. II. TM TT TP LNH : Cng nh cc b vi x l 8 bit cc lnh ca 8051 c cc opcode 8 bit , do vy s lnh c th ln n 256 lnh ( thc t c 255 lnh ,1 lnh khng c nh ngha ). Ngoi opcode mt s lnh cn c thm 1 hoc 2 byte na cho d liu hoc a ch . Tp lnh c 139 lnh 1 byte , 92 lnh 2 byte v 24 lnh 3 byte . 1. CC KIU NH A CH : Cc kiu nh a ch l phn cn thit cho ton b tp lnh ca mi mt b vi x l , b vi iu khin . Cc kiu nh a ch cho php ta xc nh r ngun v ch ca d liu theo nhiu cch khc nhau ph thuc vo tnh hung lp trnh ,c 8 kiu nh a ch : Thanh ghi ( register ) Trc tip (direct ) Gin tip ( indirect ) Tc thi ( immediate ) Tng i ( relative ) Tuyt i ( absolute ) Di ( long ) Ch s ( index ) 1.1. NH A CH THANH GHI : Kiu nh a ch thanh ghi c k hiu l Rn, trong n c gi tr t 0-7, A, DPTR, PC, C v cp thanh ghi AB. Ex : ADD A,R7

Trang 17

Bi ging Vi iu khin Bin son: Ths L Hong Anh

C 4 dy thanh ghi nhng mt thi im ch c mt dy tch cc. Cc dy thanh ghi chim 32 byte u tin ca RAM d liu trn chip ( 00H-1FH ). chn dy thanh ghi tch cc ta tc ng ln cc bit RS1,RS0 ca t trng thi chng trnh PSW. Khi h thng c reset th dy thanh ghi 0 mc nh c tch cc. 1.2. NH A CH TRC TIP : Kiu nh a ch trc tip c s dng truy xut cc bin nh hoc cc thanh ghi trn chip. Ex : MOV A,55H MOV P1,A ( P1 c a ch 90H ) 1.3. NH A CH GIN TIP : Kiu nh a ch gin tip c nhn bit nh vo k t @ t trc R0 hoc R1. Cc thanh ghi R0 v R1 c th hot ng nh l cc con tr v ni dung ca chng ch ra a ch trong RAM ni m d liu c c hay ghi.Ta cn n kiu nh a ch gin tip khi ta duyt cc v tr lin tip trong b nh. Ex : Thc hin vic xa tun t RAM ni t a ch 60H-7FH MOV R0,#60H LOOP: MOV @R0,#0 INC R0 CJNE R0,#80H,LOOP ( tip tc ) 1.4. NH A CH TC THI : Khi ton hng ngun l mt hng s thay v l mt bin ,hng s ny c th a vo lnh v y l byte d liu tc thi. Cc ton hng tc thi c nhn bit nh vo k t # t trc chng. Ton hng ny c th l mt hng s hc,mt bin hoc mt biu thc s hc s dng cc hng s . Ex : MOV A,#12 MOV DPTR,#8000H 1.5. NH A CH TNG I : Kiu nh a ch tng i ch c s dng cho cc lnh nhy .Mt a ch tng i( cn c gi l offset ) l mt gi tr 8 bit c du .Gi tr ny c cng vi b m chng trnh to ra a ch ca lnh tip theo cn c thc thi. Ex : SJMP THERE DJNE CJNE
Trang 18

Bi ging Vi iu khin Bin son: Ths L Hong Anh

nh a ch tng i c im li l cung cp cho chng ta m khng ph thuc vo v tr , nhng li c im bt li l cc ch nhy b gii hn trong tm -128 byte n 127 byte. 1.6. NH A CH TUYT I : Kiu nh a ch tuyt i ch c s dng vi cc lnh ACALL v AJMP. y l cc lnh 2 byte cho php r nhnh chng trnh trong trang 2K hin hnh ca b nh chng trnh . khng b gii hn ta c th s dng lnh LCALL, LJMP. Ex : LOOP: LCALL GIAI_MA LJMP LOOP 1.7. NH A CH DI : Kiu nh a ch di ch c dng cho cc lnh LCALL v LJMP cc lnh 3 byte ny cha a ch ch 16 bit . Li ch ca lnh ny l s dng ht ton b khng gian nh chng trnh 64K, nhng li c im bt li l lnh di n 3 byte. 1.8. NH A CH CH S : Kiu nh a ch ch s s dng mt thanh ghi nn ( hoc b m chng trnh hoc con tr d liu ) v mt offset ( thanh cha A ) to thnh dng a ch hiu dng cho lnh JMP hoc lnh MOVC. Ex: MOVC A,@A+<base reg> JMP @A+DPTR 2. CC LOI LNH : Cc lnh ca 8051 c chia lm 5 nhm: Nhm lnh s hc Nhm lnh logic Nhm lnh di chuyn d liu Nhm lnh x l bit Nhm lnh r nhnh Ghi ch : Rn direct @Ri source destination #data

: a ch thanh ghi R0-R7 : a ch 8 bit trong RAM ni ( 00H-0FH ) : a ch gin tip s dng thanh ghi R0 hoc R1 : ton hng ngun - c th l Rn,direct hoc @Ri : ton hng ch c th l Rn,direct hoc @Ri : hng s 8 bit ( Binary,Decimal,Hexa)

Trang 19

Bi ging Vi iu khin Bin son: Ths L Hong Anh

#data 16 bit rel addr11 addr16

: hng s 16 bit : a ch trc tip ca mt bit : a ch tng i ( offset ) 8 bit ex : nhn : a ch 11 bit trong trang hin hnh : a ch 16 bit

2.1. CC LNH S HC : ADD A,source : cng ton hng ngun vi A ADD A,#data ADDC A,source : cng ton hng ngun vi A v c nh ADDC A,#data SUBB A,source : tr bt A bi ton hng ngun v s mn ( c nh ) SUBB A,#data INC A : tng thanh ghi A mt n v INC source DEC A : gim thanh ghi A mt n v INC DPTR : tng thanh ghi DPTR mt n v MUL AB : nhn A vi B DIV AB : chia A bi B ( A cha thng s,B cha s d ) DA A : hiu chnh thp phn thanh ghi A 2.2. CC LNH LOGIC : ANL A,source : AND ANL A,#data ANL direct,A ANL direct,#data ORL A,source : OR ORL A,#data ORL direct,A ORL direct,#data XRL A,source : XOR XRL A,#data XRL direct,A XRL direct,#data CLR A : xa thanh ghi A CPL A : ly b A RL A : quay tri A (MSB=>LSB) RLC A : quay tri A vi c C RR A : quay phi A ( LSB=>MSB)
Trang 20

Bi ging Vi iu khin Bin son: Ths L Hong Anh

RRC A SWAP A

: quay phi A vi c C : hon i hai nibble ( hai na 4 bit )

2.3. CC LNH DI CHUYN D LIU : MOV A,source : di chuyn ton hng ngun n ton hng ch MOV A,#data MOV dest,A MOV dest,source MOV dest,#data MOV DPTR,#data16 MOVC A,@A+DPTR : di chuyn t b nh chng trnh MOVC A,@A+PC MOVX A,@Ri : di chuyn t b nh d liu MOVX A,@DPTR MOVX @Ri,A MOVX @DPTR,A PUSH direct : ct vo stack POP direct : ly ra t stack XCH A,source : trao i cc byte XCHD A,@Ri : trao i cc digit thp 2.4. CC LNH THAO TC TRN BIT : CLR C : xa bit CLR bit : set bit bng 1 SETB C SETB bit CPL C : ly b bit CPL bit ANL C,bit : AND bit vi C ANL C,/bit : AND NOT bit vi C ORL C,bit : OR bit vi C ORL C,/bit : OR NOT bit vi C MOV C,bit : di chuyn bit n bit MOV bit,C JC rel : nhy nu C bng 1 JNC rel : nhy nu C bng 0 JB bit,rel : nhy nu bit bng 1 JNB bit,rel : nhy nu bit bng 0 JBC bit,rel : nhy nu bit bng 1 ri xa bit
Trang 21

Bi ging Vi iu khin Bin son: Ths L Hong Anh

2.5. CC LNH R NHNH : ACALL addr11 : gi chng trnh con LCALL addr16 RET : quay v t chng trnh con RETI : quay v t trnh phc v ngt AJMP addr11 : nhy LJMP addr16 SJMP rel JMP @A+DPTR JZ rel : nhy nu A bng 0 JNZ rel : nhy nu A khc 0 CJNE A,direct,rel : so snh v nhy CJNE A,#data,rel CJNE Rn,#data,rel DJNZ Rn,rel : gim v nhy nu khc khng DJNZ direct,rel NOP : khng lm g III. CU TRC CHNG TRNH : 1. T CHC CHNG TRNH : Cc phn ca chng trnh c sp xp theo trnh t sau : Cc php gn Cc lnh khi ng ( thit lp timer, ngt , np cc gi tr ban u ) Thn chnh ca chng trnh Cc chng trnh con Cc nh ngha hng d liu ( DB v DW ) Gn : Vic nh ngha cc hng s bng pht biu gn lm cho chng trnh d c v bo tr hn. Cc hng s c dng trong sut chng trnh bng cch thay th cc gi tr bng cc k hiu c gn. Khi chng trnh c dch th cc gi tr tng ng c thay th cho cc k hiu. Chng trnh con : Khi cc chng trnh tr nn ln, ta phi chia nh cc thao tc ln v phc tp thnh cc thao nh v n gin. Cc thao tc nh v n gin ny c lp trnh thnh cc chng trnh con. Cc chng trnh con c bt u bng mt nhn v kt thc bng lnh RET hoc RETI.

Trang 22

Bi ging Vi iu khin Bin son: Ths L Hong Anh

Cc ch dn : Cc ch dn l cc lnh i vi trnh dch hp ng. ORG : ch dn ORG dng thit lp mt gc mi ca chng trnh cho cc pht biu theo sau. Ex : ORG 0000H ORG 0030H END : l ch dn thng bo cho trnh dch hp ng bit kt thc chng trnh ngun. END l pht biu cui cng ca chng trnh. EQU ( equate ) : ch dn EQU gn gi tr s cho tn ca k hiu c nh ngha. Ex : N27 EQU 27 HERE EQU $ DATA EQU 50H BIT : ch dn BIT gn gi tr bit vo tn ca k hiu. Ex : MOTOR BIT P0.0 DB : ch dn DB dng gn mt hng s vo b nh chng trnh, cc biu thc theo sau c th l mt chui ca mt hay nhiu gi tr byte. Ch dn DB cho php chui k t (t trong hai du nhy n ) di hn hai k t, mi k t trong chui c bin i thnh m ASCII . Nu c mt nhn c nhn c dng, nhn c gn a ch ca byte u tin. Ex : SQUARES: DB 0,1,4,9,16,25 MESSAGE: LAC HONG UNIVERSITY ,0 ; chui k t k thc bi 0 2. LU THUT GII : Lu thut gii l cc cng c thng dng cho cc giai on khi u ca lp trnh hp ng. Lu thut gii l cng c trc quan gip ta d dng trnh by v hiu chng trnh hp ng mt cch h thng. Lu thut gii cho php mt yu cu c m t di dng iu g phi c thc hin hn l thc hin iu bng cch no. Cc k hiu thng dng nht cho vic lp lu bao gm :

Trang 23

Bi ging Vi iu khin Bin son: Ths L Hong Anh

: khi quyt nh ,khi ny thng t ra cc cu hi cho cc cu tr li c ( Yes ) hay khng ( No ).

: mi tn ch ng i ca chng trnh

: khi x l

: khi xut/nhp

: im bt u hoc kt thc chng trnh

: chng trnh con

: kt ni qua trang

Trang 24

Bi ging Vi iu khin Bin son: Ths L Hong Anh

Ex : Hy vit mt chng trnh xa cc thanh ghi trong RAM ni t a ch 50H-60H.


Begin

Xa d liu

60H = 0 ?

No Yes END

Chng trnh : MOV R0,#50H MOV A,#0 LOOP: MOV @R0,A INC R0 CJNE R0,#61H,LOOP END Ex : Hy vit chng trnh kim tra mt nt nhn S lin tc , nu nt nhn c tc ng th cho php n D sng v kt thc chng trnh. Ex : Hy vit chng trnh cho mt kha mt m gm 8 cng tc c kt ni vo port 0, chng trnh s kim tra nu m nhp vo ging vi m mc nh (00001111) th cho php m kha K v kt thc chng trnh, kha K c kt ni vo chn P1.0 ( quy c 0: kha , 1: m kha ) .

Trang 25

You might also like