Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 15

chng 2 Lp trnh hp ng 8051

Trong phn ny chng ta nghin cu cc thanh ghi chnh ca 8051 v trnh by cch s dng vi cc lnh n gin MOV v ADD.
2.1.1 Cc thanh ghi.

2.1 Bn trong 8051.

Trong CPU cc thanh ghi c dng lu ct thng tin tm thi, nhng thng tin ny c th l mt byte d liu cn c s l hoc l mt a ch n d liu cn c np. Phn ln cc thanh ghi ca 8051 l cc thanh ghi 8 bit. Trong 8051 ch c mt kiu d liu: Loi 8 bit, 8 bit ca mt thanh ghi c trnh by nh sau:
D7 D6 D5 D4 D3 D2 D1 D0

vi MSB l bit c gi tr cao nht D7 cho n LSB l bit c gi tr thp nht D0. (MSB - Most Sigfican bit v LSB - Leart Significant Bit). Vi mt kiu d liu 8 bit th bt k d liu no ln hn 8 bit u phi c chia thnh cc khc 8 bit trc khi c x l. V c mt s lng ln cc thanh ghi trong 8051 ta s tp trung vo mt s thanh ghi cng dng chung c bit trong cc chng k tip. Hy tham kho ph lc Appendix A.3 bit y v cc thanh ghi ca 8051. Hnh 2.1: a) Mt s thanh ghi 8 bit ca 8051 b) Mt s thanh ghi 16 bit ca 8051 Cc thanh ghi c s dng rng ri nht ca 8051 l A (thanh ghi tch lu), B, R0 - R7, DPTR (con tr d liu) v PC (b m chng trnh). Tt c cc d liu trn u l thanh g hi 8 bit tr DPTR v PC l 16 bit. Thanh ghi tch lu A c s dng cho tt c mi php ton s hc v l-gc. hiu s dng cc thanh ghi ny ta s gii thiu chng trong cc v d vi cc lnh n gin l ADD v MOV.
2.1.2 Lnh chuyn MOV.

Ni mt cch n gin, lnh MOV sao chp d liu t mt v tr ny n mt v tr khc. N c c php nh sau:
A B R0 R1 R2 R3 R4 R5 R6 R7 DPTR PC DPH DPL

PC (program counter)

MOV ; ch, ngun; sao chp ngun vo ch Lnh ny ni CPU chuyn (trong thc t l sao chp) ton hng ngun vo ton hng ch. V d lnh MOV A, R0 sao chp ni dung thanh ghi R0 vo thanh ghi A. Sau khi lnh ny c thc hin th thanh ghi A s c gi tr ging nh thanh ghi R0. Lnh MOV khng tc ng ton hng ngun. on chng trnh di y u tin l np thanh ghi A ti gi tr 55H 9l gi tr 55 dng s Hex) v sau chuyn gi tr ny qua cc thanh ghi khc nhau bn trong CPU. Lu rng du # trong lnh bo rng l mt gi tr. Tm quan trng ca n s c trnh by ngay sau v d ny. MOV A, #55H; ; Np tr tr 55H vo thanh ghi A (A = 55H) MOV R0, A ; Sao chp ni dung A vo R0 (by gi R0=A) MOV R1, A ; Sao chp ni dung A v R1 (by gi R1=R0=A) MOV R2, A ; Sao chp ni dung A v R2 (by gi R2=R1=R0=A)

MOV R3, #95H MOV A, R3

; Np gi tr 95H vo thanh ghi R3 (R3 = 95H) ; So chp ni dung R3 vo A (by gi A = 95H)

Khi lp trnh b vi iu khin 8051 cn lu cc im sau: MOV MOV MOV MOV MOV MOV MOV MOV A, #23H R0, #12H R1, #1FH R2, #2BH B, # 3CH R7, #9DH R5, #0F9H R6, #12

1. Cc gi tr c th c np vo trc tip bt k thanh ghi no A, B, R0 - R7. Tuy nhin, thng bo l gi tr tc thi th phi t trc n mt k hiu # nh ch ra di y.

; Np gi tr 23H vo A (A = 23H) ; Np gi tr 12H vo R0 (R0 = 2BH) ; Np gi tr 1FH vo R1 (R1 = 1FH) ; Np gi tr 2BH vo R2 (R2 = 2BH) ; Np gi tr 3CH vo B (B = 3CH) ; Np gi tr 9DH vo R7 (R7 = 9DH) ; Np gi tr F9H vo R5 (R5 = F9H) ;Np gi tr thp phn 12 = 0CH vo R6 (trong R6 c gi tr 0CH).

trong lnh MOV R5, #0F9H th phi c s 0 ng trc F v sau du # bo rng F l mt s Hex ch khng phi l mt k t. Hay ni cch khc MOV R5, #F9H s gy ra li.
2. Nu cc gi tr 0 n F c chuyn vo mt thanh ghi 8 bit th cc bit cn li c coi l tt c cc s 0. V d, trong lnh MOV A,#5 kt qu l A=0.5, l A = 0000 0101 dng nh phn. 3. Vic chuyn mt gi tr ln hn kh nng cha ca thanh ghi s gy ra li v d:

MOV A, #7F2H MOV R2, 456

; Khng hp l v 7F2H > FFH ; Khng hp l v 456 > 255 (FFH)

2.1.3 Lnh cng ADD.

4. np mt gi tr vo mt thanh ghi th phi gn du # trc gi tr . Nu khng c du th n hiu rng np t mt v tr nh. V d MOV A, 17H c ngha l np gi tr trong ngn nh c gi tr 17H vo thanh ghi A v ti a ch d liu c th c bt k gi tr no t 0 n FFH. Cn np gi tr l 17H vo thanh ghi A th cn phi c du # trc 17H nh th ny. MOV A, #17H. Cn lu rng nu thiu du # trc mt th s khng gy li v hp ng cho l mt lnh hp l. Tuy nhin, kt qu s khng ng nh mun ca ngi lp trnh. y s l mt li thng hay gp i vi lp trnh vin mi.

Lnh cng ADD c cc php nh sau: ADD a, ngun ; Cng ton hng ngun vo thanh ghi A. Lnh cng ADD ni CPU cng byte ngun vo thanh ghi A v t kt qu thanh ghi A. cng hai s nh 25H v 34H th mi s c th chuyn n mt thanh ghi v sau cng li vi nhau nh: MOV A, #25H ; Np gi tr 25H vo A MOV R2, #34H ; Np gi tr 34H vo R2 ADD A, R2 ; Cng R2 vo A v kt qu A = A + R2 Thc hin chng trnh trn ta c A = 59H (v 25H + 34H = 59H) v R2 = 34H, ch l ni dng R2 khng thay i. Chng trnh trn c th vit theo nhiu cch ph thuc vo thanh ghi c s dng. Mt trong cch vit khc c th l: MOV R5, #25H ; Np gi tr 25H vo thanh ghi R5 MOV R7, #34H ; Np gi tr 34H vo thanh ghi R7 MOV A, #0 ; Xo thanh ghi A (A = 0) ADD A, R5 ; Cng ni dung R5 vo A (A = A + R5) ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7 = 25H + 34H) Chng trnh trn c kt qu trong A L 59H, c rt nhiu cch vit chng trnh ging nh vy. Mt cu hi c th t ra sau khi xem on chng trnh trn l liu c cn chuyn c hai d liu vo cc thanh ghi trc khi cng chng vi nhau khng? Cu tr li l khng cn. Hy xem on chng trnh di y: MOV A, #25H ; Np gi tr th nht vo thanh ghi A (A = 25H) ADD A, #34H ; Cng gi tr th hai l 34H vo A (A = 59H)

Trong trng hp trn y, khi thanh ghi A cha s th nht th gi tr th hai i theo mt ton hng. y c gi l ton hng tc thi (trc tip). Cc v d trc cho n gi th lnh ADD bo rng ton hng ngun c th hoc l mt thanh ghi hoc l mt d liu trc tip (tc thi) nhng thanh ghi ch lun l thanh ghi A, thanh ghi tch lu. Hay ni cch khc l mt lnh nh ADD R2, #12H l lnh khng hp l v mi php ton s hc phi cn n thanh ghi A v lnh ADD R4, A cng khng hp l v A lun l thanh ghi ch cho mi php s hc. Ni mt cch n gin l trong 8051 th mi php ton s hc u cn n thanh A vi vai tr l ton hng ch. Phn trnh by trn y gii thch l do v sao thanh ghi A nh l thanh thi tch lu. C php cc lnh hp ng m t cch s dng chng v lit k cc kiu ton hng hp l c cho trong ph lc Appendix A.1. C hai thanh ghi 16 bit trong 8051 l b m chng trnh PC v con tr d liu APTR. Tm quan trng v cch s dng chng c trnh by mc 2.3. Thanh ghi DPTR c s dng truy cp d liu v c lm k chng 5 khi ni v cc ch nh a ch. Trong phn ny chng ta bn v dng thc ca hp ng v nh ngha mt s thut ng s dng rng ri gn lin vi lp trnh hp ng. CPU ch c th lm vic vi cc s nh phn v c th chy vi tc rt cao. Tuy nhin, tht l ngn ngm v chm chp i vi con ngi phi lm vic vi cc s 0 v 1 lp trnh cho my tnh. Mt chng trnh cha cc s 0 v 1 c gi l ngn ng my. Trong nhng ngy u ca my tnh, cc lp trnh vin phi vit m chng trnh di dng ngn ng my. Mc d h thng thp lc phn (s Hex) c s dng nh mt cch hiu qu hn biu din cc s nh phn th qu trnh lm vic vi m my vn cn l cng vic cng knh i vi con ngi. Cui cng, cc ngun ng hp ng c pht, cung cp cc t gi nh cho cc lnh m my cng vi nhng c tnh khc gip cho vic lp trnh nhanh hn v t mc li hn. Thut ng t gi nh (mnemonic) thng xuyn s dng trong ti liu khoa hc v k thut my tnh tham chiu cho cc m v t rt gn tng i d nh, cc chng trnh hp ng phi c dch ra thanh m my bng mt chng trnh c l trnh hp ng (hp dch). Hp ng c coi nh l mt ngn ng bc thp v n giao tip trc tip vi cu trc bn trong ca CPU. lp trnh trong hp ng, lp trnh vin phi bit tt c cc thanh ghi ca CPU v kch thc ca chng cng nh cc chi tit khc. Ngy nay, ta c th s dng nhiu ngn ng lp trnh khc nhau, chng hn nh Basic, Pascal, C, C++, Java v v s ngn ng khc. Cc ngn ng ny c coi l nhng ngn ng bc cao v lp trnh vin khng cn phi tng tc vi cc chi tit bn trong ca CPU. Mt trnh hp dch c dng dch chng trnh hp ng ra m my cn (cn i khi cng cn c gi m i tng (Object Code) hay m lnh Opcode), cn cc ngn ng bc cao c dch thnh cc ngn ng m my bng mt chng trnh gi l trnh bin dch. V d, vit mt chng trnh trong C ta phi s dng mt trnh bin dch C dch chng trnh v dng m my. By gi ta xt dng thc hp ng ca 8051 v s dng trnh hp dch to ra mt chng trnh sn sng chy ngay c.
2.2.1 Cu trc ca hp ng.

2.2Gii thiu v lp trnh hp ng 8051.

Mt chng trnh hp ng bao gm mt chui cc dng lnh hp ng. Mt lnh hp ng c cha mt t gi nh (mnemonic) v tuy theo tng lnh v sau n c mt hoc hai ton hng. Cc ton hng l cc d liu cn c thao tc v cc t gi nh l cc lnh i vi CPU ni n lm g vi cc d liu. ORG 0H ; Bt u (origin) ti ngn nh 0 MOV R5, #25H ; Np 25H vo R5 MOV R7, #34H ; Np 34H vo R7 MOV A, #0 ; Np 0 vo thanh ghi A ADD A, R5 ; Cng ni dng R5 vo A (A = A + R5) ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7) ADD A, #121H ; Cng gi tr 12H vo A (A = A + 12H) HERE: SJMP HERE ; li trong vng lp ny END ; Kt thc tp ngun hp ng Chng trnh 2.1: V d mu v mt chng trnh hp ng. Chng trnh 2.1 cho trn y l mt chui cc cu lnh hoc cc dng lnh c vit hoc bng cc lnh hp ng nh ADD v MOV hoc bng cc cu lnh c gi l cc ch dn. Trong khi cc lnh hp ng th ni CPU phi lm g th cc ch lnh (hay cn gi l gi lnh) th a ra cc ch lnh cho hp ng. V d, trong chng trnh 2.1 th cc lnh ADD v MOV l cc lnh n CPU, cn ORG v END l cc ch lnh i vi hp ng. ORG ni hp ng t m lnh ti ngn nh 0 v END th bo cho hp ng bit kt thc m ngun. Hay ni cch khc mt ch lnh bt u v ch lnh th hai kt thc chng trnh. Cu trc ca mt lnh hp ng c 4 trng nh sau:

[nhn:] [t gi nh] [cc ton hng] [; ch gii] Cc trng trong du ngoc vung l tu chn v khng phi dng lnh no cng c chng. Cc du ngoc vung khng c vit vo. Vi dng thc trn y cn lu cc im sau:
1. Trng nhn cho php chng trnh tham chiu n mt dng lnh bng tn. N khng c vit qu mt s k t nht nh. Hy kim tra quy nh ny ca hp ng m ta s dng. 2. T gi nh (lnh) v cc ton hng l cc trng kt hp vi nhau thc thi cng vic thc t ca chng trnh v hon thin cc nhim v m chng trnh c vit cho chng. Trong hp ng cc cu lnh nh:

ADD MOV

A, B A, #67H

th ADD v MOV l nhng t gi nh to ra m lnh, cn A, B v A, #67H l nhng ton hng th hai trng c th cha cc lnh gi hoc ch lnh ca hp ng. Hy nh rng cc ch lnh khng to ra m lnh no (m my) v chng ch dng bi hp ng, ngc li i vi cc lnh l chng c dch ra m my (m lnh) cho CPU thc hin. Trong chng trnh 2.1 cc lnh ORG v END l cc ch lnh (mt s hp ng ca 8051 s dng dng .ORG v .END). Hy c quy nh c th ca hp ng ta s dng.
3. Chng ch gii lun phi bt u bng du chm phy (;). Cc ch gii c th bt u u dng hoc gia dng. Hp ng b qua (lm ng) cc ch gii nhng chng li rt cn thit i vi lp trnh vin. Mc d cc ch gii l tu chn, khng bt buc nhng ta nn dng chng m t chng trnh gip cho ngi khc c v hiu chng trnh d dng hn. 4. Lu n nhn HERE trong trng nhn ca chng trnh 2.1. Mt nhn bt k tham chiu n mt lnh phi c du hai chm (:) ng sau. Trong cu lnh nhy ngn SJMP th 8051 c ra lnh li trong vng lp ny v hn. Nu h thng ca chng ta c mt chng trnh gim st th takhng cn dng lnh ny v n c th c xo i ra khi chng trnh.

Nh vy cu trc ca mt chng trnh hp c bit, cu hi t ra l chng trnh s ra v hp dch nh th no v lm th no chy c? Cc bc to ra mt chng ng c th chy c l:

2.3Hp dch v chy mt chng 8051.

trnh

EDITOR PRAGRA M myfile.asm

ng ta c to c th trnh hp

1. Trc ht ta s dng m trnh son tho ASSEMBLE g vo mt chng trnh ging nh chng R trnh 2.1. C nhiu trnh son tho tuyt vi hoc cc b s l t c s dng to ra v/ PRAGRAM hoc son tho chng trnh. Mt trnh son tho c s dng rng ri l trnh son tho other obj myfile.lst EDIT ca MS-DOS (hoc Noterad ca file Windows) u chy trn h iu hnh myfile.ob Microsoft. Lu rng, trnh son tho phi c j kh nng to ra tp m ASCII. i vi nhiu trnh hp ng th cc tn tp tun theo cc quy LINKER c thng l c DOS, nhng phn m rng ca PRAGRA cc tp ngun phi l asm hay src tu theo trnh hp ng m ta s dng. M 2. Tp ngun c phn m rng asm cha m chng trnh c to ra bc 1 c np vo trnh hp dch ca 8051. Trnh hp dch myfile.abs chuyn cc lnh ra m my. Trnh hp dch s to ra mt tp i tng v mt tp lit k vi cc thnh phn m rng obj v lst tng OH ng. PRAGRA 3. Cc trnh hp dch yu cu mt bc th ba gi l lin kt. Chng trnh lin kt ly mt M hoc nhiu tp i tng v to ra mt tp i tng tuyt i vi thnh phn m rng abs. Tp abs ny c s dng bi thng myfile.he cha ca 8051 c mt chng trnh gim st. x 4. K sau tp abs c np vo mt chng trnh c gi l 0H (chuyn i tng object v dng s Hex) to ra mt tp vi ui m rng Hex c th np tt vo trong ROM. Chng trnh ny c trong tt c mi trnh hp ng ca 8051 cc trnh hp ng da trn Windows hin nay kt hp cc bc 2 n 4 vo thnh mt bc. Hnh 2.2: Cc bc to ra mt chng trnh.

2.3.1 Ni thm v cc tp .asm v .object.

Tp .asm cng c gi l tp ngun v chnh v l do ny m mt s trnh hp ng i hi tp ny phi c mt phn m rng src t ch source l ngun. Hy kim tra hp ng 8051 m ta s dng xem n c i hi nh vy khng? Nh ta ni trc y tp ny c to ra nh mt trnh bin tp chng hn nh Edit ca DOS hoc Notepad ca Windows. Hp ng ca 8051 chuyn i cc tp hp ng trong tp .asm thnh ngn ng m my v cung cp tp i tng .object. Ngoi vic to ra tp i tng trnh hp ng cng cho ra tp lit k lst (List file).
2.3.2 Tp lit k .lst.

Tp lit k l mt tu chn, n rt hu ch cho lp trnh vin v n lit k tt c mi m lnh v a ch cng nh tt c cc li m trnh hp ng pht hin ra. Nhiu trnh hp ng gi thit rng, tp lit k l khng cn thit tr khi ta bo rng ta mun to ra n. Tp ny c th c truy cp bng mt trnh bin dch nh Edit ca DOS hoc Notepad ca Window v c hin th trn mn hnh hoc c gi ra my in. Lp trnh vin s dng tp lit k tm cc li c php. Ch sau khi sa ht cc li c nh du trong tp lit k th tp i tng mi sn sng lm u vo cho chng trnh lin kt. 1 0000 ORG 0H ; Bt u a ch 0 2 0000 7D25 MOV R5, #25H ; Np gi tr 25H vo R5 3 0002 7F34 MOV R7, #34H ; Np gi tr 34H vo R7 4 0004 7400 MOV A, #0 ; Np 0 vo A (xo A) 5 0006 2D ADD A, R5 ; Cng ni dung R5 vo A (A = A + R5) 6 0007 2F ADD A, R7 ; Cng ni dung R7 vo A (A = A + R7) 7 0008 2412 ADD A, #12H ; Cng gi tr 12H vo A (A = A + 12H) 8 00A BCEF HERE: SJMP HERE ; li vng lp ny 9 000C END ; Kt thc tp .asm Chng trnh 2.2: Tp lit k.

2.4.1 B m chng trnh trong 8051.

2.4 B m chng trnh v khng gian ROM trong 8051.

Mt thanh ghi quan trng khc trong 8051 l b m chng trnh . B m chng trnh ch m a ch ca lnh k tip cn c thc hin. Khi CPU np m lnh t b nh ROM chng trnh th b m chng trnh tng ln ch m lnh kt tip. B m chng trnh trong 8051 c th truy cp cc a ch chng trnh trong 8051 rng 16 bit. iu ny c ngha l 8051 c th truy cp cc a cha chng trnh t 0000 n FFFFH tng cng l 64k byte m lnh. Tuy nhin, khng phi tt c mi thnh vin ca 8051 u c tt c 64k byte ROM trn chp c ci t. Vy khi 8051 c bt ngun th n nh thc a cha no?
2.4.2 a ch bt u khi 8051 c cp ngun.

Mt cu hi m ta phi hi v b vi iu khin bt k l th n c cp ngun th n bt u t a ch no? Mi b vi iu khin u khc nhau. Trong trng hp h 8051 th mi thnh vin k t nh sn xut no hay phin bn no th b vi iu khin u bt u t a ch 0000 khi n c bt ngun. Bt ngun y c ngha l ta cp in p Vcc n chn RESET nh s trnh by chng 4. Hay ni cch khc, khi 8051 c cp ngun th b m chng trnh c gi tr 0000. iu ny c ngha l n ch m lnh u tin c lu a cha ROM 0000H. V l do ny m trong v tr nh 0000H ca b nh ROM chng trnh v y l ni m n tm lnh u tin khi bt ngun. Chng ta t c iu ny bng cu lnh ORG trong chng trnh ngun nh trnh by trc y. Di y l hot ng tng bc ca b m chng trnh trong qa trnh np v thc thi mt chng trnh mu.
2.4.3 t m vo ROM chng trnh.

hiu tt hn vai tr ca b m chng trnh trong qu trnh np v thc thi mt chng trnh, ta kho st mt hot ng ca b m chng trnh khi mi lnh c np v thc thi. Trc ht ta kho st mt ln na tp lit k ca chng trnh mu v cch t m vo ROM chng trnh 8051 nh th no? Nh ta c th thy, m lnh v ton hng i vi mi lnh c lit k bn tri ca lnh lit k. Chng trnh 2.1: V d mu v mt chng trnh hp ng. Chng trnh 2.1 cho trn y l mt chui cc cu lnh hoc cc dng lnh c vit hoc bng cc lnh hp ng nh ADD v MOV hoc bng cc cu lnh c gi l cc ch dn. Trong khi cc lnh hp ng th ni CPU phi lm g th cc ch lnh (hay cn gi l gi lnh) th a ra cc ch lnh cho hp ng. V d, trong chng trnh 2.1 th cc lnh ADD v MOV l cc lnh n CPU, cn ORG v END l cc ch lnh i vi hp ng. ORG ni hp ng t m lnh ti ngn nh 0 v END th bo cho hp ng bit kt thc m ngun. Hay ni cch khc mt ch lnh bt u v ch lnh th hai kt thc chng trnh. Cu trc ca mt lnh hp ng c 4 trng nh sau: [nhn:] [t gi nh] [cc ton hng] [; ch gii]

Cc trng trong du ngoc vung l tu chn v khng phi dng lnh no cng c chng. Cc du ngoc vung khng c vit vo. Vi dng thc trn y cn lu cc im sau: Trng nhn cho php chng trnh tham chiu n mt dng lnh bng tn. N khng c vit qu mt s k t nht nh. Hy kim tra quy nh ny ca hp ng m ta s dng. T gi nh (lnh) v cc ton hng l cc trng kt hp vi nhau thc thi cng vic thc t ca chng trnh v hon thin cc nhim v m chng trnh c vit cho chng. Trong hp ng cc cu lnh nh: ADD A, B MOV A, #67H Th ADD v MOV l nhng t gi nh to ra m lnh, cn A, B v A, #67H l nhng ton hng th hai trng c th cha cc lnh gi hoc ch lnh ca hp ng. Hy nh rng cc ch lnh khng to ra m lnh no (m my) v chng ch dng bi hp ng, ngc li i vi cc lnh l chng c dch ra m my (m lnh) cho CPU thc hin. Trong chng trnh 2.1 cc lnh ORG v END l cc ch lnh (mt s hp ng ca 8051 s dng dng .ORG v .END). Hy c quy nh c th ca hp ng ta s dng. Trng ch gii lun phi bt u bng du chm phy (;). Cc ch gii c th bt u u dng hoc gia dng. Hp ng b qua (lm ng) cc ch gii nhng chng li rt cn thit i vi lp trnh vin. Mc d cc ch gii l tu chn, khng bt buc nhng ta nn dng chng m t chng trnh gip cho ngi khc c v hiu chng trnh d dng hn. Lu n nhn HERE trong trng nhn ca chng trnh 2.1. Mt nhn bt k tham chiu n mt lnh phi c du hai chm (:) ng sau. Trong cu lnh nhy ngn SJMP th 8051 c ra lnh li trong vng lp ny v hn. Nu h thng ca chng ta c mt chng trnh gim st th takhng cn dng lnh ny v n c th c xo i ra khi chng trnh. Chng trnh 2.1: Tp lit k Sau khi chng trnh c t vo trong ROM ca thnh vin h 8051 nh 8751 hoc AT 8951 hoc DS 5000 th m lnh v ton hng c a vo cc v tr nh ROM bt u t a ch 0000 nh bng lit k di y. a ch M lnh
a ch ROM 0000 0002 0004 0006 0007 0008 000A Ngn ng my 7D25 7F34 7400 2D 2F 2412 80EF 0000 Hp ng 7D 0001 MOV R5, #25H 25 MOV R7, #34H F7 0002 MOV A, #0 0003 34 ADD A, R5 0004 74 ADD A, R7 0005 ADD A, #12H 00 HERE: SJMP HERE 0006 2D 0007 2F 0008 24 0009 12 000A 80 000B FE

Bng ni dung ROM ca chng trnh 2.1.

Bng lit k ch ra a ch 0000 cha m 7D l m lnh chuyn mt gi tr vo thanh ghi R5 v a ch byte byte byte
0000 0FF F 8751 AT89C51 1FF F 0000 0000

8752 AT89C52 7FF F DS5000-32

0001 cha ton hng ( y l gi tr 254) cn c chuyn vo R5. Do vy, lnh MOV R5, #25H c m l 7D25 trong 7D l m lnh, cn 25 l ton hng. Tng t nh vy, m my 7F34 c t trong cc ngn nh 0002 v 0003 v biu din m lnh v ton hng i vi lnh MOV R7, #34H. Theo cch nh vy, m my 7400 c t ti a ch 0004 v 0005 v biu din m lnh v ton hng i vi lnh MOV A, #0. Ngn nh 0006 c m 2D l m i vi lnh ADD A, R5 v ngn nh 0007 c ni dung 2F l m lnh cho ADD A, R7. M lnh i vi lnh ADD A, #12H c t ngn nh 0008 v ton hng 12H c t ngn nh 0009. Ngn nh 000A c m lnh ca lnh SJMP v a ch ch ca n c t ngn nh 000B. L do v sao a ch ch l FE c gii thch chng 3.
2.4.4 Thc hin mt chng trnh theo tng byte.

Gi s rng chng trnh trn c t vo ROM ca chp 8051 hoc( 8751, AT 8951 hoc DS 5000) th di y l m t hot ng theo tng bc ca 8051 khi n c cp ngun.
1. Khi 8051 c bt ngun, b m chng trnh PC c ni dung 0000 v bt u np m lnh u tin t v tr nh 0000 ca ROM chng trnh. Trong trng hp ca chng trnh ny l m 7D chuyn mt ton hng vo R5. Khi thc hin m lnh CPU np gi tr 25 vo b m chng trnh c tng ln ch n 0002 (PC = 0002) c cha m lnh 7F l m ca lnh chuyn mt ton hng vo R7 MOV R7, .... 2. Khi thc hin m lnh 7F th gi tr 34H c chuyn vo R7 sau PC c tng ln 0004. 3. Ngn nh 0004 cha m lnh ca lnh MOV A, #0. Lnh ny c thc hin v by gi PC = 0006. Lu rng tt c cc lnh trn u l nhng lnh 2 byte, ngha l mi lnh chim hai ngn nh. 4. By gi PC = 0006 ch n lnh k tip l ADD A, R5. y l lnh mt byte, sau khi thc hin lnh ny PC = 0007. 5. Ngn nh 0007 cha m 2F l m lnh ca ADD A, R7. y cng l lnh mt byte, khi thc hin lnh ny PC c tng ln 0008. Qa trnh ny c tip tc cho n khi tt c moi lnh u c np v thc hin. Thc t m b m chng trnh ch n lnh k tip cn c thc hin gii thch ti sao mt s b vi x l (ng ni l 86) gi b m l con tr lnh (Instruction Pointer).

2.4.5 Bn nh ROM trong h 8051.

Nh ta thy chng trc, mt s thnh vin h 8051 ch c 4k byte b nh ROM trn chp (v d 8751, AT 8951) v mt s khc nh AT 8951 c 8k byte ROM, DS 5000-32 ca Dallas Semiconductor c 32k byte ROM trn chp. Dallas Semiconductor cng c mot 8051 vi ROM trn chp l 64k byte. im cn nh l khng c thnh vin no ca h 8051 c th truy cp c hn 64k byte m lnh v b m chng trnh ca 8051 l 16 bit (di a ch t 0000 n FFFFH). Cn phi ghi nh l lnh u tin ca ROM chng trnh u t 0000, cn lnh cui cng ph thuc vo dung lng ROM trn chp ca mi thnh vin h 8051. Trong s cc thnh vin h 8051 th 8751 v AT 8951 c 4k byte ROM trn chp. B nh ROM trn chp ny c cc a ch t 0000 n 0FFFH. Do vy, ngn nh u tin c a ch 0000 v ngn nh cui cng c a cha 0FFFH. Hy xt v d 2.1. V d 2.1: Tm a ch b nh ROM ca mi thnh vin h 8051 sau y.
a) AT 8951 (hoc 8751) vi 4k byte b) DS 5000-32 vi 32k byte

Li gii:
a) Vi 4k byte ca khng gian nh ROM trn chp ta c 4096 byte bng 1000H dng Hex (4 1024 = 4096 hay 1000 dng Hex). B nh ny c xp xp trong cc ngn nh t 0000 n 0FFFFH. Lu 0 lun l ngn nh u tin. b) Vi 32k byte nh ta c 32.768 byte (32 1024). Chuyn i 32.768 v s Hex ta nhn c gi tr 8000H. Do vy, khng gian nh l di t 0000 n 7FFFH.

Hnh 2.3: Di a ch ca ROM trn chp mt s thnh vin h 8051.


2.5.1 Kiu d liu v cc ch lnh ca 8051.

2.5 Cc kiu d liu v cc ch lnh.

B vi iu khin ch c mt kiu d liu, n l 8 bit v di mi thanh ghi cng l 8 bit. Cng vic ca lp trnh vin l phn chia d liu ln hn 8 bit ra thnh tng khc 8 bit (t 00 n FFH hay t 0 n 255) CPU x l. V d v x l d liu ln hn 8 bit c trnh by chng 6. Cc d liu c s dng bi 8051 c th l s m hoc s dng v v x l cc s c du c bn chng 6.
2.5.2 Ch lnh DB (nh ngha byte).

Ch lnh DB l mt ch lnh d liu c s dng rng ri nht trong hp ng. N c dng nh ngha d liu 8 bit. Khi DB c dng nh ngha byte d liu th cc s c th dng thp phn, nh phn, Hex hoc dng thc ASII. i vi d liu thp phn th cn t ch D sau s thp phn, i vi s nh phn th t ch B v i vi d liu dng Hex th cn t ch H. Bt k ta s dng s dng thc no th hp ng u chuyn i chng v thnh dng Hex. bo dng thc dng m ASCII th ch cn n gin t n vo du nhy n nh th ny. Hp ng s gn m ASCII cho cc s hoc cc k t mt cch t ng. Ch lnh DB ch l ch lnh m c th c s dng nh ngha cc chui ASCII ln hn 2 k t. Do vy, n c th c s dng cho tt c mi nh ngha d liu ASCII. Di y l mt s v d v DB:
ORG DATA1: DATA2: DATA3: DATA4: DATA5 500H DB DB DB ORG DB ORG DB 2B 00110101B 39H 510H 2591 518H My name is Joe ; S thp phn (1C dng Hex) ; S nh phn (35 dng Hex) ; S dng Hex ; Cc s ASCII ; Cc k t ASCII

Cc chui ASCII c th s dng du nhy n nh th ny hoc nhy kp nh th ny. Dng du phy kp s hu ch hn i vi trng hp du nhy n c dng s hu cch nh th ny Nh O Leary. Ch lnh DB cng c dng cp pht b nh theo tng on kch thc mt byte.
2.5.3 Cc ch lnh ca hp ng.

1. Ch lnh ORG: Ch lnh ORG c dng bo bt u ca a ch. S i sau ORG c k dng Hex hoc thp phn. Nu s ny c km ch H ng sau th l dng Hex v nu khng c ch H sau l s thp phn v hp ng s chuyn n thnh s Hex. Mt s hp ng s dng du chm ng trc ORG thay cho ORG. Hy c k v trnh hp ng ta s dng. 2. Ch lnh EQU: c dng nh ngha mt hng s m khng chim ngn nh no. Ch lnh EQU khng dnh ch ct cho d liu nhng n gn mt gi tr hng s vi nhn d liu sao cho khi nhn xut hin trong chng trnh gi tr hng s ca n s c thay th i vi nhn. Di y s dng EQU cho hng s b m v sau hng s c dng np thanh ghi RS.

COUNT EQU 25 MOV R3, #count

2.5.4 Cc quy nh vi nhn trong hp ng.

Khi thc hin ln MOV R3, #COUNT th thanh ghi R3 s c np gi tr 25 (ch n du #). Vy u im ca vic s dng EQU l g? Gi s c mt hng s (mt gi tr c nh) c dng trong nhiu ch khc nhau trong chng trnh v lp trnh vin mun thay i gi tr ca n trong c chng trnh. Bng vic s dng ch lnh EQU ta c th thay i mt s ln v hp ng s thay i tt c mi ln xut hin ca n l tm ton b chng trnh v gng tm mi ln xut hin. 3. Ch lnh END: Mt lnh quan trng khc l ch lnh END. N bo cho trnh hp ng kt thc ca tp ngun asm ch lnh END l dng cui cng ca chng trnh 8051 c ngha l trong m ngun th mi th sau ch lnh END b trnh hp ng b qua. Mt s trnh hp ng s dng .END c du chm ng trc thay cho END.

Bng cch chn cc tn nhn c ngha l mt lp trnh vin c th lm cho chng trnh d c v d bo tr hn, c mt s quy nh m cc tn nhn phi tun theo. Th nht l mi tn nhn phi thng nht, cc tn c s dng lm nhn trong hp ng gm cc ch ci vit hoa v vit thng, cc s t 0 n 9 v cc du c bit nh: du hi (?), du ( ), du gch di (_), du l ($) v du chu k (.). K t u tin ca nhn phi l mt ch ci. Hay ni cch khc l n khng th l s Hex. Mi trnh hp ng c mt s t d tr l cc t gi nh cho cc lnh m khng c dng lm nhn trong chng trnh. V d nh MOV v ADD. Bn cnh cc t gi nh cn c mt s t d tr khc, hy kim tra bn lit k cc t d phng ca hp ng ta ang s dng. Cng nh cc b vi x l khc, 8051 c mt thanh ghi c bo cc iu kin s hc nh bit nh. Thanh ghi c trong 8051 c gi l thanh ghi t trng thi chng trnh PSW. Trong phn ny v a ra mt s v d v cch thay i chng.
2.6.1 Thanh ghi t trng thi chng trnh PSW.

2.6 Cc bit c v thanh ghi c bit PSW ca 8051.

Thanh ghi PSW l thanh ghi 8 bit. N cng cn c coi nh l thanh ghi c. Mc d thanh ghi PSW rng 8 bit nhng ch c 6 bit c 8051 s dng. Hai bit cha dng l cc c cho ngi dng nh ngha. Bn trong s cc c c gi l cc c c iu kin, c ngha l chng bo mt s iu kin do kt qu ca mt lnh va c thc hin. Bn c ny l c nh CY (carry), c AC (auxiliary cary), c chn l P (parity) v c trn OV (overflow). Nh nhn thy t hnh 2.4 th cc bit PSW.3 v PSW.4 c gn nh RS0 v RS1 v chng c s dng thay i cc thanh ghi bng. Chng s c gii thch phn k sau. Cc bit PSW.5 v PSW.1 l cc bit c trng thi cng dng chung v lp trnh vin c th s dng cho bt k mc ch no.
CY CY AC AC PSW.7 PSW.6 PSW.4 PSW.3 PSW.2 RS1 F0 ; C nh ; C RS0 OV P

PSW.5
RS1 RS0 OV

; Dnh cho ngi dng s dng mc ch chung ; Bit dnh cho ngi dng nh ngha
; Bit = 1 chn bng thanh ghi ; Bit = 0 chn bng thanh ghi ; C bn

P PSW.0 ; C chn, l. Thit lp/ xo bng phn cng mi chu k lnh bo tng cc s bit 1 trong thanh ghi A l chn/ l. RS1 RS0 Bng thanh ghi a ch 0 0 0 00H - 07H 0 1 1 08H - 0FH 1 0 2 10H - 17H 1 1 3 18H - 1FH

PSW.1

Hnh 2.4: Cc bit ca thanh ghi PSW Di y l gii thch ngn gn v 4 bit c ca thanh ghi PSW.

1. C nh CY: C ny c thit lp mi khi c nh t bit D7. C ny c tc ng sau lnh cng hoc tr 8 bit. N cng c thit lp ln 1 hoc xo v 0 trc tip bng lnh SETB C v CLR C ngha l thit lp c nh v xo c nh tng ng. V cc lnh nh a ch theo bit c bn k chng 8. 2. C AC: C ny bo c nh t bit D3 sang D4 trong php cng ADD hoc tr SUB. C ny c dng bi cc lnh thc thi php s hc m BCD (xem chng 6).

2.6.2 Lnh ADD v PSW.

3. C chn l P: C chn l ch phn nh s bit mt trong thanh ghi A l chn hay l. Nu thanh ghi A cha mt s chn cc bit mt th P = 0. Do vy, P = 1 nu A c mt s l cc bit mt. 4. C chn OV: C ny c thit lp mi khi kt qu ca mt php tnh s c du qu ln to ra bit bc cao lm trn bit du. Nhn chung c nh c dng pht hin li trong cc php s hc khng du. Cn c trn c dng ch pht hin li trong cc php s hc c du v c bn k chng 6.

By gi ta xt tc ng ca lnh ADD ln cc bit CY, AC v P ca thanh ghi PSW. Mt s v d s lm r trng thi ca chng, mc d cc bit c b tc ng bi lnh ADD l CY, P, AC v OV nhng ta ch tp trung vo cc c CY, AC v P, cn AC quan n CY OV c OV s c ni n chng 6 v n lin Instruction php tnh s hc s c du. ADD X X X Cc v d 2.2 n 2.4 s phn nh tc ng ADDC ca lnh X X X ADD ln cc bit ni trn. X X X Bng 2.1: Cc lnh tc ng ln cc bit c. SUBB MUL 0 X V d 2.2: Hy trnh by trng thi cc bit c CY, AC v P sau lnh cng 38H vi 2FH di y: DIV 0 X
MOV A, #38H ADD A, #2FH =0 ; Sau khi cng A = DA RRC RLC SETB C CLR C CPL C ANL C, bit ANL C,/ bit ORL C, bit ORL C,/bit MOV C, bit CJNE X X X 1 0 X X X X X X X 67H, CY

Li gii:
+ 38 2F 67 00111000 00101111 01100111

C CY = 0 v khng c nh t D7 C AC = 1 v c nh t D3 sang D4 C P = 1 v thanh ghi A c 5 bit 1 (l)

V d 2.3: Hy trnh by trng thi cc c CY, AC v P sau php cng 9CH vi 64H. Li gii:
+ 9C 64 100 10011100 01100100 00000000

C CY = 1 v c nh qua bit D7 C AC = 1 v c nh t D3 sang D4 C P = 0 v thanh ghi A khng c bit 1 no (chn)

V d 2.4: Hy trnh by trng thi cc c CY, AC v P sau php cng 88H vi 93H. Li gii: + 88 93 11B 10001000 10010011 00011011

C CY = 1 v c nh t bit D7 C AC = 0 v khng c nh t D3 sang D4 C P = 0 v s bit 1 trong A l 4 (chn)

B vi iu khin 8051 c tt c 128 byte RAM. Trong mc ny ta bn v phn b ca 128 byte RAM ny v kho st cng dng ca chng nh cc thanh ghi v ngn xp.
2.7.1 Phn b khng gian b nh RAM trong 8051.

2.7Cc bng thanh ghi v ngn xp ca 8051.

C 128 byte RAM trong 8051 (mt s thnh vin ang ch l 8052 c 256 byte RAM). 128 byte RAM bn trong 8051 c gn a ch t 00 n 7FH. Nh ta s thy chng 5, chng c th c truy cp trc tip nh cc ngn nh 128 byte RAM ny c phn chia thnh tng nhm nh sau:
1. Tng cng 32 byte t ngn nh 00 n 1FH c dnh cho cc thanh ghi v ngn xp. 2. Tng cng 16 byte t ngn nh 20H n 2FH c dnh cho b nh c/ ghi nh a ch c theo bit. Chng 8 s bn chi tit v b nh v cc lnh nh a ch c theo bit. 3. Tng cng 80 byte t ngn nh 30H n 7FH c dng cho lu c v ghi hay nh vn thng gi l bng nhp (Serach pad). Nhng ngn nh ny (80 byte) ca RAM c s dng rng ri cho mc ch lu d liu v tham s bi cc lp trnh vin 8051. Chng ta s s dng chng cc chng sau lu d liu nhn vo CPU qua cc cng vo-ra.

2.7.2 Cc bng thanh ghi trong 8051.

Nh ni trc, tng cng 32 byte RAM c dnh ring cho cc bng thanh ghi v ngn xp. 32 byte ny c chia ra thnh 4 bng cc thanh ghi trong mi bng c 8 thanh ghi t R0 n R7. Cc ngn nh RAM s 0, R1 l ngn nh RAM s 1, R2 l ngn nh RAM s 2 v.v... Bng th hai ca cc thanh ghi R0 n R7 bt u t thanh nh RAM s 2 cho n ngn nh RAM s 0FH. Bng th ba bt u t ngn nh 10H n 17H v cui cng t ngn nh 18H n 1FH l dng cho bng cc thanh ghi R0 n R7 th t.
00 7F 07 08 0F10 1718 1F 20 R0 - R7 R0 - R7 R0 - R7 2F 30 RAM nh a RAM bng nh ch theo bit (Seratch Pad) R0 - R7

Hnh 2.5: Ngn xp cc thanh nh RAM trong 8051.


Bank 0 7 6 5 4 3 2 1 R7 R6 R5 R4 R3 R2 R1 F E D C B A 9 Bank 1 R7 R6 R5 R4 R3 R2 R1 17 16 15 14 13 12 11 Bank 2 R7 R6 R5 R4 R3 R2 R1 1F 1E 1D 1C 1B 1A 19 Bank 3 R7 R6 R5 R4 R3 R2 R1

Bng0 ... Bng3

0 R0 8 R0 R0 Hnh 2.6: Cc bng thanh ghi ca 8051 v10 chR0 chng. 18 a ca Nh ta c th nhn thy t hnh 2.5 bng 1 s dng cng khng gian RAM nh ngn xp. y l mt vn chnh trong lp trnh 8051. Chng ta phi hoc l khng s dng bng 1 hoc l phi nh mt khng gian khc ca RAM cho ngn xp.

V d 2.5: Hy pht biu cc ni dung ca cc ngn nh RAM sau on chng trnh sau:
MOV R0, #99H MOV R1, #85H MOV R2, #3FH ; Np R0 gi tr 99H ; Np R1 gi tr 85H ; Np R2 gi tr 3FH

MOV R7, #63H MOV R5, #12H

; Np R7gi tr 63H ; Np R5 gi tr12H

Li gii: Sau khi thc hin chng trnh trn ta c:


Ngn nh 0 ca RAM c gi tr 99H Ngn nh 1 ca RAM c gi tr 85H Ngn nh 2 ca RAM c gi tr 3FH Ngn nh 7 ca RAM c gi tr 63H Ngn nh 5 ca RAM c gi tr 12H

2.6.3 Bng thanh ghi mc nh.

Nu cc ngn nh 00 n 1F c dnh ring cho bn bng thanh ghi, vy bng thanh ghi R0 n R7 no ta phi truy cp ti khi 8051 c cp ngun? Cu tr li l cc bng thanh ghi 0. l cc ngn nh RAM s 0, 1, 2, 3, 4, 5, 6 v 7 c truy cp vi tn R0, R1, R2, R3, R4, R5, R6 v R7 khi lp trnh 8051. N d dng hn nhiu khi tham chiu cc ngn nh RAM ny v cc tn R0, R1 v.v... hn l s v tr ca cc ngn nh. V d 2.6 lm r khi nim ny. V d 2.6: Hy vit li chng trnh v d 2.5 s dng cc a ch RAM thay tn cc thanh ghi. Li gii: y c gi l ch nh a ch trc tip v s dng a ch cc v tr ngn nh RAM i vi a ch ch. Xem chi tit chng 5 v ch nh a ch.
MOV MOV MOV MOV MOV 00, #99H 01, #85H 02, #3FH 07, #63H 05, #12H ; Np thanh ghi R0 gi tr 99H ; Np thanh ghi R1 gi tr 85H ; Np thanh ghi R2 gi tr 3FH ; Np thanh ghi R7gi tr 63H ; Np thanh ghi R5 gi tr12H

2.6.4 Chuyn mch cc bng thanh ghi nh th no?

Nh ni trn, bng thanh ghi 0 l mc nh khi 8051 c cp ngun. Chng ta c th chuyn mch sang cc bng thanh ghi khc bng cch s dng bit D3 v D4 ca thanh ghi PSW nh ch ra theo bng 2.2. Bng 2.2: Bit la chn cc bng thanh ghi RS0 v RS1.
Bng 0 Bng 1 Bng 2 Bng 3 RS1 (PSW.4) 0 0 1 1 RS0 (PSW.3) 0 1 0 1

Bit D3 v D4 ca thanh ghi PSW thng c tham chiu nh l PSW.3 v PSW.4 v chng c th c truy cp bng cc lnh nh a ch theo bit nh SETB v CLR. V d SETB PSW.3 s thit lp PSW.3 v chn bng thanh ghi 1. Xem v d 2.7 di y. V d 2.7: Hy pht biu ni dung cc ngn nh RAM sau on chng trnh di y:
SETB MOV MOV MOV MOV MOV PSW.4 R0, #99H R1, #85H R2, #3FH R7, #63H R5, #12H ; Chn bng thanh ghi 4 ; Np thanh ghi R0 gi tr 99H ; Np thanh ghi R1 gi tr 85H ; Np thanh ghi R2 gi tr 3FH ; Np thanh ghi R7gi tr 63H ; Np thanh ghi R5 gi tr12H

Li gii: Theo mc nh PSW.3 = 0 v PSW.4 = 0. Do vy, lnh SETB PSW.4 s bt bit RS1 = 1 v RS0 = 0, bng lnh nh vy bng thanh ghi R0 n R7 s 2 c chn. Bng 2 s dng cc

ngn nh t 10H n 17H. Nn sau khi thc hin on chng trnh trn ta c ni dung cc ngn nh nh sau:
Ngn nh v tr 10H c gi tr 99H Ngn nh v tr 11H c gi tr 85H Ngn nh v tr 12H c gi tr 3FH Ngn nh v tr 17H c gi tr 63H Ngn nh v tr 15H c gi tr 12H

2.6.5 Ngn xp trong 8051.

Ngn xp l mt vng b nh RAM c CPU s dng lu thng tin tm thi. Thng tin ny c th l d liu, c th l a c CPU cn khng gian lu tr ny v s cc thanh ghi b hn ch.
2.6.6 Cch truy cp cc ngn xp trong 8051.

Nu ngn xp l mt vng ca b nh RAM th phi c cc thanh ghi trong CPU ch n n. Thanh c dng ch n ngn xp c gi l thanh ghi con tr ngn xp SP (Stack Pointer). Con tr ngn xp trong 8051 ch rng 8 bit c ngha l n ch c th c th c cc a ch t 00 n FFH. Khi 8051 c cp ngun th SP cha gi tr 07 c ngha l ngn nh 08 ca RAM l ngn nh u tin c dng cho ngn xp trong 8051. Vic lu li mt thanh ghi PCU trong ngn xp c gi l mt ln ct vo PUSH v vic np ni dung ca ngn xp tr li thanh ghi CPU c gi l ly ra POP. Hay ni cch khc l mt thanh ghi c ct vo ngn xp lu ct v c ly ra t ngn xp dng tip cng vic ca SP l rt nghim ngt mi khi thao tc ct vo (PUSH) v ly ra (POP) c thc thi. bit ngn xp lm vic nh th no hy xt cc lnh PUSH v POP di y.
2.6.7 Ct thanh ghi vo ngn xp.

Trong 8051 th con tr ngn xp ch n ngn nh s dng cui cng ca ngn xp. Khi ta ct d liu vo ngn xp th con tr ngn xp SP c tng ln 1. Lu rng iu ny i vi cc b vi x l khc nhau l khc nhau, ng ch l cc b vi x l 86 l SP gim xung khi ct d liu vo ngn xp. Xt v d 2.8 di y, ta thy rng mi khi lnh PUSH c thc hin th ni dung ca thanh ghi c ct vo ngn xp v SP c tng ln 1. Lu l i vi mi byte ca d liu c ct vo ngn xp th SP c tng ln 1 ln. Cng lu rng ct cc thanh ghi vo ngn xp ta phi s dng a ch RAM ca chng. V d lnh PUSH 1 l ct thanh ghi R1 vo ngn xp. V d 2.8: Hy biu din ngn xp v con tr ngn xp i vi on chng trnh sau y. Gi thit vng ngn xp l mc nh.
MOV MOV MOV PUSH PUSH PUSH R6, #25H R1, #12H R4, #0F3H 6 1 4

Li gii:
0B 0A 09 08 Bt u SP = 07 Sau PUSH 6 0B 0A 09 08 25 SP = 08 Sau PUSP 1 0B 0A 09 12 08 25 SP = 09 Sau PUSH 4 0B 0A F3 09 12 08 25 SP = 0A

2.6.8 Ly ni dung thanh ghi ra t ngn xp.

Vic ly ni dung ra t ngn xp tr lai thanh ghi cho l qa trnh ngc vi cc ni dung thanh ghi vo ngn xp. Vi mi ln ly ra th byte trn nh ngn xp c sao chp vo thanh ghi c xc nh bi lnh v con tr ngn xp c gim xung 1. V d 2.9 minh ho lnh ly ni dung ra khi ngn xp.

V d 2.9: Kho st ngn xp v hy trnh by ni dung ca cc thanh ghi v SP sau khi thc hin on chng trnh sau y:
POP POP POP 3 5 2 ; Ly ngn xp tr li R3 ; Ly ngn xp tr li R5 ; Ly ngn xp tr li R2

Li gii:
0B 54 0A F9 09 76 08 6C Bt u SP = 0B Sau POP3 0B 0A F9 09 76 08 6C SP = 0A Sau POP 5 0B 0A 09 76 08 6C SP = 09 Sau POP 2 0B 0A 09 08 6C SP = 08

2.6.9 Gii hn trn ca ngn xp.

Nh ni trn, cc ngn nh 08 n 1FH ca RAM trong 8051 c th c dng lm ngn nh 20H n 2FH ca RAM c d phng cho b nh nh a ch c theo bit v khng th dng trc cho ngn xp. Nu trong mt chng trnh cho ta cn ngn xp nhiu hn 24 byte (08 n 1FH = 24 byte) th ta c th i SP ch n cc ngn nh 30 n 7FH. iu ny c thc hin bi lnh MOV SP, #XX.
2.6.10 Lnh gi CALL v ngn xp.

Ngoi vic s dng ngn xp lu ct cc thanh ghi th CPU cng s dng ngn xp lu ct tam thi a ch ca lnh ng ngay di lnh CALL. iu ny chnh l PCU bit ch no quay tr v thc hin tip cc lnh sau khi chn chng trnh con. Chi tit v lnh gi CALL c trnh b chng 3.
2.6.11 Xung t ngn xp v bng thanh ghi s 1.

Nh ta a ni trn th thanh ghi con tr ngn xp c th ch n v tr RAM hin thi dnh cho ngn xp. Khi d liu c lu ct co ngn xp th SP c tng ln v ngc li khi d liu c ly ra t ngn xp th SP gim xung. L do l PS c tng ln sau khi PUSH l phi bit ly chc chn rng ngn xp ang tng ln n v tr ngn nh 7FH ca RAM t a ch thp nht n a ch cao nht. Nu con tr ngn xp c gim sau cc lnh PUSH th ta nn s dng cc ngn nh 7, 6, 5 v.v... ca RAM thuc cc thanh ghi R7 n R0 ca bng 0, bng thanh ghi mc nh. Vic tng ny ca con tr ngn xp i vi cc lnh PUSH cng m bo rng ngn xp s khng vi ti ngn nh 0 ca RAM (y ca RAM) v do vy s nhy ra khi khng gian dnh cho ngn xp. Tuy nhin c vn ny sinh vi thit lp mc nh ca ngn xp. V d SP = 07 khi 8051 c bt ngun nn RAM v cng thuc v thanh ghi R0 c bng thanh ghi s 1. Hay ni cch khc bng thanh ghi s 1 v ngn xp ang dng chung mt khng gian ca b nh RAM. Nu chng trnh cho cn s dng cc bng thanh ghi s 1 v s 2 ta c th t li vng nh RAM cho ngn xp. V d, ta c th cp v tr ngn nh 60H ca RAM v cao hn cho ngn xp trong v d 2.10. V d 2.10: Biu din ngn xp v con tr ngn xp i vi cc lnh sau:
MOV MOV MOV MOV PUSH PUSH PUSH SP, #5FH R2, #25H R1, #12H R4, #0F3H 2 1 4

; t ngn nh t 60H ca RAM cho ngn xp

Li gii:
63 62 61 60 Sau PUSH 2 63 62 61 60 25 Sau PUSP 3 63 62 61 12 60 25 Sau PUSH 4 63 62 F3 61 12 60 25

Bt uSP=5F

SP = 60

SP = 61

SP = 62

You might also like