Professional Documents
Culture Documents
Cac TD Minh Hoa Tap Lenh 8051
Cac TD Minh Hoa Tap Lenh 8051
Khoa TBMT
GVPT: H Trung M
Cc TD minh ha tp lnh 8051 (phn c thm ca VXL-chng 3)
Ch : Cc TD sau s trnh by theo th t gii thiu cc nhm lnh trong sch VXL, nh arith01.asm ch
TD 1 vi nhm lnh s hc, v 1 nhm lnh c th c nhiu TD minh ha.
TD 1: Minh ha cc php ton s hc trn s nh phn: ADD, ADDC, SUBB, INC, DEC, MUL, v DIV
; TD: arith01.asm
; nh ngha cc hng s dng trong chng trnh
NUM1
NUM2
NUM2M
BIN16_1
BIN16_2
SUM16M
DIFF16M
TEST
; Th
; Thu
; Thu
; Th
; Th
; Th
EQU
EQU
EQU
EQU
EQU
EQU
EQU
25
-17
20h
2578
1289
22H
24H
; = 19H
; = EFH
; a ch IRAM (RAM ni) c tr s bng NUM2
; = 0A12H
; = 0509H
; a ch IRAM cha tng 2 s nh phn 16 bit
; a ch IRAM cha hiu 2 s nh phn 16 bit
; = BIN16_2 - BIN16_1 = -1289 = FAF7H
EQU 1289-2578 ; = FAF7H
org 0
lnh ADD vi ton hang 8 bit ( ton hng th 2 la hng s)
MOV A,#NUM1
ADD A,#NUM2
; A <- A + NUM2 = 25 + (-17) = 8 = 0000 1000
; nh hng n cc c:
; lc ny PSW = C1h = 1100 0001 (tng ng cc bit C,AC,F0,RS1,RS0,OV,-,P)
; Khi cng nh phn cho C = 1, AC =1 (c nh bit 4), RS1=RS0=0 sau khi RESET
; OV = C XOR CMSB = 1 XOR 1 = 0, P = 1 do so bit 1 trong ACC l l
; Ch : Chng trnh m phng TS Controls Emulator 8051 tnh sai OV!!!
lenh ADD voi toan hang 8 bit ( toan hang thu 2 la thanh ghi B)
MOV A,#NUM1
MOV B,#NUM2
ADD A,B
; A <- A + B = 25 + (-17) = 8
lenh ADD voi toan hang 8 bit ( toan hang thu 2 la thanh ghi da dung Rn)
MOV A,#NUM1
MOV R0,#NUM2
ADD A,R0
; A <- A + R0 = 25 + (-17) = 8
lnh ADD vi ton hang th 2 l 1 byte trong b nh ni
MOV NUM2M,#NUM2
MOV A,#NUM1
ADD A,NUM2M ; A <- A + (NUM2M) = 25 + (-17) = 8
lnh ADD vi ton hang th 2 l 1 byte trong b nh ni c pointer l R0
MOV R0,#NUM2M
MOV A,#NUM1
ADD A,@R0 ; A <- A + Mem(R0) = 25 + (-17) = 8
lnh ADD vi ton hang th 2 l 1 byte trong b nh CODE (b nh chng trnh)
MOV DPTR,#NUM2C ; Lay dia chi cua bien NUM2C
CLR A
MOVC A,@A+DPTR
ADD A,#NUM1 ; A <- NUM2 + NUM1 = -17 + 25 = 8
; Thu lenh ADD voi toan hang BCD 2 digit ( toan hang thu 2 la thanh ghi B)
MOV A,#BCD1_1
MOV B,#BCD1_2
ADD A,B
; A <- A + B = 25H + 17H = 3CH
DA A
; A = 42H
; Thu lenh ADD voi toan hang BCD 2 digit ( toan hang thu 2 la thanh ghi da dung Rn)
MOV A,#BCD1_1
MOV R0,#BCD1_2
ADD A,R0
; A <- A + R0 = 25H + 17H = 3CH
DA A
; A = 42H
; Thu lenh ADD voi toan hang thu 2 la so BCD 2 digit trong bo nho noi
MOV BCD1_2M,#BCD1_2
MOV A,#BCD1_1
ADD A,BCD1_2M
; A <- A + (BCD1_2M) = 25H + 17H = 3CH
DA A
; A = 42H
; Thu lenh ADD voi toan hang thu 2 la 1 byte trong bo nho noi co pointer la R0
MOV R0,#BCD1_2
MOV A,#BCD1_1
ADD A,@R0
; A <- A + Mem(R0) = 25H + 17H = 3CH
DA A
; A = 42H
; Thu lenh ADD voi toan hang thu 2 la byte trong bo nho CODE
MOV DPTR,#BCD1_2C ; Lay dia chi cua bien BCD1_2C
CLR A
MOVC A,@A+DPTR
ADD A,#BCD1_1
; A <- BCD1_2 + BCD1_1 = 25H + 17H = 3CH
DA A
; A = 42H
; Thu lenh ADD va ADDC -> cng 2 s BCD 4 k s
; Ket qua cat vao o nho du lieu noi SUM16M
MOV A,#LOW BCD4_1 ; Lay byte thap cua hang so 16 bit
ADD A,#LOW BCD4_2
DA A
MOV SUM4M+1,A
MOV A,#HIGH BCD4_1 ; Lay byte cao cua hang so 16 bit
ADDC A,#HIGH BCD4_2 ; Phai tinh den Carry cua phep cong truoc
DA A
MOV SUM4M,A
; Ket qua la 10245H voi C=1, (40H)=02H, va (41H) = 45H
; Chu y la DA A chi co
; TD sau cho thay DA A
MOV A,#25H
MOV B,#17H
CLR C
SUBB A,B
; A
DA A
; A
SJMP $
BCD1_2C: DB BCD1_2
END
TD 3: Minh ha cc lnh ANL, ORL, XRL (AND, OR, XOR vi cc ton hng 8 bit)
; TD: logic01.asm
NUM1 EQU 15H ; 00010101B
NUM2 EQU 3AH ; 00111010B
; Thu lenh ANL voi toan hang 2 la hang so
MOV A,#NUM1
ANL A,#NUM2 ; A = 15H AND 3AH = 10H
; Thu lenh ANL voi toan hang 2 la byte o bo nho du lieu noi
MOV 20H,#24 ; (20H) = 24 = 18H
ANL A,20H ; A = 10H AND 18H = 10H
; ANL tuong tu voi cac toan hang 2 co dinh dia chi la REG, INDIRECT
; Ap dung
;(AND voi
MOV
ANL
ANL de giu lai cac bit can thiet (AND voi 1) va xoa cac bit khong can thiet
0)
A,#NUM2 ; A =3AH
A,#0FH ; A = 0AH = 4 bit thap
; A = 0000_1111B = 0FH = 15
; A = 1000_0111B = 87H
; A = 1100_0011B = C3H
; A = 0000_1111B = 0FH = 15
; A = 0001_1110B = 1EH = 30 = 15 x 21
; A = 0011_1100B = 3CH = 60 = 30 x 2 = 15 x 22
= 0000_1111B = 15
; C <- 1
= 1000_0111B = 87H va C = 1
= 0000_1111B = 15
; C <- 1
= 0001_1110B = 1EH va C = 0
dau A cho 2
= 15
= 7 = 15/2
voi n = 1 -> 8
7 = 31 div 4
; Ap dung
MOV
MOV
RRC
; Th lnh SWAP
MOV A,#47H
SWAP A
sjmp $
; A = 74H
DIV2EXPN:
; Chng trnh con chia nguyn khng du cho 2^n
RR A
CLR ACC.7
DJNZ R7, DIV2EXPn
RET
END
2 nh trong RAM ni
R1 = 15H
R7 = 27H
R7 = 15h
R1 = 27H
sjmp $
END
EQU
PSW.1 ; Dng thm bit ny lm bin tm ( c F0)
EQU
P1.0
EQU
P1.1
EQU
P1.2
; NOTX = NOT(X)
EQU
P1.3
; = X AND Y
EQU
P1.4
; = X OR Y
EQU
P1.5
; = X XOR Y
EQU
P1.6
; = X NAND Y
EQU
P1.7
; = X NOR Y
P1,#03H ; Dat cau hinh P1.0 va P1.1 lam INPUT
C,X
F0,C
C,Y
F1,C
C,F0
C
NOTX,C
; NOT X
C,F0
C,F1
SKIP:
MOV
CPL
MOV
MOV
ORL
MOV
CPL
MOV
MOV
JNB
CPL
SJMP
END
XANDY,C
; X AND Y
C
XNANDY,C; X NAND Y
C,F0
C,F1
XORY,C
; X OR Y
C
XNORY,C
; X NOR Y
C,Y
X,SKIP
; Neu X=0 thi X XOR Y = Y
C
; Neu X=1 thi X XOR Y = NOT Y
LOOP
; Phi c lp li, nu khng s khng th hin c cng logic!!
EQU
EQU
EQU
EQU
EQU
MOV
LOOP: MOV
ANL
JC
P1.0
P1.1
P1.2
P1.3
P1.7
P1,#0FH
C,X
C,/Y
EXP2
MOV
MOV
ANL
ORL
JNC
EXP2: MOV
ANL
ANL
JC
MOV
MOV
ANL
ORL
MOV
SJMP
DONE_0:
SJMP
DONE_1:
SJMP
END
F0,C
C,W
C,Z
C,F0
DONE_0
C,X
C,/Z
C,/W
DONE_1
F0,C
C,Z
C,/X
C,F0
F,C
LOOP
CLR
F
LOOP
SETB F
LOOP
C = XY'
Neu C = 1 thi 0 can tinh tiep voi phep toan OR, ma tiep tuc
xet tong thu 2
F0 = XY'
; C = XY' + WZ
; Neu Tong thu 1 = 0 thi F = 0
; C = XZ'W'
; C = ZX' = X'Z
; C = XZ'W' + X'Z
; F = (XY'+ WZ)(XZ'W' + X'Z)
; F = 0
; F = 1
EQU
MOV
MOV
MOV
LOOP: JNB
JB
INC
CJNE
MOV
NEXT: MOV
SJMP
END
P3.7
P3,#80H
R0,#0
P2,#0
CK,$
CK,$
R0
R0,#10,NEXT
R0,#0
P2,R0
LOOP
;
;
;
;
;
TD 11: Minh ha cc lnh r nhnh chng trnh theo iu kin: JZ, JNZ, DJNZ, va CJNE
; TD: branch02.asm
MOV P0,#0FFH
MOV A,P0
JZ ZERO
MOV P1, #0F0H
; P0 khac 0
JMP NEXT
ZERO: MOV P1,#0FH
NEXT:
; on chng trnh m cc phn t bng 0 trong 1 bng RAM ngoi (a ch u l
; 0000H) vi byte u l s phn t trong bng
; Nu bng c di tr s: 07h 02h 00h 03h 05h 00h 09h 0Ch
; th kt qu thanh ghi B = 2
MOV DPTR,#0
MOVX A,@DPTR
MOV R0, A
; So phan tu cua bang dat trong R0
MOV B,#0
L1:
INC DPTR
MOVX A,@DPTR
JNZ SKIP
INC B
SKIP: DJNZ R0,L1
; m tng s cc phn t c tr >=3, kt qu ct vo R1, vi TD ny cho R1 = 3
MOV DPTR,#0
MOVX A,@DPTR
MOV R0, A
; So phan tu cua bang dat trong R0
MOV R1,#0
L2:
INC DPTR
MOVX A,@DPTR
CJNE A,#5,CHECK
CHECK:
JC CONT
; C = 0 co nghia la A >= 5
INC R1
CONT: DJNZ R0, L2
SJMP $
END
Dat
A =
Cat
A =
A =
A =
cau
X:Y
tam
0:Y
X:Y
Y:X
; A
so sanh