mcs-51单片机指令与程序基本概念
MCS-51单片机指令与程序简介
指令:计算机(CPU)的操作命令
机器指令代码:机器指令的二进制表示方式,是指令在程序存储器中存放形式,是CPU可直接读取、识别并执行的唯一形式。
8051单片机的指令有单字节指令、双字节指令、三字节指令。
第一字节为操作码表达指令的操作功能,其中还包括不须独占整字节的操作数信息(如寄存器寻址、寄存器间接寻址等方式)。
其余字节表达操作数:为需独占整字节的操作数信息(如立即数,直接地址,相对转移偏移量,位地址,绝对转移地址)。 机器语言(目标)程序:由机器指令代码组成的程序。是所有程序的最终形式,是可被CPU依序执行的唯一程序形式,被CPU执行前,应预先存放在计算机内部主存储器(内存储器)中,方可由CPU依序读取、执行。但因其纯代码化、不便于阅读与交流。
符号指令:(汇编指令,指令助记符)
每一条指令用比较直观,易于表现指令功能及操作对象的符号形式来表达,这种形式的指令称符号指令,便于阅读与交流。
但符号指令不被CPU所识别与理解,只是作为
书
关于书的成语关于读书的排比句社区图书漂流公约怎么写关于读书的小报汉书pdf
写程序的初始形式来使用(编写源程序)。
汇编语言程序:用符号指令书写的程序形式。它必须事先转化为机器语言目标程序,并存放在计算机内存中,方可被CPU所读取、译码识别、执行。
高级语言程序:高级语言程序与机器语言程序间则不是简单的逐条对应关系,它们必须经过编译或解释产生出实现其语法所定义的功能的机器语言目标程序,方可由CPU所执行。
汇编语言、机器语言程序的书写方式、存储方式、执行过程如下所示:
例[ 1 ] 将3AH
单元
初级会计实务单元训练题天津单元检测卷六年级下册数学单元教学设计框架单元教学设计的基本步骤主题单元教学设计
中数据与3BH单元中数据相互交换 机器语言目标程序 汇编语言源程序
地址 指令代码 标号 操作码 操作数 注释
ORG 2000H ;伪指令,表示后续指令从2000H起存放
2000 E5 3A START:MOV A,3AH ;把3AH中数据送入A中
2002 85 3B 3A MOV 3AH,3BH ;把3BH中数据送入3AH单元
2005 F5 3B MOV 3BH,A ;A中数据(原3AH单元数据)送入3BH单元
2007 20 20 07 LOOP:LJMP LOOP ;自循环暂停
END ;伪指令,表示汇编程序到此结束
每条符号指令对应着唯一对应的指令代码。
指令代码存放在存储器中的地址必须是确定的。
每条指令的代码为1,3个字节。因此书写时与其源指令在同一书写行上,而地址只要表达每条指令第一个代码所存放单元的地址。
上例程序段指令代码存储形式示意如下:
2000H E5
MOV A,3AH
2001H 3A
2002H 85
2003H 3B MOV 3AH,3BH
2004H 3A
2005H F5
MOV 3BH,A 2006H 3B
2007H 02
LJMP 2007H
2008H 20
2009H 07
PC(程序计数器,程序指针)的作用:
PC:始终存放着CPU要取出执行的下一个机器指令代码的存放单元的地址。
或:始终指向要取出执行的下一条指令代码存放单元,
?51单片机程序存储器空间为64KB,使用16bit地址码
?51单片机的PC为16bit(双字节) PC的作用:
, 51单片机复位后,初始化PC=0000H,?51单片机总是以0000H地址开始
执行程序的。51单片机程序存储器空间中,0000H地址处一定要有存储
器并存放有效的程序指令。
, CPU总是以PC中的内容为地址从程序存储器中取指令代码的。
, CPU每取出一个字节的指令代码自动地将PC加1(PC?PC+1)实现程序
的顺序执行逻辑。
, CPU执行跳转指令功能时为将指令指定的跳转目标地址置入PC(使下一
次取的是该地址处的指令)实现了程序跳转执行逻辑。
上例程序的执行过程描述如下:
PC中的初始地址值为2000H
(1) CPU取出2000H单元中指令首字节(操作码)E5H, PC+1=2001H,译:本指
令尚有第二字节直接地址
(2) CPU取出2001H单元中操作数3AH,PC+1=2002H,执行:将3AH中数送入A。
(3) CPU取出2002H单元中指令操作码85H,PC+1=2003H,译:尚有二字节地址码
(4) CPU取出2003H单元中地址码3BH,PC+1=2004H,取出3BH单元中的数
(5) CPU取出2004H单元中地址码3AH,PC+1=2005H,执行:将数送入3AH单元
(6) CPU取出2005H单元中指令操作码F5H,PC+1=2006H,译:尚有一字节地址码
(7) CPU取出2006H单元中地址码3BH,PC+1=2007H,执行:将A中数据送入3BH单元
(8) CPU取出2007H单元指令操作码02H,PC+1=2008H,译:尚有二字节目标地址
(9) CPU取出2008H单元中地址高字节20H,PC+1=2009H,尚有一字节地址码
执行:2007H PC(10) CPU取出2009H单元中地址低字节07H,PC+1=200AH,
转步骤(8)无限循环
例[ 2 ] 编程序实现R2、R3中的双字节BCD数加上R4、R5中的双字节BCD数,和
值存放于R6、R7中。
ORG 11A0H
11A0 EB MOV A,R3 ;取被加数低字节
11A1 2D ADD A,R5 ;加上加数低字节,进位在Cy中
11A2 D4 DA A ;二---十进制调整
11A3 FF MOV R7,A ;存和值的低字节
11A4 EA MOV A,R2 ;取被加数高字节
11A5 3C ADDC A,R4 ;加上加数高字节及低字节的进位
11A6 D4 DA A ;二---十进制调整
11A7 FE MOV R6,A ;存和值的高字节
11A8 80 FE SJMP $ ;自循环暂停 11AA
例[ 3 ] 编程序实现P1.3输出驱动LED以1秒为周期闪烁。
ORG 1200H
1200 C2 95 CLR P1.3 ;输出控制端清零
1202 7F 08 LOOP0: MOV R7,#8 ;软件延时0.5秒
1204 7E C8 LOOP7: MOV R6,#200 1206 7D 64 LOOP6: MOV R5,#100 1208 00 LOOP5: NOP 1209 DD FD DJNZ R5,LOOP5 120B DE F9 DJNZ R6,LOOP6 120D DF F5 DJNZ R7,LOOP7 120F B2 95 CPL P1.3 ;输出控制端求反
1211 80 EF SJMP LOOP0 ;循环 1213
注:用导线连接P1.3端至一只发光二极管