Professional Documents
Culture Documents
Qa 02 9091
Qa 02 9091
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.
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)
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:
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.
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:
trnh
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.
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.
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 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
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).
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.
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.
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.
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).
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
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
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
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.
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.
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
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
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
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
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
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
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
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