|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 Ele_insect 于 2022-6-7 09:52 编辑 ; S/ `) P- U( E( }' m
# r5 p$ \6 X9 A5 N6 h% P. d, M一、单片机指令系统概述
; ~. `0 A! I! b+ n9 w& h1、指令概述
- m/ r1 s9 O, O) A! S' m+ P指令:是CPU根据人们的意图来执行某种操作的命令。
1 Z8 t' w+ v$ K4 x" s/ d指令系统:是计算机所能够执行的全部指令的集合。 k* d( S* N; d; R( o
程序:是按人们的要求所编制的指令操作序列。2 Q7 d- ?9 F0 F/ P
本章主要介绍80C51单片机的汇编语言指令系统。
3 S1 L1 g) q4 D- {" @1 d v! ], {& i程序设计语言:是编写程序的某种规则。
) |$ [* h6 U2 X9 [$ n* C. H* E) `5 F! @/ c q, z& Q
三类编程语言:
( o. a' F- d1 M3 ~% K' M; B. |: m) ]机器语言、汇编语言、高级语言/ o; D/ q$ d8 ^
机器语言:用二进制编码表示每条指令,是计算机能直接识别和执行的语言。. w. R2 I$ [5 y8 q; [" y" f3 `0 ?6 b" L1 E
汇编语言:是用助记符、符号和数字等来表示指令的程序设计语言。它与机器语言指令是一一对应的。0 c7 E" H" y5 I! ^
/ s# H4 d% N/ x
2 、指令格式和指令的表示形式2 v2 w0 U/ G. J+ y/ }; z
80C51汇编语言指令格式
1 b" g9 b; x, } b& }! w[标号:] 操作码 [目的操作数][,源操作数][;注释]- f. G; X% [5 A; N
A0 y; v2 y5 x9 I2 ^- l& [
/ W4 M9 h% s, S$ J 3、指令中的常用符号
7 [# I a0 b. l(1)Rn(n=0~7)当前选中的工作寄存器R0~R7
* M0 E+ v( P( m/ I$ r* F(2)Ri(i=0,1)当前选中的、作地址指针的寄存器R0、R1& T) V h+ b" L( [# U% \
(3)#data 8位立即数+ U# c" z, q4 [1 y: ^: \& D
(4)#data16 16位立即数
, Y3 E, Y( N* G! m4 C2 p% ^ 如:MOV DPTR,#data16
) z* M6 w/ s( q1 v' v1 m# p(5)direct 8位片内RAM单元(包括SFR)的直接地址- u% ?: D/ M2 y0 k* U/ L6 f
如:MOV direct,#data ;#data→direct1 u3 Y$ r0 A8 T6 J
(6)addr11 4 }+ \. e3 I0 }6 N6 Y8 x
11位目的地址,用于Acall和AJMP指令中
) ^) O' h# g5 t+ x(7)addr16
' H/ r v: k) A- Y; J7 [5 u3 `+ R% k: ~ 16位目的地址,用于LCALL和LJMP指令中
/ A- [4 A0 ^6 X" o/ D0 ](8)rel 补码形式的8位地址偏移量
+ p1 n! i7 a! [$ l* _(9) bit 片内RAM或SFR的直接寻址的位地址
/ K5 m5 y5 c, l; E. o5 }% \(10)@ 间接地址方式中,表示间址寄存器的符号
, w! `* u% W7 S# Z! u3 w/ [(11) / 对位取反操作 如:ANL C,/P1.26 D1 Y6 H' o8 W5 o' A; U$ _
(12)(×) 指“×” 中的内容,其内容是数据; ×是地址/ \3 l9 t+ X* @4 \
(13)(( ×))由“×”间接寻址单元中的内容, ×中的内容“(×) ”是地址
) i2 u2 A7 w/ q* O" k如:设58H单元的数据是36H,R0的内容是58H
; Z7 c. d2 H5 u' j, aINC 58H;(58H)+1→ 58H
* j; x3 n& A$ h$ m2 l: g5 Y5 qDEC @R0;((R0))-1 → (R0)3 m* G, ?9 r' ^7 C! K
(14)→ 示将箭头左边的内容传送到箭头右边的单元
) I. i0 Y) u6 \. b8 ?4 y+ C: u* z+ R8 X$ p8 I+ r0 S6 Z
4 、指令的字节数和指令周期* l$ _ p" Y; Z4 f* c" x8 j# K) c# g
) o+ u' Q: w0 ^9 j0 k
( l0 I0 ?: N. w8 |" Z6 m( ~
二、80C51单片机指令寻址方式
; Q3 ?$ Z k5 e ?2 x3 |, A, q% Y寻址方式:就是指令中找到操作数或操作数地址的方式。
5 ?) f0 S) P* ?0 ]/ a* Q0 \) A80C51单片机有七种寻址方式:
( w" B9 r) Q# A2 m, K3 S) @1、立即寻址
3 j* H/ p7 Q9 Q/ w操作数在指令中,在操作码后面。用“#”表示。
9 h/ A9 s3 d! G- s操作数可以是8位的,也可以是16位的。& O, ]: c/ v8 `+ A
2、直接寻址7 `& A- N8 {2 _# n8 S
直接寻址:在指令中直接给出操作数所在存储单元的地址。指令中操作数部分是操作数所在地址。
3 a: I# `* d" h, r- E直接寻址方式可访问片内RAM的128个单元以及所有的SFR。对于SFR,既可以使用它们的地址,也可以使用它们的名字。, l: E. a" }, e2 V7 d9 O
3、寄存器寻址
0 W) B2 w5 c9 j% R8 u/ R: o. f操作数在某一个寄存器中。
2 s, u) b$ y1 N所用的寄存器可以是:R0~R7、A、B、DPTR等。
6 W9 f: b; g3 ^/ C! t( T 4、寄存器间接寻址7 x4 A9 q2 O9 r9 R: e
指令中寄存器中的内容给出的是操作数的地址。) ?8 c$ n6 A. p
80C51规定:R0、R1和DPTR可以作为间接寻址寄存器。
3 I p% S+ D' v) `. U(1)R0、R1间址访问片内RAM的低128B或片外RAM的低256B空间, h& n* H& U( T5 G3 L" m; w- j9 R9 ]0 _
如:设(R0)=65H,(65H)=47H+ p* h5 ^- H& i0 \' e% Z
MOV A,@R0 ; (65H)→ A,A中的值是47H/ y, y' @2 K2 e: ]
MOV @R0,#3AH ;3AH→ 65H6 R. T; Q8 i: ~
MOVX A,@R0 ;外RAM的(65H)→ A0 j# v3 U/ D4 j, ?7 K9 C
- b W; Y6 K7 A) E
$ l7 N2 b% m. I% u: _
|
|