You are on page 1of 21

Chng 3 : Tm tt tp lnh

TM TT TP LNH
3.1 M U
Chng ny gii thiu tp lnh ( instruction set ) ca h MCS-51 thng qua vic
kho st cc kiu nh a ch ( addressing mode ) v cc th d da trn cc tnh
hung lp trnh in hnh. Ph lc A cho ta bng tm tt tt c cc lnh ca 8051. Ph
lc c m t chi tit tng lnh. Cc ph lc c dng tham kho khi c chng
ny. Chng ny cha bn n k thut lp trnh cng nh hot ng ca trnh dch
hp ng ( assembler ), chng trnh c dng chuyn i chng trnh ngun vit
bng hp ng thnh chng trnh ngn ng my. Cc ch ny c tho lun sau
trong cc chng 7 v 8.
Tp lnh ca MCS-51 c ti u ha cho cc ng dung iu khin 8- bit. Nhiu
kiu nh a ch c ng v nhanh dng truy xut RAM ni c dng n nhm
to thun li cho cc thao tc trn cc cu trc d liu nh. Tp lnh cng h tr cc
bin 1-bit cho php qun l bit trc tip trong cc h logic v iu khin c yu cu x
l bit.
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. Ph lc B trnh by
opcode ca cc lnh. Ph lc ny cho ta thy, vi tng lnh mt : opcode, m gi nh,
s byte ca lnh v s chu k my cn thc thi lnh.
3.2 CC KIU NH A CH
Khi mt lnh c thc thi v lnh ny cn d liu, mt cu hi c t ra l :
D liu cha u Cu tr li cho cu hi ny to ra cc kiu nn a ch ca 8051.
C nhiu kiu nh a ch do vy c nhiu cu tr li cho cu hi nu trn, chng hn
nh : trong byte th 2

g]46

H vi iu khin 8051

ca 1 lnh, trong thanh ghi R4, trong a ch trc tip hoc c th trong
b nh ngoi a ch cha trong con tr d liu.

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. Trong phn ny
chng ta s kho st t't c cc kiu nh a ch ca i51 v nu th d cho tng kiu.
C 8 kiu nh a ch :
Thanh ghi ( register ).
Trc tip ( irect ).
Gin tip ( indirect ).
Tc thri ( immediate ).
- T#ng i ( relative ).
Tuyt ( akslute ).
i ( lng ).
Chi s ( indexed ).
3.2.1 nh a ch thanh ghi
Ngi lp trnh trn 8051 c th truy xut 8 thanh ghi lm vic c nh s t
RO n R7. Cc lnh s dng kiu nh a ch thanh gKTc m ha bng cch
dng 3 bit thp nht ca opcode ( ca lnh ) ch ra mt thanh ghi bn trong khng
gian a ch logic ny. Vy th mt. m chc nng v a ch t.on hng c th kt hp
hnh thnh mt lnh ngn ( 1-byte ) [ xem hnh 3.1.a ].
Hp ng ca 8051 ch ra kiu nh a ch thanh ghi bng k hiu Rn. trong n
c gi tr t 0 n 7. Th d cng ni dung ca thanh ghi R7 vi thanh cha A, ta
dng lnh sau :
ADD A, R7

v lnh ny c opcode l 00101111B. Nm bit cao 30101 cho bit y l lnh cng v
3 bit thp 111 ch ra thanh ghi R7. Ta c th tham kho pli lc c xc nhn iu
va cp.
C 4 dy thanh ghi lm vic nhng or 1 thi im chi c 1 dy tch cc. Cc
dy thanh ghi chim 32 byte u tin ca RAM d liu trgn chip ( a ch t 00H n
1FH ) v ta dng cc bit 4 v 3 ca t trng v J T'C,T1T *- ~1_L' J~y thanh ghi
tch cc. Mt reset

bng phn cng cho php dy t tch cc cn cc dy khc c chn bng cch
sa i cc bit 4 v 3 ca PSW sao cho ph hp. Th d lnh :
1

Chng 3 : Tm tt tp lnh

47 (g

M*v PSW,

s tch cc dy thanh ghi 3 bng cch set cc bit chn dy thanh ghi ( RS1 v
RSO ) trong PSW ln 1 ( cc bit. ny v tr 4 v 3 ).
)c*ce

n n

lai Register aclrossing Ir.g . AJI A. Kf)!


Biret adoros.'-

(b) Direct addressing (e.g.. ADI) A. direct)


|~

Tf11-------------

Opcode i

J_____I____I____I____I____I_______

(c) Indirect addressing (e.g.. AJI A. R#)


Opcode
Immediate data
fd) Immediate addressing ti.g., ABB A. #55U
Opcode

Re'mlivo offset

(eJ Relative addressing (e.g., SJMP <dest>)

ADDR7-ADDR0 1 1 1 1
AliDlil
Opcode
111
O
1 1 1 1
ApD^S
if) Absolute addressing (e.g., AJMP <dcst>)

ABBA 15-AM Its

111a111

ADDR7-ADDR0

1111

111

(g) Long addressing (e.g.. LJMP <clest>)


Base register
Offset
I PClorDPTRl ]+[ ACC ] = [

Effective address
I

(b) Indexed addressing (e.g., MOVC A.A + PC*

Hnh 3.1 : Cc kiu nh a ch ca 8051 (a) nh a ch thanh ghi (b) nh a chi trc tip (c)
nh a ch gin tip (d) nh a ch tc thi (e) nh a ch tiig i ( ) nh a chi' tuyt
i (g) nh a ch di (h) nh a ch ch s
Register addressing : nh a ch thanh ghi ( th d : ADD A, R )
Direct addressing : nh a ch trc tip ( th d : ADD A, direct )
Indirect addressing : nh a chi gin tip ( th d : ADD A, @R0 )
Immediate addressing : nh a ch tc thi ( th d : ADD A, #55H )
Relative addressing : nh a ch tng i ( th d : SJMP <dest> )
Absolute addressing : nh a ch tuyt i ( th d : AJMP <dest> )
Long addressing : nh a ch di ( th d : LJMP <dest> )
Indexed addressing : nh a chi ch s ( th d : Move A, @A+PC )

48

H vi iu khin 8051

Mt s lnh c bit lin quan n 1 thanh ghi xc nh no nh l thanh cha


A, con tr d liu, ... khng cn cc bit a ch, bn thn opcode ca lnh ch ra
thanh ghi cn thit. Cc lnh c bit lin quan n thanh ghi ny tham chiu n
thanh cha bng k hiu A , con tr d liu bng k hiu DPTR , b m
chng trnh bng k hiu PC , c nh bng k hiu c v cp thanh ghi AB
bng k hiu AB Ly th d :
INC DPTR

l lnh 1-byte, lnh ny cng 1 vo ni dung ca con tr d liu 16-bit. Opcode ca


lnh ny c cho ph lc c.
3.2.2 nh a ch trc tip
Kiu nh a ch trc tip c s dung d truy xut cc bin nh hoc cc thanh
ghi trn chip. Mt byte thm vo tip theo opcode dng e xc nh ia ch ( xem hnh
37T7E ).
Ph thuc vo bit c gi tr v tr ( hay trng s ) cao ca a ch trc tip, mt
trong hai khng gian nh trn chip c chn. Khi bit 7 bng 0, a ch trc tip
trong tm t 0 n 127 ( 00H - 7FH ) v 128 byte thp ca RAM trn chip c tham
chiu. Tt c cc port xut/nhp v cc thanh ghi chc nng c bit, iu khin, trng
thi c gn a ch trong tm t 128 n 255 ( 80H - FFH ). Khi byte a ch theo
sau opcode c ni dung nm trong gii hn ny ( vi bit 7 bng 1 ), thanh ghi chc
nng c bit c truy xut. Th d port 0 v port 1 c gn a ch trc tip l 80H
v 90H.
Ta khng nht thit phi bit a ch ca cc thanh ghi ny, trnh dch hp ng cho
php ta s dng m gi nh vit tt d hiu nh l PO cho port 0, TMOD cho
thanh ghi ch nh thi ( timer mode register ) v.v... Lnh sau y l mt th d cho
kiu nh a ch trc tip :
MOV Pl, A

lnh ny chuyn ni dung ca thanh cha A vo port 1. a ch trc tip ca port 1 l


90H c xc nh bi trnh dch hp ng v trnh dch ny t 90H vo byte 2 ca
lnh. Ngun ca d liu, thanh cha, c xc nh r rng trong.opcode.
Bng cch s dng ph lc c, ta thy lnh va nu trn c m l :
10001001
byte 2 : 10010000

byte 1 : opcode
a ch ca P1 ( 90H )

Chng 3 : Tm tt tp lnh

49 (g

3.2.3 nh a ch gin tip


Lm cch no nhn bit 1 bin khi a chi ca bin c xc nh, c tnh
ton hoc c sa i trong khi mt chng trnh ang chy ? Tnh hung ny pht
sinh khi ta qun l cc vi tr nh lin tip, cc im nhp c nh chi s trong cc,
bng cha trong RAM, cc s. chnh xc hoc cc chui k t. Cc kiu nh a ch
thanh ghi hoc trc tip khng s dng c cho cc tnh hung ny, do vy ta cn c
cc a ch ton hng c bit trong thi gian hp dch.
Gii php ca 8051 l dng kiu nh a ch gin tip. Cc thanh ghi RO v RI
c th hot ng nh l cc con tr ( pointer ) v ni dung ca chng ch ra a ch
trong RAM, ni m d liu c c hay c ghi. Bt c ngha th'p nht ca
opcode ( ca lnh ) xc nh thanh ghi no ( Rp hay RI ) c s dung lm con tr
( xem hnh 3.1.C ). Trong p ng ca 8051, kiu nh a ch gin tip c nhn bit
nh vo k t @ t trc RO hoc Rl. Ly th d nu RI cha 40H v a ch 40H ca
b nh ni cha 55H, lnh :
MOV A, @R1

np 55H cho thanh cha A.


Ta cn n kiu nh a ch gin tip khi ta duyt, cc v tr lin tip trong b
nh. Th d sau thc hin vic tun t xa RAM ni t a ch 60H en 7Flt :
MOV RO, #60H
LOOP: MOV @R0, #0
INC R
CJNE RO, #80H, LOOP ( tip
tc )

Lnh u tin khi ng RO vi ni dung l 60H, a chi bt u cua khi nh


trong RAM; lnh th hai s dng kiu nh a ch n tip nap 00H cho vi tr
c tr bi RO; lnh th ba tng con tr (R ) tr n a ch tip theo v lnh
cui cng kim tra con tr xem kt thc khi nh cha. Vic kim tra s dng
hng s 80H thay v l 7FH v lnh tng xut hin sau lnh di chuyn. iu ny m
bo v tr nli sau cng ( 7FH ) c ghi 00H trc khi kt thc.
3.2.4 nh a ch tc thi
Khi ton hng ngun l mt hng s-ihay v l mt bin ( ngha l lnh s
dngTrgi tr bit trc thi gian hp dch ), hng s Iiy

i) 50

H vi iu khin 8051

c th a vo lnh v y l byte d liu tc thi ( byte thm vo ny c gi tr


bit trc ) ( xem hnh 3.1.d ).
Trong hp ng, 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, cc k hiu v cc ton t. Trnh dch hp ng tnh gi tr v
thay th d liu tc thi vo trong lnh. Th d lnh :
MOV A, #12 np gi tr 12 ( OCH ) vo
thanh cha A.
Tt c cc lnh s dng kiu nh a ch tc thi u s dng hng d liu 8-bit
lm d liu tc thi C mt ngoi l khi ta khi ng con tr' d liu 16-bit DPTR,
hng a ch 16-bit c cn n. Th d :
MOV DPTR, #8000H
l mt lnh 3-byte, lnh ny np hng a ch 8000H vo con tr d liu DPTR.
3.2.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 ( hay cn gi l offset ) l mt gi tri 8-bit c du. Gi tr ny c cng vi
b m chng trnh dtao ra a ch ca lnh tip theo cn c thc thi. Do ta s
dng mt offset 8-bit c du, tm nhy c gii hn l -128 bvte n 127 bvte. Byte
a chi tng i l byte thm vo tip theo bvte opcode ca lnh ( xem hnh 3.1.e ).
010A
0109
0108
0107

Relative
offset
from
address
0102H is "5"

0106
0105
0104
0103
0102

0101
0100

05
80

SJMP 0107H

00FF
Code
memory
I a) Short jump all- id U 1 liinmorv

2043
2042
2041
2040
203F
203E
203D
203C
203B
203A
2039
2038

F6
80

-l
2r
-3
-4
-5
-6
-7
-8
-9
-10-

Code
memory

Relative
offset
from
address
2042H is -10" of
F6H

(b Short jump back

Hnh 3.2 : Tnh offset cho kiu nh a ch tng i (a) nhy ti v ngn (b)
nhy li v ngn

Chng 3 : Tm tt tp lnh

Short jump ahead in memory : nhy ti v ngn Short jump back in memory : nhy li v ngn

Relative offset from address 0102H is 5 : offset tng i t a ch 0102H l 5


Relative offset from address 2042H is -10 ( F6H ) : o f f s e t tng i t a ch 2042H l -10 (
F6H )
Nh vo php cng, b m chng trnh c tng n a nhi t.ViPQ sau
lnh nhy; vy th ia ch mi lin quan n lnh k tip, khng lin quan n a
ch ca lnh nhy ( xem hnh 3.2 ).
Thng thng chi tit ny khng lin quan n ngi lp trnh do bi cc ch
nhy thng c xc nh bng cc nhn v trnh dch hp ng s xc nh offset
tng i tng ng. Th d nu nhn THERE t trc lnh a ch 1040H, lnh
:
SJMP THERE '

trong b nh ti a chi 1000H v 1001H, trnh dch hp ng s gn offset tng


i l 3EH cho byte 2 ca lnh ( 1002H + 3EH = 1040H )
nh a ch tng i c im li l cung cp cho ta m khng ph thuc vo
v tr ( v cc a ch tuyt i khng c dng ), nhng li c im bt li i cc
ch nhy b gii hn trong tm.
3.2.6 nh a ch tuyt '
Kiu nh a chi tuyt i chi c s dng vi cc lnh ACALL v AJMP.
y l cc lnh 2-byte cho php r nhnh chng trnh trong franpr 9.K hipn hnh
ca b nh chng trnh bng cch cung cp 11 bit thp ca ia chi ch, trong 3
bit cao ( A8 - A10 ) a vo opcode v 8 bit thp ( AO - A7 ) thnh lp byte th 2
ca lnh. ( xem hnh 3.1f).
5 bit cao ca a ch ch l 5 bit cao hin hnh trong b m chng trnh, do
vy lnh theo sau lnh r nhnh v ch ca lnh r nhnh phi trong cng 1 trang
2K, bi v All - A15 khng thay i ( xem hnh 3.3 ). Ly th d nu nhn THERE
t trc lnh da chi Ui<'46H, lnh :
AJMP THERE

------------------

trong b nh ti a ch 0900H v 0901H, trnh dch hp ng s m ha lnh nh


sau :
11100001

byte 1 ( A10 - A8 + opcode )

01000110

bvte 2 A7 - AO )

Cc bit c gch di l 11 bit thp ca a ch ch, 0F46H =


0000111101000110B. Nm bit cao trong b m chng trnh s khng

H vi ipu khin 8051

thay i khi lnh trn c thc thi. Ltu V l lnh AJMP v ch nhy n u
trong 1 trang 2K gii hn bi 0800H 0FFF1I (xem hnh 3.3), v do vy c 5 bit
a chi cao nh nhau.
a ch tuyt i c im li l lnh ngn (. 2-byte ) nhng c im bt li l
ch b gii hn tm a chi v cung cp cho ta m ph thuc vo v tr.
AO

F!- r~ ----------F80U

11 bits determine tho address within a 2K pae


(b)Th(* upper fi hits in the program counter
remain the same. The lower bits are replatvil by
the bits supplied in the instruction.

Within any 2K,


32 X 2K = 64K
page, only /
2K payi the lower 3 1 l 110(1
bits change <<FFK
2K pa (if 1

A15

A10

5 hits determine tho


2K page*

081)1
<)7bT2K pilfir (1

',i2 2K pact's

Hnh 3.3 : M lia lnh


dng kiu inh a ch

noun

tuyt i (a) b nh c
2K, 5 bit a ch cao khng
i.

d|i ilmli'

chia thnh nhiu trang 2K (b) Bn trong mt trang


thay

Within any 2 K page, only the lower 11 bits change : trong mt trang 2 K bt k chi c 11 bit thp
thay i
5 bits determine the 2 K page : -bit xc nh trang 2 K
11 bits determine the address within a 2 K page : 11-bit xc nh a ch trong trang 2 K.
64 K memory map divided into 32 X 2 K pages : bail b nh 64 K c chia thnh 32 trang 2
K.
The upper 5. bits in the program counter remain the same. The lower bits are replaced by the bits
supplied in the instruction : -bit cao trong thanh ghi PC gi khng di. Cc bit thp c thay
bng cc bit cung cp bi lnh.

3.2.7 nh a ch di
Kiu nh a ch di ch c dng cho cc lnh LCALL v LJMP. Cc lnh 3byt.e ny cha a ch ch 16-bit ( 2 byte : byte 2 v byte 3 ) ca lnh ( xem hnh
3.1.g ).
Li ch ca kiu nli a ch ny l s dng ht ton b khn# gian nh chng
trnh 64K, nhng li c im bt li l lnh di n 3-byte v ph thuc vo v tr.

Chng 3 : Tm tt tp lnh

53 H

Vic ph thuc vo v tr c xem l bt li do bi chng trnh khng th


c thc thi mt a chi khc. Ly th d nu chng trnh bt u 2000H v
c mt lnh nh l LJMP 2040H, chng trnh ny khng th di chuyn n 4000H
chng hn. Lnh LJMP s vn
nhy n a ch 2040H v
" Li l
vi trng
sau
kh
chng
trnh c di chuvn.

3.2.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 MOVC ( xem hnh 3.1.h ). Trong nhiu ng dng,
cc bng nhy hoc cc bng tm kim c to ra d dng bng cch s dng kiu
nh a chi ch s. Cc th d c cho ph lc c vi cc lnh MOVC A,
@A+<base-reg> v JMP @A+DPTR
3.3

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
Ph lc A gip ta tham chiu nhanh tt c cc lnh ca 8051 c phn
nhm.
3.3.1 Cc lnh s" hc
Cc lnh s' hc cng c phn loi nh trong ph lc A. Do c th c 4 kh
nng nh a ch, lnh ADD A cn c vit di cc dng
ADD A, 7FH

[nh a ch trc tip] [dnh

ADD

da ch gin tip] [dnh da

A,

@R0 )

ch thanh ghi] [dnh a ch

ADD A, R7 .

tc thi]

ADD
A, #35H
T't
c cc
lnh s hc cj;hc thi trong mt chu k my ngoi tr lnh INC DPTR
c thc thi trong hai chu k my, cc lnh MUL

sau :

54

H vi iu khin 8051

AB v DIV AB thc thi trong 4 chu k my ( lu l mt chu k my di 1 ^sec


nu 8051 hot dng vi xung clock 12 MHz ).
8051 cung cp kiu nh a ch linh hot cho khng gian nh ni. Mt v tr bt
k u c th tng hay gim bng cch dng kiu nh a ch trcjtip m khng
cn qua trung gin thanh cha A. Ly th d uu v tr 7FH ca RAM ni cha gi
tr 40H, lnh :
INC 7FH

tng gi tr ti a ch 7FH thnh 41H v t kt qua ti 7FH.


8051 cng c lnh INC thao tc trn COI1 tr d liu 16-bit. Do con tro d liu
cha 16-bit a ch ca b nh ngoi, vic tng ni dung con tr ny l mt c
trng thng s dng. Khng may cho ta l khng c lnh gim ni dung con tr d
liu v ta phi dng n mt chui lnh sau thay cho cliu thiu st ny :
DEC DPL
MOV R7, DPL CJNE R7,
#0FFH, SKIP DEC DPH ;
gim byte thp ca DPTR

;ct vo R7 ; so snh vi 0FFH ?


; bng : gim byte cao ca DPTR ;
khng bng : b qua

SKIP : ( tip tc )

Cc byte thp v byte cao ca DPTR phi c gim ring r trong


byte cao ( DPH ) chi c giam 1 nu byte thp ( DPL ) trn t 00H qua FFH.
Lnh nhn MUL AB nhn d liu 8-bit cha trong thanh ghi B vi ni dung ca
thanh cha A v dt kt qua l-bit trong cap thanh ghi BA ( thanh ghi B cha byt.e cao.
thanh ('ha A cha bvt(' th.ip ).
Lnh DIV AB chia ni dung thanh ghi A cho (l Iicii cha trong thanh gi B,
t.hng s 8 bit Ciit trong thanh iln.i A V.I Ilu' .-<) 8-l)t ct t.rong thanh ghi B. Ly th
d IIII ni dung rua thanh clm.i la 'J.r> t l''Il v thanh ghi B rhn 6 ( 06H ). lnl) sau ;
DIV AB

chia 25 cho 6, kt qua 4 ct trong thanh cha A v d s 1 (t trong t.hunh ghi B.


Vi s BCD, cc lnh ADD v ADDC phi dc tip theo bi lnh DA A dm
bo rng kt qu trong t.m s BCD. Lu l lnh hiu nh DA A s khng bin i
s nh phn thnh BCD m chi to ra 1 kt qua hp l v ta thng gi l hin nh
trong php cng 2 s BCD.

Chng 3 : Tm tt tp lnh
Ly th d nu thanh cha A cha gi tr BCD l 59 (59H), chui lnh sau :
ADD A, #1 DA A

trc tin cng 1 vi ni dung thanh cha A, kt qu l 5AH. Kt qu ny c lnh


th hai hiu nh thnh gi tr BCD hp l l 60 ( 60H ) v ct vo thanh cha A.
3.3.2 Nhm lnh logic
Nhm lnh logic ca 8051 thc hin cc php.ton logic ( AND, OR. XOR v NOT
) trn cc byte d liu v thc hin trn tng bit c cng gi tr v tr ( trng s ). Nu
thanh cha A cha gi tr 00110101B, lnh AND logic sau dy :
ANp A, #01010011B

s t.o ra kt qu l 00010001B ct trong thanh cha A. iu ny c minh ha nh


sau :
01010011

( d iiu tc thi )

AND 00110101

( gi tri ban u cha trong A )

00010001

( kt qu cha troug A )

Cc kiu nh a ch cho cc lnh logic cng ging nh cc kiu nh a chi cho


cc lnh s hc, lnh AND logc c th c cc dng sau :
AN^ A, 55H

nh a chi trc tip )

AN&-A, @R0

nh a ch gin tip )

ANb~ A,'R6

nh a chi thanh ghi ) v

AN^" A, #33H

nh a ch tc thi )'

Tt c cc lnh logic s dng thanh cha A lu mt ton hng s c thc thi


trong 1 chu k my, ngc li nu s dng thanh ghi khc hoc byte nh thay cho thanh
cha A, lnh phi c thc thi trong 2 chu k my.
Cc php ton logic c th c thc hin trn mt byte bt k trong b nh d
liu ni m khng cn qua trung gian thanh cha A. Lnh XRL direct, #data gip ta
nhanh chng v d dng o mc logic cc bit ca port. Th d lnh sau :
XRL Pl, #0FFH

is 56

H vi iu khin 8051

thc hin mt thao tc c - sa - ghi. 8 bit ca port 1 c c, sau tng bit c


XOR vi cc bit tng ng ( cng v tr ) ca d liu tc thi. V 8 bit ca d liu tc
thi u l 1, kt qu l tng bit ca port 1 c ly b ( v A 1 = A ). Kt qu ny
c ghi tr li port 1.
Cc lnh quay ( RL A v RR A ) dch thanh cha A qua tri hoc qua phi 1-bit.
Vi lnh quay tri ( RL A Tbit c gi tri vitr ln nht MSB c a vo v tr c gi
tr thp nht LSB. Vi lnh quay phi ( RR A ), bit c gi tr v tr thp nht LSB c
a vo v tr c gi tr ln nht MSB. Cc lnh RLC A^yauRRC A l cc lnh quay 9bit s dng thanh cha A v c nh CY trong thanh ghi PSW. Th d nu c nli CY
cha 1 v thanh cha A cha 00H, lnh sau :
RRC A

s cho kt qu l : c nh CY cha 0 v thanh cha A c ni dung l 80H. iu ny c


ngha l c nh CY c a n ACC.7 v ACC.O c a n c nh.
Lnh SWAP A trao i na thp 4-bit vi na cao 4-bit trong thanh eha A &i
nhan. Lnh ny thng dng trng cac php'toiTs BCD. Lay~EHT9iTneirthanh cha
A cha mt s nh phn bit v c gi tr nh hn IOOQO), ta c th bin i s nh
phn ny thnh s BCD bng cc dng lnh nh sau :
MOV B, #10

SWAP A ADD A, B

Vic chia mt s' cho 10 trong hai lnh u tin to ra digit chc trong na thp ca
thanh cha A v digit n v trong thanh ghi B. Lnh SWAP v ADD di chun digit
chc n na cao ca thanh cha A v digit n v vo na thp ca thanh cha ny.
3.3.3 Cc lnh d chuyn d liu
Trong RAM ni
Cc lnh di chuyn d liu bn trong khng gian nh ni c thc thi trong 1 hay
2 chu k my. Dng ca lnh nh sau :
MOV <destination>, <source>

Lnh trn cho php d liu c di chuyn gia cc v tr ca RAM ni hoc cc


thanh ghi chc nng c bit SFR m khng cn qua trung gian thanh cha A. Cn nh
l 128 byte cao ca RAM d liu ( i vi

Chng 3 : Tm tt tp lnh

8032/8052 ) ch c truy xut bng kiu nh a ch gin tip v cc thanh ghi


chc nng c bit ch c truy xut bng kiu nh a ch trc tip.
Mt c trng lm cho cu trc ca MCS-51 khc vi cu trc ca hu ht cc b vi
x l l vng Stack thng tr trong RAM trn chip ( RAM ni ) v tng dan-iEfi nhn
trn ra-b nh<lpK~cc ia chi cao hn. Lnh PUSH trc tin tng con tr stack
( SP ) ri sa chp byte vo trong Stack. Cc lnh PUSH v POP s dng kiu nh a
ch trc tip nhn bit byte c ct hoc c phc hi nhng bn thn Stack c
truy xut bi kiu nh a ch gin tip s dng con tr Stack SP.
iu ny c ngha l vng satck c th s dng 128 byte cao ca b nh RAM ni
trn 8032/8052. 128 byte cao ny khng c trong 8031/8051. Vi cc b vi iu khin
ny, nu ni dung ca SP vt qu 7FH ( 127 ) ( ngha l ni dung ca SP ln hn 7FH
), cc byte c PUSH s b mt cn cc byte c POP khng c xc nh.
Cc lnh chuyn d liu cn bao gm lnh MOV 16-bit dng khi ng con tr
d liu DPTR cho mc ch tm kim cc bng trong b nh chng trnh hoc cho
mc ch truy xut b nh d liu ngoi 16- bit.
Lnh hon i ni. dung XCH c s dng hon i ni dung ca thanh cha A
vi ni dung ca byte c ch ra trong lnh. Dng lnh nh sau :
XCH A, <source>

Lnh trn lm cho thanh cha A v byte c nh a ch trao i d liu V


nhan Vic trao i mt digit s dng lnh c dng :
XCHD A, @Ri

cng hot ng tng t, tuy nhin ch c cc na thp ca cc byte c trao i vi


nhau. Th d nu thanh cha A cha F3H, RI cha 40H v ti a ch 40H trong RAM
ni cha 5BH, lnh :
XCHD A, @R1

cho kt qu l A cha FBH v ti a ch 40H trong RAM ni cha 53H.


Trong RAM ngoi
Vi cc lnh m vic di chuyn d liu cho php d liu c di chuyn gia RAM
ni vi RAM ngoi, ta phi s dung kiu inh ia ch gin tip. Cc a ch gin tip
c xc nh bng cch dng a chi 1-

1158

H vi iu khin 8051

hoc a ch 2-byte ( nh @DPTR ). im bt li khi dng a ch 16-bt l tt c 8


bit ca port 2 phi c dng nh byte cao ca bus a ch v iu ny s khng cho ta
s dng port 2 lm port xu't/nhp. Ngc li cc a ch 8-bit cho php ta truy xut
n mt vi KB ca RAM m khng cn s dng ton b port 2 ( xem mc Truy xut
b nh d liu ngoi chng 2 ).
Tt c cc lnh di chuyn d liu hot ng trn b nh ngoi c t.hc thi trong 2
chu k my v s dng thanh cha lm ton hng ngun hoc ton hng ch.
Cc tn'liu dng truy xut. RAM ngoii ( KI) v WR ) ch tch cc t.rong khi
liih MOVX c t-hr till. Bnh thng cc tn hiu ny khng tch CC ( mc cao )
v nu b nh ngoi khng c s dung,cc ngJiD v WK c chc nng nh rc
ng xut / nhp. ^
Cc bng tm kim
C hai lnh di chuyn d liu dnh cho vic c cc bang tm kini trong b nh
chng trnh. Do bi cc lnh ny truy xut b nh chng trnh, cc bng tm kim chi
c th c c v khng c cp nht. M gi nh ca lnh l MOVC ( move
constant : di chuyn hang ). MOVC s dng hoc b m chng trnh hoc con tro d
liu lm thar hi nn v thanh cha A cha a dll o f f s e t. Lnh sau :
c th truy xut mt bng 256 im nhp c nh s t 0 u 255. S cua im nhp
MOVC
A+DPTR
yu cu c
np A,
cho
thanh cha A v con tr d liu

MOV c A, @A+PC

cng hot ng tng t, ngoi tr y b m chng trnh c (lng rha a


chi lin v bang c truy xut nh vo mt chng trnh con, Trc tin s ca im
nhp yu cu c np cho thanh cha A. sau chng trnh con c gi. Chui
lnh cho php khi ng v gi c th l :
MOV A, ENTRY-NUMEER CALL
LOOK UP

INC A

LOOK-UP:

Move A, @A+PC

Chng 3 : Tm tt tp lnh

RET

TABLE :
DB data, data, data..........
Bng c nh ngha ngay sau lnh RET trong chng trnh. Lnh tng c cn
n do PC tr ti lnh RET khi lnh MOVC c thc thi. Vic tng ni dung thanh
cha s b qua lnh RET..
3.3.4 Cc nh x l bit
B x l ca 8051 cha 1 b x l logic trn bit cho php ta thc hin cc php
ton n bit. RAM ni cha 128 bit c nh a ch v khng gian SFR h tr thm
n 128 bit c nh a ch. Tt c cc ng port u c a ch bit v mi ng c
th c x l nh l mt port n bit ring r. Cc lnh truy xut cc bit ny khng
chi l cc lnh r nhnh c iu kin m cn l cc lnh di chuyn, set, xa, ly b, OR
v AND. Cc thao tc trn bit nh vy ( mt trong cc c trng mnh ca MCS-51 )
khng d dng c c trongcc cu trc khc, cc cu trc s dng cc thao tc hng
byte.
Mi thao tc truy xut bit u s dg kiu nh a ch trc tip vi cc a ch bit
t 00H n 7FH trong 128 v tr thp, v t a chi 80H n FFH trong khng gianSFR.
Cc a ch bit 128 v tr thp thuc cac~byte c a ch t J20H <fenT2FH c
nh s lin tc t bit 0 ca byte a ch 20H (bit 00H) n bit 7 ca byte a ch
2FH (bit 7FH).
Cc bit c th c set v xa bng 1 lnh. iu khin n bit c dng cho nhiu
thit b xut/nhp, bao gm xut ra r le, ng c, cn dy, cc LED, mch ci bo
ng, loa hoc nhp t cc chuyn mch hoc cc b ch th trng thi. Nu c mt
mcL ci bao ng ni vi bit 7 ca port 1, t.a c th tc ng mch ci bng cch set
bit ca port :
SETB P17 hoc tt ci bng cch xa bit cua
port :

CLR P1 7

Trinh dch hp ng s bin i k hiu P1.7 thnh a ch bit l 97H. Th d sau cho
php ta di chuyn 1 c vo mt chn ca port :
MOV c, FLAG

MOV Pl.o, c
Trong th d trn, FLAG l tn ca 1 bit c nh a ch trong 128 v tr thp hoc
trong khng gian SFR. Mt ng xut/nhp ( th d trn l bit 0 ca port 1 ) c
set hoc xa ph thuc vo bit c c gi t,ri 1 hay 0. Bit nh trong PSW c dng nh
mt thanh cha n bit

IS 60

H vi iu khin 8051

ca b x l logic trn bit, cc lnh n bit lin quan n bit nh k hiu l c l cc


lnh c bit lin quan n c nh ( nh l CLR c ). Bit nh cng c mt a ch trc
tip v bit ny c lu trong thanh ghi PSW, thanh ghi ny c nh a ch tng bit.
Cng ging nh cc thanh ghi khc c nh a chi tng bit trong khng gian
SFR, cc bit ca PSW c m gi nh m trnh dch hp ng s chp nhn thay cho a
chi bit. M gi nh ca c nh l CY c nh ngha thay cho a ch bit 0D7H. Ta
hy kho st 2 lnh sau :
CLR c
CLR CY

C 2 u c cng cng dng, tuy nhin dng lnh trc l lnh 1- byte trong khi
dng lnh sau l lnh 2-byte. Trong dng lnh sau byte th 2 l a ch trc tip ca bit
c xc nh - c nh.
Cc lnh logic trn bit bao gm c lnh ANL v ORL nhnp khng bao gm lnh
XRL. Nu ta cn XOR 2 bit, BIT1 v BIT2, v kt qu ct trong c nh, cc lnh sau
c s dung :
MOV c, BIT1
JNB BIT2, SKIP
CPL c
SKIP :

Trc tin BIT1 c np cho c nh. Nu BIT2 = 0, th c cha kt qu ( ngha


l BIT1 BIT2 = BIT1 nu BIT2 = 0 ). Nu BIT2 = 1, c cha kt qu l b ca c
nh. Vic ly b c hon tt php ton XOR.
Chng trnh trong th du trn s dung lnh JNB, mt trong chui lnh kim tra bit.
Cc lnh ny s nhv nu bit c nh a chi c set bng 1 l_jih l lnh JC, JB,
JBC ) hoc nu bit c nh a ch khng c set ( JNC, JNB ). Trong th d trn
nu BIT2 = 0, lnh CPL c c b qua. Lnh JBU ( nhy nu bit c set, sau xa
bit ) thc hin vic nhy nu bit c nh a ch c set v cng xa bit; vy th mt
c c th'c kim tra v xa bng 1 lnh.
Tt c cc bit ca PSW u c th nh a ch trc tip, do vy bit chn l hoc cc
c a mc ch cng hp l i vi cc lnh kim tra bit.
3.3.5 Cc lnh r nhnh
Trong tp lnh ca 8051 c nhiu lnh iu khin lung chng trnh, bao gm cc
lnh gi mt th tc v quay v t mt th tc, r nhnh c iu kin hoc khng r
iu kin. C/c kha nng ny c ci tin hn na bi 3 kiu nh a chi cho cc lnh
r nhnh chng trnh.
C 3 bin th ca lnh nhy : SJMP, LJMP v AJMP ( s dng kiu nh a ch
tng i, di v tuyt, i ).

('hng : Tm tt tp l nil

61 S5.

Trnh dch hp ng ca Intel ( ASM51 ) cho php s dng m gi nh JMP nu


ngi lp trnh khng quan tm n cc bin th. Trnh dch hp ng ca cc cng ty
khc c th khng h tr c tnh ny. JMP tng qut dch thnh AJMP nu ch nhy
n khng cha tham chiu thun v trong mt trang 2K. Ngc li, JMP c dch
thnh LJMP. Lnh CALL cng hot ng theo cch ny.
Lnh SJMP xc nh a chi ch l offset tng i nh bn n trc y khi
cp n cc kiu nh a ch. V lnh di 2-byte ( bao gm mt opcode cng vi
mt offset tng i 8-bit ), khong cch nhy c gii han t -128 byte n +127
byte so vi a ch ca lnh theo sau lnh SJMP.
Lnh LJMP xc nh a ch ch l hng s 16-bit. V lnh di 3- byte ( bao gm 1
opcode cng vi 2-byte a ch ), a chi ch c th bt. c u trong khng gian nh
chng trnh 64K.
Lnh AJMP xc inh ia chi ch l mt hng s 11-bit. Cng nh lnh SJMP, lnh
AJMP cng di 2 byte nhng c m ha khc. Byte opcode s cha 3 trong 11 bit a
ch v byte 2 cha 8 bit thp ca ia ch dch. RK~Knrlfc^tKfcthi, 1 bit
nayjfchay ch cho 11 bit thp trong PC cn 5 bit cao ca PC vn gi nguyn. a ch
ch do vy ph^i trong cng mi trang 2 K vllnh theo sau lnh AJMI*. Do ta c
khng gian nh chng trnh l 64 K, ta c 32 trang v mi trang bt u a ch l
bin ca 2 K ( nh l 0000H, 0800H, 1000H, 1800H, ... cho n F800H : xem hnh 3.3
Trong mi trng hp ngi lp trnh xc nh a ch ch cho trnh dch hp ng
theo cch thng thng nh l nhn hoc l 1 hng s 16- bit. Trnh dch hp ng s t
a ch ch theo ng khun dng ca tng lnh. Nu khun dng yu cu bi lnh
khng c h tr khong cch dng xc nh a ch ch, mt thng bo a ch
ch ngoi tm s c a ra.
Cc bng nhy
Lnh JMP A+DPTR h tr cc thao tc nhy ph thuc vo trng hp c th
cho cc bng nhy. Ria ch ch c tnh thi im thc thi lnh l tng ca ni
dung thanh ghi DPTR 16-bit vi ni dung

S) 62

H vi iu khin 8051

ca thanh cha A. DPTR c np a ch ca bng nhy v thanh cha ng vai


tro ca mt thanh ghTchi so. Th du neu c 5trng htP dc y cu, mt gi tr
t 0 n 4 c np cho thanh cha A v mt nhy cho trng hp tng thch
c thc hin nh sau :
MOV DPTR, #JUMP_TABLE
MOV
RL
JMP A+DPTR

Lnh RL A trn bin i ch s ( 0 - 4 ) thnh 1 s chn trong tm t 0 n 8


v mi im nhp trong
bng nhy l 1 a ch 2-byte :
JMP_TABLE :

AJMP CASEO

AJMP CASE1
AJMP CASE2
AJMP CASE3

^ Chng trnh con v ngt


C 2 bin th cho lnh CALL : ACALL v LCALL s dng kiu nh a ch
tuyt i v di. Cng nh lnh JMP, m gi nh CALL c th c s dng vi
trnh dch hp ng ca Intel nu ngi lp trnh khng quan tm n cch nh a
ch. C 2 lnh trn u ct ni dung ca b m chng trnh vo stack v nap cho
b m chng trnh a chi~5ir dc xtTnh trong lnh. Lu l PC s cha
ia ch ca lnh theo sau nh CALL khi ni dung thanh ghi ny c ct v .0
stack. Khi np vo stack, byte thp np trc v byte cao np sau. Cc byte c
ly ra t
stack theo trnh t ngc li. Ly th d nu lnh LCALL c cha tron g h nh
chrmg inh cc 4ia chi l 1 onfpM nnp.T v con tr stack

(.a; Iip UU CI11 quay v 1003H vo stack ( t 03H ti a ch


) ni dung ca con tr stack by gi l 22H

(C) nnay uen cnuoug innh con bng cch np cho PC a ch cha trong byte 2 v byte
3 ca lnh.
Cc lnh LCALL v ACALL cng c cc hn ch trn a ch ch nh cc lnh
LJMP v AJMP ( cp trn ).
Cc th tc cn c kt thc bng lnh RT, lnh ny tr vic thc thi chng

('hng : Tm tt tp l nil

63 S5.

trnh tr v lnh theo sau lnh CALL. Khng c iu g b n v cch m lnh RET
tr iu khin v cho chng trnh chnh. n

Chng 3 : Tm tt tp lnh

gin l lnh ny ly li ( pop ) 2 byte sau cng ra khi stack v nap chng cho b m
chng trnh. Mt qui lut ch yu cho vic lp trnh vi cc th tuc l chng lun lun
c goi bi lnh CALL v lun lun tr iu khin v chng trnh gi bi lnh RET.
Cc thao tc nhy vo KocT nh^ra khi 1 th tc bng 1 cch khc no thng
lm ri vng stack v lm cho chng trnh b dng.
Lnh RETI tr iu khin v chng trnh gi t 1 trnh phc v ngt ( ISR :
interrupt Service routine ). im khc nhau gia RET v RETI l RETI bo hiu cho h
thng iu khin ngt rng qu trnh x l ngt xong. Nu khng c mt ngt no
duy tr trong thi gian RETI c thc thi, RETI hot ng ging RET. Cc ngt v
lnh RETI s c cp chi tit trong chng 6.
Nhy c iu kin
8051 cung cp cho ta nhiu lnh nhy c iu kiu. Tt c cc lnh ny xc nh a
ch ch bng kiu nh a ch tng i v cng b gii hn khong cch nhy t
-128 byte n +127 byte k t lnh theo sau lnh nhy c iu kin. Tuy nhin cn lu
l ngi lp trnh s xc nh a ch ch theo cng cch vi cc lnh nhy khc bng
cch dng nhn hoc bng s 16-bit. Trnh dch hp ng s thc hin cc vic cn li.
Khngco btT trong SW. Cc lnh JZ v JNZ kim t liu trong tharih cha cho iu
kin ny.

ijnh DJNZ ( gim v nhy nu khc khng ) dnh cho iu khin lp vng. ^D
thc thi 1 vng lp N ln, ta np mt byte s m N cho mt thanh ghi v kt thc vng
lp vi DJNZ tr ti im bt u vng lp. Th d di y c N=10 :
MOV R7,#10 LOOP: ( bt u vng
lp )

( kt thc vng lp ) DJNZ R7,


LOOP (tip tc )

Lnh CJNE ( so snh v nhy nu khng bng ) cng dnh cho vic
iu khin vng lp. Hai byte cxac nh trng trng ton hng ca lnh v
vic nhy ch c thc thi nu 2 byte khc 0. Th d nu 1 k t va c c
vo thanh cha A t port ni tip v ta mun nhy n

I]64

H vi iu khin 8051

1 lnh c nhn bit bi nhn TERMINATE nu k t l Control-C ( 03H ), cc


dng lnh sau c s dng :
CJNE A, #03H, SKIP
SJMP TERMINATE
SKIP :

V thao tc nhy ch xut hin nu thanh cha A cha m ca Control-C, mt


nhn SKIP ( b qua ) c dng b qua vic kt thc lnh nhy ngoi tr khi m
yu cu c c. Lnh trn cn c ng dng trong cc php so snh ln hn hay
nh hn. Hai byte trong trng ton hng l cc s' nguyn khng du. Nu bvte
u nh hn byte th hai, c nh c set ln 1- Nu byte u ln hn hoc bng
byte th hai, c nh c xa. Ly th d nu ta mun nhy n BIG.._ nu gi tr
trong thanh cha A ln hn hoc bng 20H, cc ch th sau c dng :
CJNE A, #20H, $+3 I

JNC BIG V

>

ch nhy cho lnh CJNE c xc nh l $+3. Du $ l 1 k hiu^ ca trnh


dich h ng biu thi ia chi ca lnh hin hnh. V CJNE l lnh 3-bvte. $+3 l
a ch ca lnh tip theo, JNC. Mt khc, lnh CNE theo sau bi lnh JNC khng
quan tm n kt qu so snh. Mc ch duy nht ca vic so snh l set hay xa
c nh v lnh JNC quyt nh nhy hay khng nhy. Th d ny l mt th hin
trong d 8051 tip cn vi 1 tnh hung lp trnh tng qut mt cch vng v hn so vi
hu ht cc b vi x l, tuy nhin, nh s c trnh by trong chng 7, vic s
dng cc macro cho php ta c cc chui lnh mnh, nh th d trn chng hn,
c cu trc v thc thi bng cch dng mt m gi nh duy nh't.

You might also like