




已阅读5页,还剩83页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 1 总体要求: 熟练掌握MCS-51单片机汇编语言的指令格式 熟练掌握MCS-51单片机指令的寻址方式 了解机器语言指令格式 掌握MCS-51指令系统的分类、符号约定和常用指令 能够独立完成本章作业 学习重点: MCS-51单片机的指令格式和寻址方式 MCS-51指令系统中各条指令的助记符格式、 功能等特性 第3章 MCS-51单片机的指令系统 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 3.1 指令格式和寻址方式 3.2 指令系统 2 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 3 3.1 指令格式和寻址方式 3.1.1 指令格式 MCS-51单片机的指令和一般的微型计算机一样,具有 两级形式:汇编语言级和机器语言级。对用户而言,主要 使用汇编语言来编写程序,然后由汇编程序(机器汇编) 或手工汇编将汇编语言源程序翻译成二进制代码组成的机 器语言程序。汇编语言的特点是对每一条指令都给出了助 记符。由于助记符具有用英文单词的缩写来描述指令的特 征,因此它不但便于记忆,也便于理解和分类。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 4 1. 汇编语言指令格式 MCS-51单片机汇编语言指令格式为: 标号: 操作码 操作数 ;注释 各字段之间用规定的符号隔开。方括号的部分为可选项。 例如:LOOP: MOV A,54H ;A54H 各字段的意义如下: 标号:标号给出了该指令位置的符号地址,即该指令机器 代码存储单元的地址。它是以英文字母开始的由18个字母或 数字组成的字符串,并以“:”结束。 操作码:操作码部分给出了指令所实现的操作功能。操作 码用助记符的形式给出。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 5 操作数:操作数部分给出了指令中参与操作的对象。操作 数一般分为目的操作数(上例中累加器A)和源操作数(上例 中的54H),两者之间用“,”分隔。任何指令的操作都是 实现“从源操作数到目的操作数”,因此,目的操作数和源操 作数的书写顺序不能颠倒。需要指出的是:也有些指令根据其 功能只指明了一个操作数或不需要指明操作数。 注释:注释部分是用户为方便阅读而加的注释。注释以“ ;”为开始。注释部分对汇编语言来讲可有可无,它不参与计 算机的操作,不影响指令的执行。 例如: MOV A,00H ;将累加器清0 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 6 . 机器语言指令格式 机器语言指令是一种二进制码,包括操作码和操作数 。操作码规定了该指令操作的性质,操作数则表明了操作 的对象。MCS-51的指令系统有单字节、双字节和三字节这 三种形式的指令,分别占有13个存储单元。 (1) 单字节指令:如 RETI对应的机器语言指令格式为 : (2) 双字节指令: 如 MOV A,54H对应的机器语言 指令格式为: 00110010B (32H) 操作码 01110100B (74H)操作码 01010100B (54H)操作数 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 7 (3) 三字节指令:如MOV 30H,54H对应的机器语言指 令格式为: 01110101 B (75H)操作码 00110000 B (30H)目的操作数 01010100B (54H)源操作数 单字节指令的操作码本身就隐含了操作数的信息;一般情 况下,双字节指令的首字节为操作码,第二字节为操作数或操 作数的地址;三字节指令的首字节为操作码,后面两个字节为 操作数或操作数的地址。指令字节越多,所占内存单元越多, 但执行时间的长短只取决于执行该指令需要多少个机器周期。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 8 3.1.2 寻址方式 在指令系统中,操作数是一个重要的组成部分,它 指定了参加运算的数或数所在的地址单元。如何找到操 作数地址的方式就称为寻址方式。寻址方式就是在规定 的地址范围内如何灵活地、方便地找到所需要的操作数 地址。 MCS-51单片机指令操作数或操作数地址主要有以下7 种寻址方式。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 9 1. 立即寻址 立即寻址就是在指令中的操作数(8位或16位), 这个操作数称为立即数。用符号“”表示立即数,以 区别直接地址。 例如:MOV A,3AH ;A3AH 功能:把3AH这个数送入累加器A中。 例如:MOV DPTR,0123H ;DPTR0123H 功能:将数据指针DPTR传送16位的立即数,立即数 的高8位送入DPH中,低8位送入DPL中。此为三字节的指 令,指令代码为90H、01H、23H。立即寻址示意图如图3 -1所示。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 10 (a)MOV A,#3AH (b)MOV DPTR,#0123H 图3-1 立即寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 11 2. 直接寻址 直接寻址就是在指令中直接给出了操作数的地址。 提供了访问内部数据存储器3种地址空间的方法:可以 访问内部RAM128个字节单元、221个位地址空间以及特 殊功能寄存器SFR,且SFR和位地址空间只能用直接寻址 的方式来访问。 例如:MOV A,70H;A(70H) 功能:把片内RAM 70H单元的内容送入累加器A中, 图3-2示。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 12 图3-2 直接寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 3. 寄存器寻址 寄存器寻址是在指令中指定某一寄存器的内容为操 作数。对累加器A、通用寄存器B、数据指针寄存器DPTR 和进位位CY,其寻址时具体的寄存器已隐含在其操作码 中,而对选定的8个工作寄存器R0R7则用操作码的低三 位指明所用的寄存器。用户可用PSW中的RS1、RS0来选择 寄存器组 。 例如:MOV A,R5;AR5 功能:把R5中的内容(设R561H)送入累加器A中 。该指令执行过程如图3-3所示。 13 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 14 图3-3 寄存器寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 15 4. 寄存器间接寻址 寄存器间接寻址是把指令中指定的寄存器的内容作为 操作数的地址,把该地址单元的内容作为操作数。这种寻 址方式用于访问内部RAM和外部RAM。可用来间接寻址的寄 存器有R0、R1、堆栈指针SP以及16位的数据指针DPTR,使 用时前面加符号表示间接寻址。 例如:MOV A,R1 ;A(R1) 其指令代码形式为11100111,十六进制为E7H,注意最 低位为1,表示现在使用的寄存器为 R1。现假设工作寄存 器为第0组,R1中存放的是75H。则执行该指令过程如图3- 4所示。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 16 图3-4 寄存器间接寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 5. 变址寻址 变址寻址是以某个寄存器的内容为基地址,然后在 这个基地址的基础上加上地址偏移量形成真正的操作数 地址MCS-51单片机可由DPTR或PC作为基址寄存器,由累 加器A作为偏移量寄存器。这种寻址方式常用于查表操作 。 例如:MOVC A,A+DPTR ;A(A+DPTR) 功能:把DPTR中的内容和A中的内容相加作为16位的 程序存储器地址,再把该地址对应单元的内容送入累加 器A中。执行该指令过程如图3-5所示。 17 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 18 图3-5 变址寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 19 6. 相对寻址 相对寻址用于转移指令的操作,将程序计数器PC中的 当前值(相对转移指令后的字节地址)与指令第二字节给 出的偏移量相加,将其结果作为转移指令的目标地址。指 令第二字节给出的偏移量有正负号,在指令中以补码形式 给出,转移的范围在-128+127之间。 例如;JZ 30H ;A0条件成立转移 功能:若A0,不跳转继续执行下一条指令;若A0 ,则以PC中的当前值为基地址,加上偏移量30H后所得到 的结果为该转移指令的目的地址,从而实现程序的转移。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 设该指令存放于0100H、0101H单元,取出指令后, PC当前值为0102H;对A进行判断,若A0,则PC内容与 偏移量30H相加,得到转移目的地址0132H。故执行完该 指令后,PC中的值为0132H,程序从0132H处开始执行。 执行过程如图3-6所示。 20 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 21 图3-6 相对寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 22 在实际工作中,有时要根据已知源地址和目的地址 计算偏移量rel。现以两字节相对转移指令为例讨论偏移 量rel的计算。 正向跳转:rel目的地址-源地址-2地址差-2 目的地址小于源地址,rel用负数的补码表示。 反向跳转:rel(目的地址-源地址-2)补 (目的地址-(源地址+2) 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 7. 位寻址 位寻址是指对片内RAM的位寻址区和某些有位地址的 特殊功能寄存器进行位操作时的寻址方式。位地址与直 接寻址中的字节地址形式完全一样,主要由操作码来区 分。 例如:MOV C,07H 功能:把内部RAM 20H单元的D7位(位地址为07H) 的内容传到位累加器C(即CY)中,其操作过程如图3-7 所示。 23 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 24 图3-7 位寻址示意图 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 25 3.2 指令系统 MCS-51单片机共有111条指令,按字节数分类,单字节指令 49条,双字节指令45条,三字节指令17条;按执行时间分类, 单机器周期指令64条,双机器周期指令45条,只有乘法和除法 指令占用四个机器周期。若系统时钟为12MHz,大多数指令执行 时间仅需1s;按功能分类可划分为五类: (1) 数据传送类指令28条; (2) 算术运算类指令24条; (3) 逻辑操作类指令25条; (4) 控制转移类指令17条; (5) 位操作类指令17条。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 26 在汇编语言指令中,约定采用以下符号: Rn(n=17)指定当前选中的工作寄存器组中名为R0 R7的工作寄存器,被选中的工作寄存器组由PSW中RS0、RS1确定 。 Ri(i=0、1)指定当前选中的工作寄存器组中可作为地 址指针的两个工作寄存器R0、R1。 data 代表8位立即数,包含在指令中的8位常数。 data16 代表16位立即数,即包含在指令中的16位常 数。 direct 代表8位片内RAM单元的直接地址。 addr11 代表11位目的地址。用于ACALL 和AJMP指令中 ,目的地址必须在下一条指令第一个字节同一2K字节程序存储 器地址空间内。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 27 addr16 代表16位目的地址。用于LCALL和LJMP指令中 ,目的地址在64K程序存储器地址空间内。 rel 指定补码形式的8位地址偏移量。用于相对转移 指令中,偏移量以下一条指令第一字节地址为基址,地址偏移 量范围为-128+127。 bit 代表片内RAM或SFR可直接寻址的位地址。 间接寻址方式中,表示间址寄存器的符号。 / 位操作指令中,表示先对该位求反再参与操作, 但不影响该位原值。 () 表示由所指地址单元中的内容。 指令操作流程,将箭头右边的内容送到箭头左边 的单元中。 $ 指本条指令的起始地址 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 28 3.2.1 数据传送类指令 传送类指令主要用于数据传送、保存以及交换等场合 。 数据传送指令除通过累加器进行数据传送之外,还可 以是数据存储器之间或工作寄存器与数据存储器之间进行 数据传送。它一般是把源操数传送到目的操作数,指令执 行后源操作数不变,目的操作数修改为源操作数。此类指 令一般不影响标志位,只有堆栈操作可以直接修改程序状 态字PSW。另外,对目的操作数为累加器A的指令将影响奇 偶标志P位。 数据传送类指令用到的助记符有MOV、MOVC、MOVX、 XCH、XCHD、SWAP、PUSH、POP共8种。源操作数可以采用寄 存器、寄存器间接、直接、立即、变址5种寻址方式,目的 操作数采用前三种寻址方式。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 29 1. 对内部RAM和SFR的一般数据传送指令(15条) (1) 以累加器A为目的操作数的指令(4条) 功能:把源操作数指定的内容送入累加器A中。使用 寄存器寻址、直接寻址、寄存器间接寻址和立即寻址4种 寻址方式。 MOV A,Rn ;ARn MOV A,direct ; A(direct) MOV A,Ri ; A(Ri) MOV A,data ; Adata 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 30 (2) 以寄存器Rn为目的操作数的指令(3条) 功能:把源操作数指定的内容送到所选定的工作寄存 器Rn中。使用寄存器寻址、直接寻址和立即寻址3种寻址方 式。 MOV Rn ,A ; RnA MOV Rn ,direct ; Rn(direct ) MOV Rn ,data ; Rndata 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 (3) 以直接地址为目的操作数的指令(5条) 功能:把源操作数指定的内容送到由直接地址 direct所指定的片内RAM中。使用寄存器、直接、寄存 器间接和立即4种寻址方式。 MOV direct,A ;(direct) A MOV direct,Rn ;(direct )Rn MOV direct1,direct2 ;(direct1)(direct2) MOV direct, Ri ; (direct) (Ri) MOV direct,data ; (direct) data 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 32 (4) 以间接地址为目的操作数的指令(3条) 功能:把源操作数指定的内容送到以Ri中的内容为 地址的片内RAM中。使用寄存器、直接和立即3种寻址方 式。 MOV Ri,A ;(Ri)A MOV Ri,direct ;(Ri)(direct) MOV Ri,# data ;(Ri)data 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 33 例3.1 利用直接寻址把立即数32H送到内部RAM的 20H单元。 MOV 20H,32H 例3.2 利用寄存器间接寻址把立即数32H送入内部 RAM的20H单元。 MOV R0,20H MOV R0,32H 例3.3 利用直接寻址把P1口的内容传送到P3口。 MOV P3,P1 例3.4 利用寄存器间接寻址把累加器A的内容传送 到外部数据存储器4000H单元。 MOV DPTR,4000H MOVX DPTR,A 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 34 2. 累加器与程序存储器的传送指令(2条) 功能:对存放于程序存储器中的表格数据进行查找传 送。使用变址寻址方式。 MOVC A,A+DPTR ;A(A+DPTR) MOVC A,A+PC ;A(A+PC) 3. 累加器与片外RAM传送指令(4条) 功能:累加器A与片外RAM间的相互传送。片外扩展的 I/O口与片外RAM是统一编址的,故以下4条指令也可以作 为输入/输出指令。其使用寄存器间接寻址方式。 MOVX A, DPTR ;A(DPTR) 或读I/O线 MOVX DPTR,A ;(DPTR)A 或写I/O线 MOVX A,Ri ; A (Ri) 或读I/O线 MOVX Ri,A ;(Ri) A 或写I/O线 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 35 4. 堆栈操作类指令(2条) 功能:把直接寻址单元的内容传送到堆栈指针SP所指 的单元中,以及把SP所指单元的内容送到直接寻址单元。 PUSH direct ; SPSP+1 (SP)(direct) POP direct ; SPSP-1 (direct)(SP) 前一条指令称为入栈指令,后一条指令称为出栈指令 ,51机复位后,(SP)=07H,为防止与工作寄存器组发生冲 突,一般需重新设定SP的初始值。由于压入堆栈的第一个 数必须存放在SP+1所指存储单元,故实际的栈底为SP+1所 指存储单元。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 36 例3.5 设(10H)01H,(20H)1AH。将内部RAM 10H与20H单元的内容交换。 MOVSP,30H PUSH10H ;10H单元内容进栈 PUSH20H ;20H单元内容进栈 POP10H ;将栈顶元素弹出,送往10H单元 POP20H ;下一个元素出栈,送20H 单元 执行结果:(10H)1AH,(20H)01H 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 例3.6 根据累加器A中的数(09)查平方表的子程 序。 COUNT:PUSHDPH;保护DPTR内容 PUSHDPL MOVDPTR,TABLE ;赋表首址 MOVCA,A+DPTR ;查表并传送给A POPDPL;恢复DPTR原值 POPDPH RET;返回主程序控制 TABLE:DB 00,01,04,09,16,25 DB 36,49,64,81 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 38 5. 交换指令(4条) 功能:把累加器A中的内容与源操作数所指出的数据相互交 换。使用寄存器、直接和寄存器间接3种寻址方式。 XCHA,Rn ;ARn XCHA,direct ;A(direct ) XCHA,Ri ;A(Ri) XCHDA,Ri ;A30(Ri)30 6. 16位数据传送类指令(1条) MOV DPTR,data16 功能:把16位常数送入数据指针寄存器。使用立即寻址 方式。译成机器码时,高位字节在前,低位字节在后。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 39 3.2.2 算术运算类指令 算术运算类指令主要完成加、减、乘、除四则运算, 以及加1、减1和BCD码的运算、调整等。除加1、减1运算外 ,这类指令大多数都要影响到程序状态字寄存器PSW。 虽然算术逻辑单元ALU仅能对8位无符号整数进行运算,但 利用进位标志CY,可进行多字节无符号整数的运算;利用 溢出标志,还可方便地对带符号数进行补码运算。算术运 算类指令用到的助记符有:ADD、ADDC、SUBB、INC、DEC、 DA、MUL和DIV八种。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 40 1. 加法指令(4条) ADD A,data ;AA+data ADD A,direct ;AA +(direct) ADD A,Ri ;AA+(Ri) ADD A,Rn ;AA+Rn 以上指令把立即数、直接地址、间接地址以及工作 寄存器的内容与累加器A中内容相加,结果送入A中。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 41 例3.7 A0C3H,R00AAH,执行ADD A,R0指令 ,则操作如下: 11000011 ) 10101010 101101101 运算后,CY1,OV1,AC0,P1,A6DH。 上例中若C3H和AAH看作无符号数相加,则不考虑溢 出,结果为15DH;若把C3H和AAH看作有符号数,则得到2 个负数相加得正数的错误结论,此时OV1,表示出错。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 42 2. 带进位加法指令(4条) ADDC A,data ;AA+data+CY ADDC A,direct ;AA+(direct)+CY ADDC A,Ri ;AA+(Ri)+CY ADDC A,Rn ;AA+Rn+CY 以上指令除了需考虑进位位外,和前面的一般加法指令完 全相同。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 43 例3.8 A0AEH,R081H,CY1,执行 ADDC A,R0指令,则操作如下: 10101110 10000001 ) 1 100110000 运算后,CY=1,OV=1,AC=1,P=0,A=30H。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 44 例3.9 利用ADDC指令进行双字节加法运算。 设在双字节加法运算中,被加数存放在30H、31H单 元,加数放在40H、41H单元,和存放到50H、51H单元, 编程如下: MOV A,30H ;取低字节被加数 ADD A,40H ;低位字节相加 MOV 50H,A ;结果送50H单元 MOV A,31H ;取高字节被加数 ADDC A,41H ;加高字节和低位来的进位 MOV 51H,A ;结果送51H单元 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 45 3. 带借位减法指令(4条) SUBB A,data ;AA-data-CY SUBB A,direct ;AA-(direct)-CY SUBB A,Ri ;AA-(Ri)-CY SUBB A, Rn ;AA-Rn-CY 以上指令把立即数、直接地址、间接地址及工作寄 存器的内容和借位位CY与累加器A中内容相减,结果送回 A中。 OV1表示带符号数相减时,从一个正数中减去一个 负数结果为负数,或从一个负数中减去一个正数结果为 正数的错误情况。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 46 例3.10 AC9H,R354H,CY1,执行指令 SUBB A,R3,则操作如下: 11001001 01010100 ) 1 01110100 运算后,CY=0,AC=0,OV=1,P=0,A=74H。 注意:在进行单字节或多字节减法的低位运算前, 要保证借位标志位CY的值为0,故在进行运算前要对CY 清0。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 47 例3.11 利用SUBB指令进行双字节的减法运算。 设被减数存放在30H、31H单元中,减数存放在40H 、41H单元中,差存在50H、51H单元中。编程如下: MOVA,30H ;被减数低字节送A CLRC ;低字节减无借位CY清0 SUBBA,40H ;低位字节相减 MOV50H,A ;结果送50H单元 MOVA,31H ;被减数高字节送A SUBBA,41H;高字节相减 MOV51H,A ;结果送51H单元 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 48 4. 乘法指令(1条) MUL AB ; BAAB 功能:将累加器A和寄存器B中的8位无符号整数相乘 ,所得16位乘积的低8位存放在A中,高8位存放在B中。若 乘积大于FFH,则溢出标志OV为1,否则为0,乘法运算总 使进位标志CY=0。 例3.12 A=4EH,B=5DH,执行 MUL AB指令, 则结果如下: A=55H B=1CH OV=1 P=0 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 49 例3.13 利用乘法指令编写15H33H的程序,将乘积 的高8位存入31H单元,低8位存入30H单元。编程如下: MOV A,15H;被乘数送A MOV B,33H;乘数送B MUL AB;相乘 MOV 30H,A ;积的低8位送30H MOV 31H,B ;积的高8位送31H 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 50 5. 除法指令(1条) DIV AB ;AAB的商,B余数 功能:把累加器A中的8位无符号整数除以寄存器B中8 位无符号整数,所得商送入A中,余数送入B中。除法运算 总使CY和OV清0。 若除数(B中内容)为00H,则执行结果为不定值,此时 OV1,表示除法溢出。 例3.14 A=87H,B=0CH,执行DIV AB 指令,则结果 如下所示: A=0BH B=03H OV=0 CY=0 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 51 6. 加1指令(5条) INC A ;AA+1 INC direct ;(direct)(direct)+1 INC Ri ;(Ri)(Ri)+1 INC Rn ;RnRn+1 INC DPTR ;DPTRDPTR+1 功能:把所指定寄存器或存储单元的内容加1,结果仍 送回原寄存器或存储单元,运算结果不影响任何标志位。若 原来的内容为0FFH,则加1后将为00H。该组指令使用了直接 、寄存器、寄存器间接寻址方式。 在第二条指令中,若直接地址是I/O口,则进行“读改 写”操作。其功能是先读入端口锁存器的内容,然后在CPU 中加1,继而再输出到该端口。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 52 7. 减指令(4条) DEC A ;AA-1 DEC direct ;(direct)(direct)-1 DEC Ri ;(Ri)(Ri)-1 DEC Rn ;RnRn-1 DEC指令把所指定寄存器或存储单元的内容减1,结果 仍送回原寄存器或存储单元,若原来的内容为00H,则减1 后将为0FFH,运算结果不影响任何标志位,该组指令使用 了直接、寄存器和寄存器间接寻址。 同INC指令一样,在第二条指令中,若直接地址是I/O 口,则同样是进行“读改写”操作。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 53 8. 十进制(BCD码)调整指令(1条) DA A 在进行BCD码运算时,跟在ADD和ADDC指令之后,将 相加后存放在累加器A中的结果进行调整修正。 修正的条件和方法为: 若(A03)9或(AC)=1,则(A03)(A03)+6H 若(A47)9或(CY)=1,则(A47)(A47)+60H 若以上两条同时发生,或高4位虽等于9,但低4位修 正后有进位,则应加66H调整。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 54 例3.15 利用十进制加法调整指令作十进制减法运 算(应采用补码相加的方法,用9AH减去减数即得以10为 模的减数补码)。 设被减数存放在30H单元,减数存放在40H单元,结果 存放在50H单元,编程如下: CLR C ;清进位位 MOV A,9AH ;求减数补码 SUBB A,40H ADD A,30H ;与补码相加 DA A ;十进制调整 MOV 50H,A ;结果存放在50H单元 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 55 3.2.3 逻辑运算类指令 逻辑运算类指令包括与、或、异或、清零、求反、 左右移位等操作指令。其对应的寻址方式有直接寻址、 寄存器寻址和寄存器间接寻址。执行时一般不影响程序 状态寄存器PSW,仅当目的操作数为A时对奇偶标志P位有 影响,带进位的移位指令影响CY位。逻辑运算指令用到 的助记符有ANL、ORL、XRL、RL、RLC、RR、RRC、CLR和 CPL共9种。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 56 1. 循环移位指令(4条) RR A ; RL A ; RLC A ; RRC A ; 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 57 前两条指令是将累加器A的内容循环左移或右移一位 ,后两条指令是将累加器A的内容连同进位位CY一起循环 左移或右移一位。 例3.16 利用累加器循环左移指令对A中内容进行 乘10操作。设A=X,编程如下: RL A ;得到2 X MOV B,A;转存到B RL A ;得到4 X RL A ;得到8 X ADD A,B ;A(8 X +2 X) 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 58 2.累加器半字节交换指令(1条) SWAP A ;A30A74 功能:将累加器A的高低两半字节交换。如(A)=50H ,执行SWAP A指令后,结果(A)=05H。 3.求反指令(1条) CPL A ;AA 4.清0指令(1条) CLR A ;A0 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 59 5.逻辑与指令(6条) ANL A,data ; AAdata ANL direct,data ;(direct)(direct)data ANL A,Rn ; AARn ANL A,direct ; AA(direct) ANL direct,A ;(direct)(direct)A ANL A, Ri ; AA(Ri) 这组指令的第二条和第五条指令中,如果直接地址正 好是I/O口,则也是进行“读改写”操作。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 60 6.逻辑或指令(6条) ORL A,data ;AAdata ORL direct,data ;(direct)(direct)data ORL A,Rn ;AARn ORL A,direct ;AA(direct) ORL direct,A ;(direct)(direct)A ORL A, Ri ;AA(Ri) 这组指令的第二条和第五条也具有“读改写”功能 。 7.逻辑异或指令(6条) XRL A,data ; AAdata XRL direct,data ;(direct)(direct)data XRL A,Rn ;AARn XRL A,direct ;AA(direct) XRL direct,A ;(direct)(direct)A XRL A, Ri ;AA(Ri) 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 61 例3.17 设P1中内容为AAH,A中内容为15H,执行下 列程序: ANL P1,0F0H;P1=0A0H ORL P1,0FH;P1=0AFH XRL P1,A;P1=0BAH 从上例可见,逻辑操作是按位进行的,所以“ANL” 操作常用来屏蔽字节中的某些位,要保留的位用“1”去 “与”,要清除的位用“0”去“与”。“ORL”操作常 用来对字节中的某些位置“1”,要保留的位用“0”去 “或”,要置1的位用“1”去“或”。“XRL”操作常用 来对字节中的某些位求反,要保留的位用“1”去“异或 ”。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 62 例3.18 把累加器A中的低4位送到外部RAM的2000H 单元中,程序为: MOV DPTR,2000H ;DPTR2000H ANL A,0FH ;AA0FH(屏蔽A的高4位 ) MOVX DPTR,A ;DPTRA 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 63 3.2.4 控制转移类指令 控制转移类指令用于控制程序的走向。包括:无条件 转移指令、条件转移指令以及子程序调用和返回指令,作 用区间是程序存储器空间,一般不影响标志位。控制转移 类指令用到的助记符有:LJMP、AJMP、SJMP、JMP、JZ、 JNZ、CJNE、DJNZ等多种。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 1.无条件转移指令(4条) 无条件转移指令的功能是当程序执行完此类转移指令后 ,程序就无条件地转到指令所提供的目的地址去。 LJMP addr16 ;PCaddr16 AJMP addr11 ;PCPC+2,PC100addr11, ; PC1511不变 SJMP rel ;PCPC+2+rel JMP A+DPTR ;PCA+DPTR 64 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 65 第一条指令称为长转移指令。该指令为3字节指令, 指令中提供16位目标地址,将指令中第二字节和第三字节 地址码分别装入PC的高8位和低8位中,以实现程序的转移 。所以该指令转移的目标地址范围是在整个64K字节的存 储空间内。 第二条指令称为绝对转移指令。该指令为2字节指令 ,指令中提供11位目标地址,所以该指令转移的目标地址 范围是从下条指令开始的2K字节的存储空间内,如图3-8 所示。 由图3-8可见,该指令的转移地址由指令操作码的高3 位和第二字节组成,可以在2K字节的存储空间内实现转移 。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 66 图3-8 AJMP 指令执行示意图 AJMP指令第一字节( 操作码) 第二字节 A10 A9 A8 0 0 0 0 1A7 A6 A5 A4 A3 A2 A1 A0 PC PC高5位PC低11位 Addr 11 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 67 第三条指令称为相对转移指令又称为短转移指令。该 指令为2字节指令,指令中的rel是一个带符号的相对偏移 量,范围为-128+127。负数表示向后转移,正数表示向 前转移,该指令执行后程序转移到当前PC值与rel之和所指 示的单元地址处。 第四条指令称为间接转移指令又称散转移指令。转移 地址由数据地址指针DPTR与该累加器A中的8位无符号数之 和形成。该指令执行后不影响DPTR和A中的原内容,也不影 响任何标志位,只是把相加的结果直接送PC,以实现程序 的转移。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 68 例3.19 根据data的数值设计散转表程序,当data=0时, 转处理程序G0,当data=1时,转处理程序G1, ,当data=n时 ,转处理程序Gn。编程如下: MOV A,data RL A ;将A修正为偶数 MOV DPRT,TABLE ;表首址送DPTR JMP A+DPTR ;以A中内容为偏移量跳转 TABLE:AJMPG0 AJMPG1 AJMPG2 AJMPGn (注意:data可以是任意数,但由于AJMP是双字节指令, 所以A中的数值必须修正为偶数)。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 69 2.条件转移指令(13条) 条件转移指令是依据某种特定条件实现转移的指令。 条件满足时实现转移,其目标地址在下一条指令的起始地 址为中心的256个字节范围内(-128+127);条件不满 足时则顺序执行下面一条指令。 条件转移指令非常丰富,包括判累加器零转移、判位 状态转移、比较转移和循环转移共4组。 JZ rel ;若A0,则转移,PCPC+2+rel 若A0,则顺序执行,PCPC+2 JNZ rel ;若A0,则转移,PCPC+2+rel 若A0,则顺序执行,PCPC+2 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 70 CJNE A,direct,rel ;若A(direct),则顺序执行, PCPC+3,C0 若A(direct),则转移, PCPC+3+rel,C0 若A(direct),则转移, PCPC+3+rel,C1 CJNEA,#data,rel ;若Adata,则顺序执行, PCPC+3,C0 若Adata,则转移, PCPC+3+rel,C0 若Adata,则转移, PCPC+3+rel,C1 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 71 CJNERn,#data,rel ;若Rndata,则顺序执行, PCPC+3,C0 若Rndata,则转移, PCPC+3+rel,C0 若Rndata,则转移, PCPC+3+rel,C1 CJNERi,#data,rel ;若(Ri)data,则顺序执行, PCPC+3,C0 若(Ri)data,则转移, PCPC+3+rel,C0 若(Ri)data,则转移, PCPC+3+rel,C1 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 72 DJNZRn,rel ;RnRn-1,若Rn0,则转移 PCPC+2+rel若Rn0,则顺序 执行,PCPC+2 DJNZdirect,rel ;(direct)(direct)-1,(direct)0, 则转移,PCPC+3+rel 若(direct)0,则顺序执行, PCPC+3 JC rel ;若C=1,则转移,PCPC+2+ rel 若C=0,顺序执行,PCPC+2 JNC rel ;若C=0,则转移,PCPC+2+ rel 若C=1,顺序执行,PCPC+2 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 73 JB bit,rel ;若(bit)=1,则转移,PCPC+3+ rel 若(bit)=0,顺序执行,PCPC+3 JNB bit,rel ;若(bit)=0,则转移,PCPC+3+ rel 若(bit)=1,顺序执行,PCPC+3 JBC bit,rel ;若(bit)=1,则转移,PCPC+3+ rel 且(bit)0 若(bit)=0,顺序执行, PCPC+3 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 JZ和JNZ指令是判别累加器A的内容是否为0来确定是 顺序执行还是转移。 CJNE是比较转移指令,通过比较前面两个操作数的 大小,如果它们的值不相等则转移,相等则继续执行。 指令执行后要影响进位位CY,若操作数1小于操作数2, 则CY1;若操作数1大于操作数2,则CY0。 JC、JNC、JB和JNB指令的功能分别是判别进位位CY 和直接位地址的内容是“1”还是“0”,以此来决定程 序的走向。JBC指令的功能是:若直接位地址的内容为 “1”则转移,并且同时将该位清0,否则顺序执行。这 条指令若是对I/O口某一位操作,也具有“读改写” 功能。 74 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 75 例3.20MOVP1,87H ;P187H MOVA,55H ;A55H JBP1.3,L1 ;若P1.3=1,转L1,否则不转 JNBACC.3,L2 ;若ACC.3=0,转L2处执行 L1: L2: 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 76 3.调用子程序及返回指令(4条) 程序设计中,要对某段程序反复执行,同时要减少 程序的编写和减少浪费不必要的地址空间,引入了主程 序和子程序的概念,通常把某一段需反复调用的程序称 为子程序,子程序的最后一条指令为返回主程序指令 (RET),而对具有调用子程序功能的指令称为调用指令。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 77 LCALL addr 16 ;PCPC+3,SPSP+1 SPPC70,SPSP+1 SPPC158,PC addr 16 ACALL addr 11 ;PCPC+2,SPSP+1, SPPC70, SPSP+1, SPPC158,PC100addr100, PC1511保持不变 RET ;PC158SP,SPSP-1,PC70SP SPSP-1 RETI ;中断返回,除具有RET的功能外还可以 恢复中断逻辑。 单片机原理及应用单片机原理及应用 第3章 MSC-51单片机的指令系统 78 LCALL指令称为长调用指令,与LJMP一样提供16位地 址,可调用64K字节范围内的子程序。由于其为三字节指 令,所以执行时首先PCPC+3,以获得下一条指令地址 ,并把此时的PC内容压入堆栈,作为返回地址,然后把 目标地址addr16 装入PC,转去执行子程序。 ACALL指令称为绝对调用指令,提供11位目标地址, 限制在2K字节范围内调用,是双字节指令所以执行
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肾盂癌健康教育
- 高尿酸血症知识测验题(附答案)
- 2025年事业单位工勤技能-湖南-湖南仓库管理员一级(高级技师)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北计量检定工三级(高级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-湖北-湖北不动产测绘员五级(初级工)历年参考题库典型考点含答案解析
- 2025年事业单位工勤技能-海南-海南计算机信息处理员二级技师历年参考题库含答案解析
- 2025年事业单位工勤技能-浙江-浙江防疫员二级(技师)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-浙江-浙江医技工五级(初级工)历年参考题库含答案解析(5套)
- 2025年事业单位工勤技能-河南-河南公路养护工二级(技师)历年参考题库典型考点含答案解析
- 2024版吊车出租合同包月
- 2024年泰州市靖江市公安局招聘警务辅助人员真题
- 国际快递基本知识培训课件
- 塔吊拆除安全操作方案模板
- 普惠金融业务讲座
- 虚拟健康咨询接受度分析-洞察及研究
- 多发性周围神经病护理查房
- 2025年高警示药品管理试题(附答案)
- 2025年低压电工证考试题及参考答案
- 省政府顾问管理办法
- 消防法制业务培训课件
- 医院药剂科运用PDCA循环降低拆零药品管理不合格率品管圈
评论
0/150
提交评论