微机原理与控制第三章(季).ppt
《微机原理与控制第三章(季).ppt》由会员分享,可在线阅读,更多相关《微机原理与控制第三章(季).ppt(140页珍藏版)》请在三一办公上搜索。
1、第3章 MCS-51单片机的指令系统,3.1 指令格式3.2 寻址方式3.3 数据传送指令3.4 算术运算指令3.5 逻辑运算和环移指令3.6 位操作指令3.7 控制转移指令3.8 调用和返回指令3.9 伪指令3.10汇编语言程序设计,3.1 指令格式,单片机要执行某种操作,用户必须按照格式编写指令,单片机才能识别并准确操作。指令的编码规则称为指令格式。3.1.1 指令的格式1指令的一般格式MCS-51单片机指令的一般格式为:操作码 操作数。例如指令:74H 30H。1)操作码 用来表示执行什么样的操作,例如传送、加、减等。MCS-51系列单片机的操作码为8位二进制的机器码,在指令中为第一字节
2、。用机器码写成的指令是机器指令,也称为指令代码。,3.1 指令格式,2)操作数 表示参与操作的数据或数据的存储地址,不同类型的指令,操作数的个数是不一样的,可以有3个、2个、1个等。在具有多个操作数的指令中,把它们分别称为第一操作数、第二操作数等。如果操作数是一个直接参加操作的数据,这种操作数称为立即数;而大部分操作数存放于寄存器或数据存储器的某个存储单元,操作数字段仅指出操作数所在的寄存器或存储器地址。2常用指令格式编写指令时,要记住各种由“0”和“1”二进制数组成的代码和他们的含义是很困难的,既容易出错,又不易检查。所以常用的指令格式是以助记符表示的符号指令,也称汇编语言,由标号、操作码助
3、记符、操作数和注释4个字段组成,格式如下:标号:操作码助记符 操作数1,操作数2;注释其中,方括号内的项为任选项,需要此项时,指令中不写方括号;两操作数之间应以逗号分开。,3.1 指令格式,例如,指令:START:MOV A,#79H;A79H1)标号 标号是用户定义的符号,由以字母开始的18个字符(字母或数字)组成,它代表指令的符号地址,通常在程序分支、转移等所需要的地方加上一个标号,并不是每条指令都必须有标号。当将指令转换成机器指令时,指令第一字节(也称首字节)的存储单元地址值赋给该标号。2)操作码助记符 助记符是一些代表操作含义的英文缩写,一般由25个英文字母组成,如“MOV”表示“传送
4、”、“ADD”表示“加”等。操作码助记符对应的机器码是指令的第一字节,也是指令不可缺少的部分。3)操作数 与机器指令格式中的操作数相似。4)注释 注释是对本指令或本段程序的功能说明,便于对程序的阅读理解,在转换成机器指令时不予考虑。注释的前面需加分号“;”。,3.1 指令格式,单片机识别机器指令,编程人员使用符号指令,机器指令与符号指令之间有一一对应的关系,绝没有重复。各种指令的机器码不需要记忆,编程人员可查阅机器指令与符号指令的映射表将符号指令译成机器指令,这个过程称为汇编;但更多的是用专门的软件来完成汇编过程。3.1.2 指令的分类MCS-51指令系统有33种操作功能。指令助记符与寻址方式
5、组合,得到111种指令。分类如下:,3.1 指令格式,1按字节数分类 1)单字节指令,有49条。2)双字节指令,有45条。3)3字节指令,有17条。2按指令执行时间分类 1)单周期指令,有64条。2)双周期指令,有45条。3)四周期指令,乘、除各有1条。,3.1 指令格式,3按功能分类1)数据传送指令,有28条。这类指令主要用于单片机片内RAM和特殊功能寄存器SFR之间传送数据,也可以用于单片机片内和片外存储单元之间传送数据。数据传送指令是把源地址中操作数传送到目的地址(或目的寄存器)的指令,在该指令执行后源地址中的操作数不被破坏。源操作数有8位和16位之分,前者称为8位数传送指令,后者叫做1
6、6位数传送指令。交换指令也属于数据传送指令,是把两个地址单元中内容相互交换。因此,这类指令中的操作数或操作数地址是互为“源操作数”和“目的操作数”的。,3.1 指令格式,2)算术运算指令,有24条。算术运算指令用于对两个操作数进行加、减、乘、除等算术运算。在两个操作数中,一个应放在累加器A中,另一个可以在某个寄存器或片内RAM单元中,也可以放在指令码的第二和第三字节中。指令执行后,运算结果便可保留在累加器A中,运算中产生的进位标志、奇偶标志和溢出标志等皆可保留在PSW中。参加运算的两数可以是8位的,也可以是16位的。3)逻辑运算和环移指令,有25条。这类指令包括逻辑运算和环移两类指令。逻辑操作
7、指令用于对两个操作数进行逻辑乘、逻辑加、逻辑取反和异或等操作,大多数指令也需要把两个操作数中的一个预先放入累加器A,操作结果也在累加器A中。环移指令可以对累加器A中的数进行环移。环移指令有左环移和右环移之分,也有带进位位Cy和不带进位位Cy之分。,3.1 指令格式,4)位操作指令,有12条。位操作指令又称布尔变量操作指令,共分为位传送、位置位、位运算和位控制转移指令等四类。其中,位传送、位置位和位运算指令的操作数不是以字节为单位进行操作的,而是以字节中某位为单位进行的;位控制转移指令不是以检测某个字节的结果为条件而转移的,而是以检测字节中的某一位的状态来转移的。5)控制转移指令,有22条。控制
8、转移指令分为条件转移、无条件转移、调用和返回等指令。这类指令的共同特点是可以改变程序执行的流向,或者是使CPU转移到另一处执行,或者是继续顺序地执行。无论是哪一类指令,执行后都会改变程序计数器PC中的值。,3.1 指令格式,3.1.3 指令的存放空间指令是单片机执行某种操作的命令,用户若要单片机完成一件事情,必须先编写指令,再转成机器码形式,从键盘等设备输入到程序存储器存放。存放在程序存储器的哪个空间,用户应首先给程序计数器PC一个首地址,指令就从这个首地址开始存放,一个字节存放到一个单元后,程序计数器PC自动加1,指令的下一字节存放在PC当前值的地址单元。3.1.4 指令常用的缩写符号说明在
9、描述MCS一51指令系统的功能时,经常使用一些缩写符号,各符号的含义如下:(1)A 累加器ACC。常用ACC表示其地址,用A表示其名称。(2)AB 累加器ACC和寄存器B组成的寄存器对。通常在乘、除法指令中出现。,3.1 指令格式,(3)Rn(n=07),选定的当前工作寄存器,范围为R0R7。(4)Ri(i=0或1),工作寄存器R0或R1。(5)间接寻址符号,简称间址符,常与Ri配合用,如Ri,表示指令对Ri寄存器间接寻址。(6)#data 8位立即数,“#”表示后面的data是立即数而不是直接地址。(7)direct 表示片内RAM存储单元的8位直接地址,立即数和直接地址可用二进制码表示,后
10、缀为“B”;也可用十六进制码表示,后缀为“H”;如果是以字母开头的十六进制数,在其前面应加一个“0”。如,二进制码10101000B也可转成十六进制码A8H,但必须写成“0A8H”。,3.1 指令格式,(8)DPTR:表示以DPTR为数据指针的间接寻址,用于对外部64K RAMROM寻址。(9)rel 以补码形式表示的8位地址偏移量,范围为-128+127。(10)Bit 位地址。(11)$:当前指令的地址。指令中还经常使用到下列符号,含义如下:加;减;乘;除;,3.1 指令格式,逻辑与;逻辑或;逻辑异或;大于;不等于;取代或替换;(X)表示X寄存器或X地址单元中的内容;(X)表示以X寄存器或
11、X地址单元中的内容为地址的存储单元中的内容;()将X寄存器的内容取反;rrr 机器指令三位值由工作寄存器Rn确定,R0R7对应的rrr分别为000111。,3.1 指令格式,例31 已知数据存储器各单元内容如图31所示,说明(50H)、(A)、()、(50H)各为多少?解(50H):表示地址为50H存储单元里的内容01110000B。(A):表示累加器A中的内容,因A的地址为0EOH,所以(A)为00100001B。():表示地址为50H存储单元里的内容取反,为10001111B。(50H):以50H存储单元的内容70H为地址的存储单元内的内容,为00111001B。,图31,0EOH,70H
12、,50H,3.2 寻址方式,指令包含操作码和操作数,有些指令直接给出参与运算和操作的数,但更多指令只是以各种方式给出操作数所在的地址。单片机通过地址信息寻找操作数的方式,称为寻址方式。寻址方式越多,表明计算机的功能越强,灵活性越大。在MCS一51单片机中,操作数的存放范围是很宽的,可以放在片外ROMRAM中,也可以放在片内ROMRAM以及特殊功能寄存器SFR中。为了适应这一操作数范围内的寻址,MCS一51的指令系统共使用了七种寻址方式,它们是立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址、相对寻址和位寻址。,3.2 寻址方式,3.2.1 立即寻址指令中的操作数只是数据,而不是地址,这
13、样的操作数就称为立即数,立即数直接参与操作,这种寻址方式称为立即寻址。其实立即寻址并没有寻址过程。这类指令的立即数大多数是一个字节的8位二进制数。指令中,操作数前有“#”符号,据此可以判定是立即寻址,并有相应的操作码。例如,指令:MOV A,#64H;A64H这条指令的功能是把数据64H(立即数)送到累加器A中,在MCS一51指令系统中有相应操作码为74H,立即寻址的示意如图32所示,设程序计数器PC=70H。,图3-2 立即寻址的示意图,3.2 寻址方式,3.2.2 直接寻址指令中直接给出操作数所在地址的寻址方式称为直接寻址。例如,指令:MOV A,64H;A(64H)这条指令的功能是把内部
14、数据存储器地址为64H的存储单元内容送至累加器A,这个指令的操作码为0E5H,直接寻址的示意图如图33所示,设程序计数器PC=38H。由图可知,地址为64H的存储单元内容为87H,则指令执行结果是将87H送到ACC。,图3-3 直接寻址的示意图,3.2 寻址方式,应注意直接寻址方式与立即寻址方式的区别:虽然两者指令的第二字节相同,但在助记符指令中相差一个“#”号,由于符号指令与机器指令有一一对应的关系,故操作码不同,所以执行结果不一样,而在操作码中含有寻址方式的信息。3.2.3 寄存器寻址由指令指出某一个寄存器的内容作为操作数,这种寻址方式称为寄存器寻址。寄存器寻址对所选的工作寄存区R0R7进
15、行操作,操作码字节的低3位000111指明了所用的寄存器。例如,指令:MOV A,R7;A(R7),3.2 寻址方式,这条指令的功能是把寄存器R7的内容送人累加器A中,但数据存储器的4个工作寄存器区都有寄存器R7,并都有相应地址,怎样确定R7的地址呢?首先由程序状态字寄存器(PSW)中的D3位和D4位决定寄存器区,再与操作码低3位组合(n=7,为111)形成地址0FH,就是工作寄存器区1区中的R7寄存器。寄存器寻址方式执行过程如图34所示。3.2.4 寄存器间接寻址由指令指出某一个寄存器的内容作为操作数的地址,这种寻址方式称为寄存器间接寻址。特别注意:寄存器的内容不是操作数,而是操作数所在的存
16、储器地址。例如,指令:MOV A,Ri这条指令中,i=0指R0;i=1,则指R1。,图3-4 寄存器寻址方式,3.2 寻址方式,指令功能是将以寄存器R0或R1内容为地址的存储单元中的数据送入A。执行这条指令首先应找到Ri地址,Ri的8位地址A7A0中:A7A6A5=000,A2A1=00,A0由i决定,A4A3由程序状态字寄存器PSW中D4D3位决定,其作用实际是选定工作寄存器区域。寄存器间接寻址执行过程如图35所示,图中i=1,将以工作寄存器区l的R1内容64H为地址的存储单元的数据51H送人A。3.2.5 变址寻址变址寻址也称基地址寄存器加变址寄存器间接寻址,它是以程序计数器PC或数据指针
17、DPTR作为基地址寄存器,以累加器A作为变址寄存器,把两者内容相加形成操作数的地址。这种寻址方式用于读取程序存储器中常数表,或访问外部数据存储器。例如,指令:MOVC A,A+DPTR;A(A)+(DPTR),图3-5 寄存器间接寻址方式,3.2 寻址方式,这条指令的功能是把DPTR的内容作为基地址,DPTR是16位寄存器,其高8位在DPH中,低8位在DPL中。把累加器A的内容作为地址偏移量,两者相加后得到16位地址,把该地址对应的程序存储器ROM单元中的内容送到A中,A中原数据自动擦除。寻址过程示意图如图36所示。3.2.6 位寻址MCS一51指令系统有一些指令是用于位的操作。位操作指令能对
18、内部RAM中的位寻址区和某些有位地址的特殊功能寄存器进行位操作,也就是说可对位地址空间的每个位进行位变量传送、状态控制、逻辑运算等操作,常用的位处理器是程序状态字寄存器的CY位。例如,指令:MOV C,06H;CY(06H),图3-6 变址寻址方式,3.2 寻址方式,C累加器只有一位,指令是位寻址方式,操作码是0A2H,06H是位地址。指令含义是将内部RAM的20H单元的D6位的内容送入累加器C,其指令执行过程如图37所示。这条指令应区别于指令“MOV A,06H”,A是8位累加器,意思是将RAM中06H单元的内容送入A中,操作码是0E5H。3.2.7 相对寻址相对寻址以程序计数器PC的当前值
19、作为基地址,与指令中给定的相对偏移量rel相加,作为程序逻辑的转移地址。这种寻址方式用于相对转移指令中。,图3-7 位寻址方式,3.3 数据传送指令,在MCS一51单片机中,数据传送是最基本和最主要操作。数据传送操作可以在片内RAM和SFR内进行,也可以在累加器A和片外存储器之间进行。指令中必须指定传送数据的源地址和目的地址,以便机器执行指令时把源地址中内容传送到目的地址中,但不改变源地址中内容。在这类指令中,除以累加器A为目的操作数寄存器指令会对奇偶标志位P有影响外,其余指令执行时均不会影响任何标志位。MCS一51单片机的数据传送指令共有28条,分为内部数据传送指令、外部数据传送指令、堆栈操
20、作指令和数据交换指令等四类。本节将分类进行介绍,并给出相应的机器代码,以便相互对照加以理解。,3.3 数据传送指令,3.3.1 内部数据传送指令(15条)1.以A为目的操作数的指令这类指令的格式为:MOV 目的操作数,源操作数1)指令与指令代码指令 指令代码 操作MOV A,Rn 11101rrr A(Rn)MOV A,direct 11100101 direct A(direct)MOV A,Ri 1110011i A(Ri)MOV A,#data 01110100 data Adata,3.3 数据传送指令,对Rn寻址的指令,其机器码字节的低三位为rrr,对应于8个工作寄存器之一,当为00
21、0时,表示R0;为001时,表示R1;依次类推。2)指令功能 这组指令的功能是把源操作数的内容送入累加器A。3)源操作数寻址方式 立即寻址;直接寻址;寄存器寻址;寄存器间接寻址等寻址方式。例32 说明下列指令的功能及寻址方式。MOV A,R6MOV A,64HMOV A,R0MOV A,#78H,3.3 数据传送指令,解 MOV A,R6;A(R6),寄存器寻址 MOV A,64H;A(64H),直接寻址 MOV A,R0;A(R0),寄存器间接寻址 MOV A,#78H;A78H,立即寻址4)指令字节 表面看来,这组指令由三部分组成:操作码、A和源操作数,但操作码含有向A送数的信息,所以累加
22、器A不占程序存储器的存储空间,故这个指令是两字节指令。一般来说,不占程序存储器的存储空间的还有各区的工作寄存器。,3.3 数据传送指令,2以Rn为目的操作数的指令1)指令与指令代码指令 指令代码 操作MOV Rn,A 1111lrrr Rn(A)MOV Rn,direct 10101rrr direct Rn(direct)MOV Rn,#data 01111rrr data Rndata2)功能 这组指令的功能是将源操作数的内容送入当前工作寄存器区的R0R7中的某一个寄存器。3)源操作数寻址方式 立即寻址;直接寻址;寄存器寻址。,3.3 数据传送指令,例34 指出下列指令的功能和寻址方式。M
23、OV R2,#64HMOV R3,64HMOV R7,A解 MOV R2,#64H;R264H,立即寻址 MOV R3,64H;R3(64H),直接寻址 MOV R7,A;R7(A),寄存器寻址,3.3 数据传送指令,3以直接寻址的单元为目的操作数指令1)指令与指令代码指令 指令代码 操作MOV direct,A 11110101 direct direct(A)MOV direct,Rn 10001rrr direct direct(Rn)MOV direct1,direct2 10000101 direct2 direct1(direct2)MOV direct,Ri 1000011i d
24、irect direct(Ri)MOV direct,#data 01110101 direct,data directdata,3.3 数据传送指令,应注意:“MOV direct1,direct2”指令译成指令代码时,源地址(direct2)在前,目的地址direct1在后。2)功能 这组指令的功能是把源操作数送人由直接地址指向的存储单元,直接寻址时,direct可以是特殊功能寄存器的地址、内部RAM区的地址,因此允许对端口直接操作。例如,指令:“MOV P1,40H”的含义是将40H单元的内容送入P1端口,机器指令为“10000101 01000000 10010000”,是三字节指令。
25、第一字节是操作码,第二字节是源操作数的地址,第三字节是目的操作数P1的地址。3)源操作数寻址方式 立即寻址;直接寻址;寄存器寻址;寄存器间接寻址。,3.3 数据传送指令,例37 若(64H)=70H,(A)=78H,说明执行指令“MOV 64H,A”的结果。解 执行后结果为(64H)=78H,(A)=78H不变。4以寄存器间接寻址的单元为目的操作数指令1)指令与指令代码指令 指令代码 操作MOV Ri,A 111101li(Ri)(A)MOV Ri,direct 101001li direct(Ri)(direct)MOV Ri,#data 011101li data(Ri)data,3.3
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 控制 第三
链接地址:https://www.31ppt.com/p-5293763.html