什么是单片机寻址方式与指令系统
通过前面的学习,我们已经了解了单片机内部的结构,并且也已经知道,要控制单片机,让它为我们干学,要用指令,我们已学了几条指令,但很零散,从现在开始,我们将要系统地学习8051单片机的指令部份。
一、概述
1、指令的格式
寻址方式
指令的一个重要组成部分是操作数,由它指定参与运算的数据或数据所在的存储器单元或寄存器或I/O接口的地址。指令中所规定的寻找操作数的方式就是寻址方式。每一种计算都具有多种寻址方式,寻址方式越多,计算机的功能就越强,灵活性就越大。寻址方式的多少及寻址功能是反映指令系统优劣的主要因素之一。要掌握指令系统也可从寻址方式入手。
MCS-51指令系统的寻址方式有7种:立即寻址(#data)、寄存器寻址(Rn)、间接寻址(@Ri、@DPTR)直接寻址direct、变址寻址(A+)、相对寻址(rel)和特定寄存器寻址(A)。有些书把A当寄存器寻址,把位寻址单独作一种寻址方式,不管怎么分类其目的是为了便于记忆、掌握111条指令。
1.立即寻址(#data)
操作数包含在指令字节中,操作数直接出现在指令中,并存放在程序存储器中,这种方式称为立即寻址。
立即寻址指令的操作数是一个8位或16位的二进制常数,它前面以“#”号标识,例如:ADD A,#56H,即#56H与累加器A(设为31H)内容相加,结果(87H)存于累加器A中。这条指令的机器码为2456H.
2.寄存器寻址(Rn)
由指令指出某一个寄存器中的内容作为操作数,这种寻址方式称为寄存器寻址。在这种寻址方式中,指令的操作码中包含了参加操作的工作寄存器R0~R7的代码(指令操作码字节的低3位指明所寻址的工作寄存器)。例如:ADD A,Rn中的Rn,当n为0、1、2时,机器码分别为28、29、2A.
3.间接寻址(@Ri/@DPTR)
由指令指出某一个寄存器内容作为操作数的地址。这种寻址方式称为寄存器间接寻址。访问外部RAM时,可使用R0,R1或DPTR作为地址指针,寄存器间接寻址用符号“@”表示。
例如:MOV A,@RO(机器码E7)是指:若RO内容为66(内部RAM地址单元66H),而66H单元中内容是27H,则指令的功能是将27H这个数送到累加器A.
4.直接寻址(direct)
在指令中直接给出操作数所在存储单元的地址(一个8位二进制数),称为直接寻址。直接地址用direct表示,
直接寻址方式中操作数存储的空间有三种:
(1).内部数据存储器的128个字节单元(00H~7FH)
(2).位地址空间(有些书把这种寻址方式单独作一种寻址方式)
(3).特殊功能寄存器, 特殊功能寄存器只能用直接寻址方式进行访问。
5.基址加变址寻址(@A+PC/@A+DPTR)
以16位寄存器(DPTR或PC)作为基址寄存器,加上地址偏移量(累加器A中的8位无符号数)形成操作数的地址。
变址寻址方式有两类:
(1).以程序计数器的值为基址例如指令:
MOVC A,@A+PC; ;(A)←((A)+(PC))
指令的功能是先使PC指向本指令下一条指令地址(本指令以完成),然后PC地址与累加器内容相加,形成变址寻址的单元地址内容送A。
(2).以数据指针DPTR为基址,以数据指针内容和累加器内容相加形成地址,例如:
MOV DPTR #4200H ;给DPTR赋值
MOV A,#10H ;给A赋值
MOVC A ,@A+DPTR ;变址寻址方式(A)←((A)+(DPTR))
三条指令的执行结果是将4210H单元内容送A中。
6.相对寻址(rel)
以程序计数器PC的当前值为基址,加上相对寻址指令的字节长度,再加上指令中给定的偏移量rel的值(rel是一个8位带符号数,用二进制补码表示),形成相对寻址的地址。
例如指令:
JNZ rel (或rel = 23H,机器码为7023)
当A≠0时,程序跳到这条指令后面,相差23个字节运行下一条指令。
7.特定寄存器寻址
累加器A和数据针DPTR这两个使用最频繁的寄存器又称为特殊寄存器。对特定寄存器的操作指令,指令不再需要指出其地址字节,指令码本身隐含了操作对象A或DPTR。
例如:
INC A (指令码04) ;累加器加1
MOV A,#12H (指令码7412) ;数12送累加器
INC DPTR (指令码A3) ;数据指针内容加1
综上所述,寻址方式与存储器结构有密切关系。一种寻址方式只适合于对一部分存储器进行操作,在使用时要加以注意。
我们已知,要让计算机做事,就得给计算机以指令,并且我们已知,计算机很“笨”,只能懂得数字,如前面我们写进机器的75H,90H,00H等等,所以指令的第一种格式就是机器码格式,也说是数字的形式。但这种形式实在是为难我们人了,太难记了,于是有另一种格式,助记符格式,如MOV P1,#0FFH,这样就好记了。 这两种格式之间的关系呢,我们不难理解,本质上它们完全等价,只是形式不一样而已。
2、汇编
我们写指令使用汇编格式,而计算机和
- FPGA的DSP性能揭秘(06-16)
- 基于单片机通用引脚的软件UART设计(10-16)
- 分时操作系统思想在单片机中的具体应用 (10-30)
- 基于AT89C51+DSP的双CPU伺服运动控制器的研究(05-26)
- 关于RTX51 TINY的分析与探讨(05-30)
- 基于MC9S12DGl28单片机的智能寻迹车设计(04-03)