1、第5讲(2011-04-21) 10-11第2学期第8周,汽车单片机,1.总体结构:(各部分的功能、协调关系) 2.引脚功能:(引脚的数目、信号特点) 3.CPU: (如何找到并运行程序) 4.存储器的结构: (位、地址、空间大小) 5.复位操作和复位电路: (复位后单片机的状态) 6.时钟时序: (时钟电路、如何理解程序的运行时间),复习:第2章 MCS-51单片机硬件结构,1.指令系统简介; 2.寻址方式; 3.指令系统; 4.汇编语言程序设计; 5.程序设计实例;,第3章 MCS-51指令系统及汇编语言,MCS-51的基本指令共111条,按指令所占的字节来分:(1) 单字节指令49条;(
2、2) 双字节指令45条;(3) 三字节指令17条。 按指令的执行时间来分:(1) 1个机器周期(12个时钟振荡周期)指令64条(2) 2个机器周期(24个时钟振荡周期)指令45条(3) 只有乘、除两条指令的执行时间为4个机器周期(48个时钟振荡周期)。,3.1 指令系统概述,注:12MHz晶振:机器周期为1s。,1. 指令格式 指令格式指令的表达方式称为指令格式标号: 操作码 目的操作数 ,源操作数 ;注释 标号:指令的符号地址。标号是用户设定的符号,表示该语句所在的地址。标号必须由以字母开头的l8个 ASCll字符组成,这些字符不能使用在该汇编语言中已经定义过了的符号。 操作码:操作码是由英
3、文缩写组成的字符串,它规定了指令的操作功能,是指令格式中唯一不能空缺的部分。,1. 指令格式 标号: 操作码 目的操作数 ,源操作数 ;注释 操作数:操作数用于给指令的操作提供数据或地址。操作数可以是空白也可能只有一项或二项,还可以有三项。各操作数之间必须用逗号分隔,操作数与操作码之间须用空格分隔。在两个操作数的指令中,把左边的操作数称为目的操作数,而右边操作数称之为源操作数。 注释:注释是对语句或程序段功能的说明。注释要用分号“;”开头,注释的长度不限,但每行开头仍须使用分号“;”,注释也可空缺。,2. 指令分类(见附录A,P236) 有单字节指令、双字节指令、三字节不同长度的指令,格式不同
4、:(1)单字节指令:指令只有一个字节,操作码和操作数同在一个字节中。 (2)双字节指令:一个字节为操作码,另一个字节是操作数。(3)三字节指令:操作码占一个字节,操作数占二个字节。其中操作数既可能是数据,也可能是地址。,2. 指令分类 按功能分有五大类指令,共111条: (1)数据传送类(28条) :RAM、ROM、堆栈,传送、交换数据。 (2)算术运算类(24条) :字节。其中操作数既可能是数据,也可能是地址。加、减、乘、除,自加(减)1; (3)逻辑运算类(25条) :与、或、异或、移位。 (4)控制转移类(17条) :(无)条件转移、空操作。 (5)布尔变量操作类(17条) :位数据传送
5、、与、或、转移。,指令中常用符号Rn(n=07)当前工作寄存器组 R0R7;Ri(i=0,l)当前工作寄存器组的R0或R1;ACC代表累加器A的直接地址EOH;间接寻方式中间址寄存器标志符号;data8位立即数;(#XXH)datal616位立即数; (#XXXXH)direct8位片内RAM单元(包括SFR的地址或符号)的直接地址;addr1111位目的地址;,addr1616位目的地址,只限于在LCALL和LJMP指令中使用; Rel8位带符号补码数; Bit片内RAM或SFR中的直接寻址位; C代表PSW中的进位标志位,称为累加位; 加在位地址前面,表示对该位的状态取反; (X)表示寄存
6、器X或单元X中的数据; (X)表示将寄存器X或X存储单元的数作为地址的这个地址单元中的数据。$当前指令的首地址; 箭头右边的内容被箭头左边的内容所取代。,寻址方式就是在指令中说明(寻找、获得)操作数所在地址的方法。 共7种寻址方式。1立即寻址方式所谓立即寻址就是操作数在指令中直接给出。立即寻址方式的操作数称立即数,立即数只能是源操作数,不能作为目的操作数。立即数有8位立即数和16位立即数。使用时在立即数前加“#”标志。MOV A,#26H ; A 26H MOV DPTR,#2000H ; DPTR 2000H,3.2 指令系统的寻址方式,2直接寻址方式 操作数直接以单元地址的形式给出:MOV
7、 A,20H ; A (20H )寻址范围:(1) 内部RAM的低128个单元;(2) 特殊功能寄存器。除了以单元地址的形式外,还可用寄存器符号的形式给出。例如:MOV A,80H 与 MOV A,P0是等价的。,3寄存器寻址方式操作数在寄存器中 MOV A,Rn ;(Rn)A,n=07 表示把寄存器Rn的内容传送给累加器A 寻址范围包括: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器DPTR等。,4. 寄存器间接寻址方式 寄存器中存放的是操作数的地址在寄存器的名称前面加前缀标志“” 访问内部RAM或外部数据存储器的低256个字节时,只
8、能采用R0或R1作为间址寄存器。例如:MOV A,Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM40H单元内容送A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为Ri (2)对片外数据存储器的64K字节的间接寻址,例如: MOVX A,DPTR,(3)片外数据存储器的低256字节例如:MOVX A,Ri (4)堆栈区 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针(SP)作间址寄存器,4. 寄存器间接寻址方式,MOV A,Ri MOVX A,DPTR 例如:(R1)80H、(80H)=33H,则执行指令MOV A,Ri后,累加器A的内容为33H而不是80H
9、。,P48实例,5 基址加变址寻址方式,基址加变址寻址就是以DPTR或PC为基址寄存器,以A为变址寄存器,以两者内容相加形成16位地址作为操作数地址。例如指令: MOVC A,A+DPTR,5 基址加变址寻址方式,例如:MOVC A, A+DPTR 设(A)=10H,(DPTR)=1000H,程序存储器的(1010H)=45H,则上面程序语句的功能是将A的内容与DPTR的内容相加形成操作数地址(1010H),把该地址中的数据传送到累加器A。即(A)(A)+(DPTR)。结果: (A)=45H。,MOVC A,A+DPTR的执行示意图,说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址
10、范围可达到64KB。 (2)本寻址方式的指令只有3条:MOVC A,A+DPTRMOVC A,A+PCJMP A+DPTR,参考P48,例子,6相对寻址方式 在相对寻址的转移指令中,给出了地址偏移量,以“rel”表示,即把PC的当前值加上偏移量就构成了程序转移的目的地址: 目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数 。 范围是:128 +127 向地址增加方向最大可转移(127+转移指令字节)个单元地址,向地址减少方向最大可转移(128-转移指令字节)个单元地址。,参考P49,例子,7位寻址方式 MCS-51有位处理功能,可以对数
11、据位进行操作,例如: MOV C,40H 是把位40H的值送到进位位C。 寻址范围包括: (1)内部RAM中的位寻址区。位有两种表示方法,例如,40H;另一种是单元地址加上位,例如,(28H).0,指的是28H单元中的最低位。它们是等价的。 (2)特殊功能寄存器中的可寻址位,可寻址位在指令中有如下4种的表示方法:a. 直接使用位地址。例如PSW.5的位地址为0D5H。 b.位名称的表示方法。例如:PSW.5是F0标志位,可使用F0表示该位。 c.单元地址加位数的表示方法。例如 :(0D0H).5。 d.特殊功能寄存器符号加位数的表示方法。例如:PSW.5。, MOV 2FH,#40H MOV A,R0 MOV DPTR,#2020H MOV 45H,P0 MOV A,R1 MOVC A,A+PC JC LOOP, 立即寻址, 寄存器间接寻址, 16位立即寻址, 直接寻址。 寄存器寻址。 基址加变址寻址, 相对寻址。,练 习-说出下列指令寻址方式,判断下列指令是否正确,若不正确请指出错误:MOV A,DPTRMOV DPTR,#03HMOV #80H,R7MOV B,C,不正确。A是8位寄存器,DPTR为16位寄存器,不匹配。正确。不正确。#80H为立即数,不能作为目的地址。不正确。B为8位字节寄存器,C为1位位累加器,不匹配。,练 习,