当前位置:首页 >> 高中教育 >>

第三章 51系列单片机指令系统和汇编语言程序示例


第三章

51系列单片机指令系统和汇编语言 程序示例

本重点: 寻址方式;

MCS-51指令集;
伪指令;

汇编语言与简单程序设计.

《单片微机原理及应用》教学课件

它通过单片机的内部总线,将单片机内部的各个 部分:程序存储器(ROM)、数

据存储器(RAM)、定时/ 计数器、并行接口、串行接口和中断系统等联系在 一起 。
内部总线有三种

数据总线:专门用来传送数据信息 。 地址总线:专门用来传送地址信息,选中各操作 单元。 控制总线:专门用来传送CPU各种控制命令,以 便CPU统一指挥协调工作。完成程序所要执行的 各种功能。

程序计数器PC(program Counter) 程序计数器在物理上是独立的,它不属于特殊 内部数据存储器块中。
PC是一个16位的计数器,由两个八位寄存器PCH 和PCL组成,用于存放一条要执行的指令地址,寻址 范围为64kB(ROM),PC有自动加1功能,即完成了 一条指令的执行后,其内容自动加1。 PC本身并没有地址,因而不可寻址,用户无法 对它进行读写,但是可以通过转移、调用、返回等 指令改变其内容,以控制程序的执行顺序。

CPU执行程序一般包括两个主要过程 第一,就是从程序存储器中取出指令,指令的地址由PC 指针提供。

第二,就是执行指令过程,取出的指令代码首先被送到 CPU中控制器中的指令寄存器,再通过指令译码器译码 变成各种电信号,从而实现指令的各种功能。
取指令 分析

执行

3.1 51系列单片机指令系统概述
3.1.1指令与指令系统的概念
指令:是使计算机内部执行的一种操作,提供给 用户编程使用的一种命令。 机器语言:由构成计算机的电子器件特性所决定, 计算机只能识别二进制代码。以二进制代码来描述 指令功能的语言,称之为机器语言。 汇编语言:由于机器语言不便被人们识别、记忆、 理解和使用,因此给每条机器语言指令赋予助记 符号来表示,这就形成了汇编语言。

也就是说,汇编语言是便于人们识别、记忆、 理解和使用的一种指令形式,它和机器语言指令一 一对应,也是由计算机的硬件特性所决定的。
指令系统:计算机能够执行的全部操作所对应的 指令集合,称为这种计算机的指令系统。 指令系统全面展示出了计算机的操作功能,也 就是它的工作原理;从用户使用的角度来看,指令 系统是提供给用户使用计算机功能的软件资源。要 让计算机处理问题,首先要编写程序。编写程序实 际上是从指令系统中挑选一个指令子集的过程。

指令一般有功能、时间和空间三种属性。
51系列单片机指令集含有111条指令
每条指令在程序存储器ROM中占据一定的空间, 以字节为单位。按指令所占字节数分类: 单字节(49条);双字节(46条);3字节(16条) 每条指令在执行时要花去一定的时间,以机器 周期为单位。按指令执行时间分类: 单周期(64条);双周期(45条);4周期(2条) 按指令的功能分类,可分为5大类: 数据传送类(29条);算术运算类(24条) 逻辑运算及移位类(24);控制转移类(17条) 位操作类(17条)
《单片微机原理及应用》教学课件

指令的描述形式有两种:机器语言形式 和汇编语言形式。现在描述计算机指令系统及 实际应用中主要采用汇编语言形式。 目标程序:采用机器语言编写的程序称之为 目标程序。

源程序:采用汇编语言编写的程序称之为源 程序。

汇编:计算机能够直接识别并执行的只有机器语 言。汇编语言程序不能被计算机直接识别并执行, 必须经过一个中间环节把它翻译成机器语言程序, 这个中间过程叫做汇编。

汇编有两种方式:机器汇编和手工汇编。机器汇 编是用专门的汇编程序,在计算机上进行翻译; 手工汇编是编程员把汇编语言指令逐条翻译成机 器语言指令。现在主要使用机器汇编。

目前,比较流行C语言单片机。C语言具有

移植性强,具有通用性,阅读性好等特点,因
此得到广泛应用。用C语言编写单片机程序, 编译软件是先把C程序编译成汇编语言,在把

汇编语言翻译成机器语言。 汇编的特点:简洁,准确,生成代码质量
高。我们学习以汇编为主,今后应用,鼓励大 家用C。

3.1.2 MCS-51单片机指令系统及其指令格式
ASM-51指令的格式
[标号:]操作码 [目的操作数][,源操作数][;注释]
? 方括符[ ]表示可选项 ? 标号代表指令所在的首地址,在跳转、调用时常

常用到,1-8个字母/数字,“:”结尾 ? 操作码就是指令功能助记符,指令实体 ? 目的操作数 ? 源操作数(无操作数,单操作数,双操作数) ? 注释,以“;”开头
《单片微机原理及应用》教学课件

指令描述符号介绍
? ? ? ? ? ?

?

Rn——当前选中的寄存器区中的8个工作寄存器 R0~R7(n=0~7)。 Ri——当前选中的寄存器区中的2个工作寄存器R0、 R1(i=0,1)。 direct— 表示直接寻址的地址,一般指片内低 128字节RAM或SFR。 #data——包含在指令中的8位常数。 #data16——包含在指令中的16位常数。 addr16——16位直接地址,现在长以标号地址代 替。 addr11——11位直接地址,现在长以标号地址代 替。

rel——8位带符号的偏移字节,简称偏移 量,现在长以标号地址代替。 ? DPTR——数据指针,可用作16位地址寄存 器。 ? bit——内部RAM或专用寄存器中的直接寻 址位。 ? A——累加器。 ? B——专用寄存器,用于乘法和除法指令中。 ? C——进位标志或进位位,或布尔处理机中 的累加器。
?

?

@——间址寄存器或基址寄存器的前缀,如@Ri, @DPTR。 / ——位操作数的前缀,表示对该位操作数取反,如 /bit。 ((×))——表示以×单元的内容为地址的存储器单元 中的内容,即(X)作地址,该地址单元中的内容 用((X))表示。所以X只能是Ri/SP所对应的地址。

?

? ?

(×)——片内RAM的直接地址或寄存器中的内容。

?

——箭头左边的内容被箭头右边的内容所代替。

1、立即寻址 操作数直接在指令中给出。 例:MOV A,#64H ;(A)← 立即数 64H ADD A,#05H ;(A)←(A)+立即数 05H

注意:符号“#”表明其后跟的是立即数, 立即数——就是数字量本身,存放在 ROM区。

《单片微机原理及应用》教学课件

2、寄存器寻址 从寄存器中读取操作数或存放操作数进寄存器 例:MOV A,B ; (A) ←(B) MOV 30H,R0 ;(30H)←(R0) MOV A,R1 ; (A) ←(R1) RS1 RS0 0 0 1 1 0 1 0 1 工作寄存器组 0(R0~~~R7) 1 (R0~~~R7) 2 (R0~~~R7) 3 (R0~~~R7)
《单片微机原理及应用》教学课件

寄存器寻址方式的寻址范围:
1) 4个工作寄存器组共32个通用寄存器(在指令中只能 使用当前寄存器组) 2) 部分特殊功能寄存器。如A,B,DPTR。注意: (1)寄存器B只有在执行乘除法指令时才是寄存器寻址 方式; (2)累加器A有三种表示方式:A、ACC、0E0H,它们分 别属于不同的寻址方式,A为寄存器寻址,ACC、0E0H 属于直接寻址。 (3)DPTR:程序中写DPTR则为寄存器寻址;如果程序中 写DPH(83H)和DPL(82H),则为直接寻址。

3、直接寻址 指令中直接给出了操作数所在单元的地址或名称 例:MOV R1,1FH ;(R1) ←(1FH) MOV 30H,4AH ;(30H)←(4AH) 在本单片机中规定:访问特殊功能寄存器SFR 只能采用直接寻址方式。例如: MOV MOV MOV MOV MOV A, SP A, 81H P1, #5AH 90H,#5AH B, 30H ; ; ; ; ; (A) ←(SP) (A) ←(SP) (P1)←(#5AH) (P1)←(#5AH) (B) ←(30H)
相同 相同

《单片微机原理及应用》教学课件

直接寻址方式可访问的范围
1) 特殊功能寄存器。

------direct

这部分存储单元既可以用单元地址给出,也可以 用寄存器符号的形式给出。如:MOV A, 90H 或 MOV A, P1为同一条指令的两种写法。 (A、B、DPTR除外, 前面已说明) 2) 内部数据存储器的低128个字节单元。 直接以单元地址的形式给出(00H-7FH)。对于 8032/8052等单片机,其内部高128字节RAM(80H~FFH) 不能用直接寻址方式访问]。

4、寄存器间接寻址 寄存器中的内容是一个地址,由该地址单元 寻址到所需的操作数 例: MOV R1,#80H ;(R1)← 立即数80H

MOV @R1,#2FH ;(80H)←立即数2FH
MOV A,@R1 ;(A)←((R1))=2FH

注意: 1)“间接”表示某寄存器中的“内容”只是一 个“单元地址”,这个地址单元中存放的数 据才是要找的“操作数”。 2)符号“@”表示“在…”,其含义与读音皆同 “at”。
《单片微机原理及应用》教学课件

图3.1 寄存器间接寻址示意图

52系列单片机有256字节的片内RAM,其中的80H~ 0FFH的RAM与SFR所占地址重叠。 于是规定: 80H~0FFH范围内的RAM只能用寄存 器间接寻址方式,而SFR只能用直接寻址方式。 从而解决了地址冲突的问题。例如: ?MOV A, 90H 等效于 MOV A, P1 属直接寻址 ?MOV A, @R0 ;[事先已知 (R0) = #90H ] 执行的操作:A ←(90H) 属寄存器间接寻址, ?随意写的指令如:MOV A, 85H 则是非法的!
《单片微机原理及应用》教学课件

存储器配置(片内RAM)
? ?

89C51片内RAM 128字节(00H—7FH) 89C52片内RAM 256字节(00H—0FFH)
那么对于这高128的RAM如何访问?(间址)
FFH FFH

52子系列才有
的RAM区

SFR分布在 80H-FFH 其中92个位 可位寻址

89C52 256字节 89C51 128字节

80H 7FH

80H

普通RAM区
30H 2FH 20H 1FH 00H

只能直接寻址

位寻址区 工作寄存器区

可以直接寻址
《单片微机原理及应用》教学课件

小结: 1、对低128B的RAM可以采用直接寻址,或寄 存器间接寻址方式进行读写。 2、对于高128B的RAM只能采用寄存器间接寻 址方式进行读写。 3、对SRF只能采用直接寻址方式进行读写, 常常采用助记符。

5、变址寻址 也称为: 基址寄存器+变址寄存器间接寻址 以16位的地址指针寄存器DPTR或PC寄存器(16位) 为基址寄存器,以累加器 A 为变址寄存器,两者中 的“内容”形成一个16位的“地址”,该“地址” 所指的存储单元中的内容才是操作数。
例:MOV A,#0A4H MOV DPTR,#1234H MOVC A,@A+DPTR;(A)←((A)+(DPTR)) 操作:将A4H+1234H=12D8H单元中的数放进累加器A
MOVC A,@A+PC;(A)←((A)+(PC)) 单字节指令
《单片微机原理及应用》教学课件

6、相对寻址——(P.58) 当前PC值加上指令中规定的偏移量 rel,构成实际 的操作数地址 例: JZ rel ;累加器A为零,则转移到rel 目的地址=当前PC值+rel = 指令存储地址+指令字节数(2)+rel
注意: 1)当前PC值 :指相对转移指令的存储地址加上该 指令的字节数。例如:JZ rel 是一条累加器A为 零就转移的双字节指令。若该指令的存储地址为 2050H,则执行该指令时的当前PC值即为2052H。 即当前PC值是对相对转移指令取指结束时的值。
《单片微机原理及应用》教学课件

注意: 2)符号“rel”表示“偏移量”,是一个带符号的单 字 节数,范围是:-128—+127(80H—7FH),负数表示 从当前地址向前转移,正数表示从当前地址向后 转移。

在实际编程中,“rel” 通常用标号代替

7、位寻址 指令中直接给出了操作数所在的位地址。 例: CLR P1.0 ;(P1.0) ← 0 SETB ACC.7 ;(ACC.7)← 1 CPL C ;( C )← NOT( C ) 注意: 1)位地址里的数据只可能是一个 0 或 1 2)有的位地址十分明确,如 P1.0, ACC.7等, 有的位地址则“不太明确”,如: [MOV A,17H ; (A)←(17H),17H是字节地址] MOV ACC.0,17H ;(ACC.0)←(17H),这里ACC.0 是位地址所以该指令中的17H是22H单元的第7位
《单片微机原理及应用》教学课件

?

?

片内RAM中有128个位 可按位寻址的位,位 地址:00H—7FH分布 在:20H—2FH单元; 另外,在SFR中还有92 个位可按位寻址
FFH
52子系列才有 的RAM区 80H 7FH

D7 D6 D5 D4 D3 D2 D1 D0
2FH 7F 7E 7D 7C 7B 7A 79 78

位地址
28H 47 46 45 44 43 42 41 40 27H 3F 3E 3D 3C 3B 3A 39 38

26H 37 36 35 34 33 32 31 30
25H 2F 2E 2D 2C 2B 2A 29 28 24H 27 26 25 24 23 22 21 20

总共 128 个可 按位 寻址 的位

普通RAM区
30H 2FH 20H 1FH 00H

23H 1F 1E 1D 1C 1B 1A 19 18 22H 17 16 15 14 13 12 11 10

位寻址区 工作寄存器区

21H 0F 0E 0D 0C 0B 0A 09 08 20H 07 06 05 04 03 02 01 00

单元地址
《单片微机原理及应用》教学课件

MCS-51指令集
功能分五类,共111条指令

《单片微机原理及应用》教学课件

MCS-51指令集(五大类功能) 数据传送类指令: (29条) 算术运算类指令: (24条) 逻辑运算及移位类指令: (24条) 控制转移类指令: (17条) 位操作(布尔操作)类指令:(17条)

《单片微机原理及应用》教学课件

3.3 数据传送类指令

3.3.1

访问片内数据存储器的 一般数据传送指令

其格式如下:
? ?

MOV <目的操作数>,<源操作数>; 目的操作数单元←源操作数(或单元) 该类指令的功能是实现数在片内RAM单元之间、寄 存器之间、寄存器与RAM单元之间的传送。目的操 作数和源操作数不同寻址方式的组合就派生出该 类的全部16条指令。

?

图3.3 访问片内RAM的一般传送指令操作关系图

根据片内RAM的一般传送指令操作关系图 ,写出16条指令

例1、设内部RAM(30H)=40H,(40H)=10H, (10H)=00H,(P1)=CAH,分析下面程序。P.60 MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1 MOV 10H,#20H 结果:(R0)= ,(R1)=(A)= , (B)= ,(40H)=(P1)=(P2)= ,(10)= ;

例1、设内部RAM(30H)=40H,(40H)=10H, (10H)=00H,(P1)=CAH,分析下面程序。P.60 MOV R0,#30H MOV A,@R0 MOV R1,A MOV B,@R1 MOV @R1,P1 MOV P2,P1 MOV 10H,#20H 结果:(R0)=30H,(R1)=(A)=40H, (B)=10H,(40H)=(P1)=(P2)=CAH,(10)=20H

3.3.2 片内特殊传送指令
1.堆栈操作指令 堆栈操作有进栈和出栈,即压入和弹出数据,常用 于保存或恢复现场。进栈指令用于保存片内RAM单元(低 128字节)或特殊功能寄存器SFR的内容;出栈指令用于 恢复片内RAM单元(低128字节)或特殊功能寄存器SFR的 内容。堆栈指针寄存器SP,直接地址为81H,复位后

(SP)=(81H)=07H。堆栈段一般设在片内RAM30H到
7FH区域内。

2、 堆栈操作指令(2条): PUSH——压栈指令 POP ——弹栈指令 √堆栈区由特殊功能寄存器堆栈指针SP 管理

√堆栈区可以安排在片内RAM单元(低128字节)任 意位置,一般不安排在工作寄存器区和可按位寻 址的RAM区,而是放在RAM区的靠后的位置 √堆栈总是指向栈顶
√通常PUSH与POP两条指令成对使用
《单片微机原理及应用》教学课件

PUSH direct ;(先加1,再入) 1)(SP)←(SP)+ 1 修改指针,使其指向栈顶上 的一个存数单元; 2)((SP))←direct 把直接地址单元的内容压入 SP所指单元内。 POP direct ; (先出,再减1) 1)(direct)←((SP)) 把栈顶的数据弹出到直接寻 址单元中去; 2)(SP)←(SP)-1 修改指针,指向新栈顶; 这两条指令都是双字节指令,机器码分别为: C0 direct 和D0 direct。(先入,先出)

例2 若在外部程序存储器中2000H单元开始依次存放 0~9的平方值,数据指针(DPTR)=3A00H,用查表指 令取得2003H单元的数据后,要求保持DPTR中的内 容不变。 MOV A,#03H PUSH DPH PUSH DPL MOV DPTR,#TAB MOVC A,@A+DPTR POP DPL POP DPH 执行结果:(A)=09H, (DPTR)=3A00H。 ;(A)←03H ;保护DPTR高8位入栈 ;保护DPTR低8位入栈 ;(DPTR)←2000H ;(A)←(2000H+03H) ;弹出DPTR低8位 ;弹出DPTR高8位 演示

由此可见,SP只是存放堆栈的地址,所
以PUSH和POP指令属寄存器间接寻址方式。

2、 数据交换指令(5条): XCH A,direct (字节互换) XCH A,@Ri (字节互换) XCH A,Rn (字节互换) (A) (direct)[或((Ri)),或(Rn)]

XCHD A,@Ri 累加器 Acc的低4位与((Ri))的低4位互换, 各自的高4位不变
SWAP A 累加器 Acc的低4位与自身的高4位互换
《单片微机原理及应用》教学课件

3.3.3 片外数据存储器数据传送指令
MCS-51单片机CPU对片外扩展的数据存储器 RAM或I/O口进行数据传送,必须采用寄存器间接 寻址的方法,通过累加器A来完成。 MOVX类指令可在累加器与以@DPTR或@Ri所代 表的外部 RAM或I/O口之间进行数据传送。 例如: MOVX MOVX MOVX MOVX

A, @DPTR A, @Ri @DPTR, A @Ri, A

;(A)? ((DPTR)) ;(A)? ((Ri)) ;((DPTR)) ?(A) ;((Ri)) ?(A)

读(64KB) 读(64KB) 写(256B) 写(256B)

《单片微机原理及应用》教学课件

数据存储器 6264 (8K)的扩展:
D0-D7 P0.0-P0.7 +5V EA P2.0-P2.4 P2.7 RD WR 89C51单片机 8D 8Q 锁存器 74LS373 A8-A12 CE2 CE1 OE WE SRAM6264

A0-A7

ALE

G
OE

51单片机能提供16条地址线,可扩展64K字节 的RAM。可以用一片芯片,也可以用多片RAM

?

图7-9 执行MOVX指令时的读时序

执行MOVX指令时的读时序

?

图7-10 执行MOVX指令时的写时序

执行MOVX指令时的写时序

读/RD有效(P3.7),写/WR有效(P3.6)。 由于R0是8位的寄存器,DPTR是16位的寄存器,所 以但外部数据存储器小于等于256B是采用@R0,当 外部数据存储器大于256B时,采用@DPTR。 当访问外部存贮器时,ALE以每机器周期两次进 行信号输出,P0口输出的低八位地址由ALE输出的控 制信号锁存到片外地址锁存器,P0口输出地址低八 位后,又能与片外存贮器之间传送信息。

单片机的引脚(PSEN端)
?

PSEN:寻址外部程序存储器时选通外部EPROM的 读控制端(OE)低有效。
D0-D7 P0.0-P0.7 ALE EA PSEN P2.0-P2.4 单片机 8D G 8Q 锁存器 74LS373 OE A8-A12 EPROM CE A0-A7

OE

《单片微机原理及应用》教学课件

?

图7-7 片外ROM操作时序图

片外ROM操作时序图

3.3.4 访问程序存储器的数据传送指令 P.61
? 访问程序存储器的数据传送指令又称作查表指令,采用 基址寄存器加变址寄存器间接寻址方式,把程序存储器中存 放的表格数据读出,传送到累加器A。共有如下两条单字节 指令,指令操作码助记符为MOVC。 指令助记符 操作功能注释 机器码(H) MOVC A,@A+DPTR ;(A)←((A)+(DPTR)) 93 MOVC A,@A+PC ;(PC)←(PC)+1,(A)←((A)+(PC)) 83

?

?
?

以上两条指令的区别:

前一条指令采用DPTR作基址寄存器,因此可以很方便地把一 个16位地址送到DPTR,实现在整个64 KB程序存储器单元到累加器 A的数据传送。即数据表格可以存放在程序存储器64 KB地址范围的 任何地方。 后一条指令以PC作为基址寄存器,CPU取完该指令操作码时PC 会自动加1,指向下一条指令的第一个字节地址,即此时是用 (PC)+1作为基址的。另外,由于累加器A中的内容为8位无符号数, 这就使得本指令查表范围只能在256个字节范围内(即 (PC)+1H~(PC)+100H),使表格地址空间分配受到限制。同时编程时 还需要进行偏移量的计算,即MOVC A,@A+PC指令所在地址与表 格存放首地址间的距离字节数的计算,并需要一条加法指令进行地 址调整。偏移量计算公式为: 偏移量 = 表首地址-(MOVC指令所在地址+1)

例5 若在外部程序存储器中2000H单元开始依次存放 0~9的平方值,以PC作为基址寄存器进行查表,得9 的平方值。 设MOVC指令所在地址为1FF0H,则偏移量 =2000H -(1FF0H+1)=0FH,相应程序如下: MOV A,#09H ADD A,#0FH MOVC A,@A+PC ;(A)←09H ;用加法指令进行地址调整 ;(A)←( (A)+(PC)+1)

演示MOVC-PC

以DPTR为基址寄存器的查表指令,程序如 下 ? MOV DPTR,#TAB ? MOV A,#09H ? MOVC A,@A+DPTR ? 执行结果:(A)=51H。
?

演示MOVC-DPTR

图3.2 变址寻址示意图

单片机的引脚(PSEN端)
?

PSEN:寻址外部程序存储器时选通外部EPROM的 读控制端(OE)低有效。
D0-D7 P0.0-P0.7 ALE EA PSEN P2.0-P2.4 单片机 8D G 8Q 锁存器 74LS373 OE A8-A12 EPROM CE A0-A7

OE

《单片微机原理及应用》教学课件

?

图7-7 片外ROM操作时序图

片外ROM操作时序图

3.4 算术运算类指令
3.4.1 加、减法指令

图3.4 加减法指令形式结构图 (a) 加减法指令关系图;(b) 加1、减1指令关系图

算术运算类指令
加法运算: 带进位加法运算: 带借位减法运算: (ADD——4条) (ADDC——4条) (SUBB——4条)

? 所有的加法(ADD)、带进位加法(ADDC)、带借位减 法(SUBB)运算都是以 A为一个加数或被减数,最终 结果也存进 A 。 ? 加法(ADD)、带进位加法(ADDC) 以及带借位减法 (SUBB)运算中,如果产生了进位或借位,将自动对 PSW中的Cy标志位置“1” 。 ? 带进位加法(ADDC):(A)?(A)+(Cy)+(第二操作数) 带借位减法(SUBB):(A)?(A)-(Cy)-(第二操作数)
《单片微机原理及应用》教学课件

加1/减1操作: (INC,DEC——9条) INC, DEC与用加/减法指令做加1/减1 操作不同之 处在于INC、DEC不影响标志位OV和Cy。

《单片微机原理及应用》教学课件

例6 设(A) = 49H,(R0)=6BH,分析执行指令ADD A,R0后
的结果。 结果为:(A)=B4H,OV=1,CY=0,AC=1,P=0。 例7 设(A)=C3H,数据指针低位(DPL)=ABH,CY=1,分析 执行指令ADDC A,DPL后的结果。

结果为:(A)=6FH,CY=1,AC=0,P=0。
例8 设 (A) = 52H,(R0)=B4H,分析执行如下指令后的结果 CLR C ;是位操作指令,是进位位清零 SUBB A,R0 结果为:(A)=9EH,CY=1,AC=1,OV=1,P=1。

关于Cy和OV
1、CY(PSW.7) —— 进位标志,简记C
8位无符号数在加法运算时,位7有进位,CY=1;无进位, CY=0 8位无符号数在减法运算时,位7有借位,CY=1;无借位, CY=0 在乘除运算时,CY=0

2、OV(PSW.2) —— 溢出标志
在乘法运算时,乘积超过255,OV=1;否则OV=0 在除法运算时,除数为零,OV=1;否则OV=0 在有符号数加减运算时,数值超出有符号数的范围,OV=1 注意:8位有符号二进制数范围 -128 - +127

任何时候OV都满足:OV=C6’ ⊕ C7’

例9 设 (R0) = 7EH,(7EH)=FFH,(7FH)=38H,
(DPTR)=10FEH,分析逐条执行下列指令后各单元的内容。 INC @R0 INC R0 ;使7EH单元内容由FFH变为00H ;使R0的内容由7EH变为7FH

INC @R0
INC DPTR

;使7FH单元内容由38H变为39H
;使DPL为FFH,DPH不变

INC DPTR
INC DPTR

;使DPL为00H,DPH为11H
;使DPL为01H,DPH不变

3.4.2 十进制调整指令
十进制调整: (DA A——1条) 用于两个BCD码之间的相加,这条指令只能跟在 ADD 或 ADDC 之后

? BCD码是指“用二进制表达的十进制数”。如: 十进制数20可以用二进制数00010100B表示; 也可以用十六进制数14H表示; 还可以用BCD码 00100000B 或 20H 表示。
? 4个二进制位就可以表示一位BCD码: 0000~1001 可表示十进制数(BCD数) 0~9; 8个二进制位就可以表示两位压缩的BCD码: 00000000~10011001 表示 00~99。
《单片微机原理及应用》教学课件

指令 “DA

A” 完成的操作:

? 若(A)3~0?9或(AC)=1则(A)3~0?(A)3~0+6; 若(A)7~4?9或(CY)=1则(A)7~4?(A)7~4+6; ? 例:两个十进制数“65”与“58”相加,根据常识, 显然其和应当为“123”。 ? MOV ADD DA

A,#65H A,#58H A

6
5 + +

5
8

0110 0101
0101 1000 1011 1101 0110 0110

结果:(A)= 23H
(CY)= 1

1 0010 0011 3 1 2
《单片微机原理及应用》教学课件

1、 使用时应注意:DA指令不能对减法进行十进制调整。

做减法运算时,可采用十进制补码相加,然后用 DA A指令进
行调整。 机内十进制补码可采用:[x]补 = 9AH -∣x∣。

P.64例11 设片内RAM 30H,31H单元中分别存放着两位

BCD码表示的被减数和减数,两数相减的差仍以BCD码的形式
存放在32H单元中。可用下面的程序实现: CLR C MOV A,#9AH SUBB A,31H ADD A,30H DA A MOV 32H,A ;求减数的十进制补码 ;作十进制补码加法 ;进行BCD调整 ;将BCD码的差送存32H单元

3.4.3 乘、除法指令
1.乘法指令
(B)←((A)×(B))15~8(A)←((A)×(B))7~0 机器码:A4H MUL AB; CY←0

乘法指令的功能是把累加器A和寄存器B中的两个8位无符号 数相乘,将乘积16位数中的低8位存放在A中,高8位存放在B中。 若乘积大于FFH(255),则溢出标志OV置1,否则OV清零。乘法指 令执行后进位标志CY总是零,即CY=0。

2.除法指令
DIV AB; ?(A)←(A)÷(B)之商,(B)←(A)÷(B)之余数 ?(CY)←0,(OV)←0

机器码:84H

除法指令的功能是把累加器A中的8位无符号整数除以寄存
器B中的8位无符号整数,所得商存于累加器A中,余数存于寄

存器B中,进位标志位CY和溢出标志位OV均被清零。若B中的内
容为0时,溢出标志OV被置1,即OV=1,而CY仍为0。

3.5 逻辑运算及移位指令

图3.5 逻辑指令形式结构图

表3.3 逻辑操作指令表

表3.3 逻辑操作指令表

(1)逻辑“与”指令常用于屏蔽(置0)字节中的 某些位。若清除某位,则用“0”和该位相与:若保留某位, 则用“1”和该位相与. 例12 (P1)=C5H=11000101B,屏蔽P1口高4位而保留低4位。

执行指令:ANL P1,#0FH
结果为:(P1)=05H=00000101B。

(2)逻辑“或”指令常用来使字节中某些位置“1”,其 它位保持不变。则欲置位的位用"1"与该位相或,保留不变的 位用"0" 与该位相或。

例13 若(A)=C0H,(R0)=3FH,(3FH)=0FH, 执行指令:ORL A,@R0 结果为:(A)=CFH=11001111B。 (3)逻辑"异或"指令常用来使字节中某些位进行取反操 作,其它位保持不变。欲某位取反该位与"1"相异或;欲某位 保留则该位与"0" 相异或。还可利用异或指令对某单元自身异 或,以实现清零操作。

例14 若(A)=B5H=10110101B,执行下列操作: XRL A,#0F0H ; A的高4位取反,低4位保留, (A)=01000101B=45H MOV 30H,A ;(30H)=45H

XRL A,30H

;自身异或使A清零

(4)用移位指令还可以实现算术运算,左移一位相当于 原内容乘以2,右移一位相当于原内容除以2,但这种运算关系 只对某些数成立(请读者自行思考)。

例15 设(A)=5AH=90,且CY=0,则 执行指令RL A后,(A)=B4H=180。 执行指令 RR A后,(A)=2DH=45。 执行指令 RLC A后,(A)=B4H=90。 执行指令 RRC A后,(A)=2DH=45。

3.6 控制转移类指令
3.6.1 无条件转移指令
表3.4 无条件转移指令

1.LJMP(长转指令) LJMP addr16 长跳转指令 ——可在64K范围内跳转 LJMP指令执行后,程序无条件地转向16位目标地址 (addr16)处执行,不影响标志位。可以使程序从当前地址转移 到64 KB程序存储器地址空间的任意地址。

2.AJMP(绝对转移指令)
AJMP addr11 绝对跳转指令 ——可在指令所在的2K范围内跳转

AJMP的机器码是由11位直接地址addr11和指令操作码 00001,按下列分布组成的:
a10 ?a9 a8 0 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0

该指令执行后,程序转移的目的地址是由AJMP指令所在位置

的地址PC值加上该指令字节数2,构成当前PC值。取当前PC值的
高5位与指令中提供的11位直接地址形成转移的目的地址,即
转移目的地址(PC) PC15 PC14 PC13 PC12 PC11a10 a9 a8 a7 a6 a5 a4 a3 a2 a1 a0

由于11位地址的范围是00000000000~11111111111(0000—07FFH),即2

KB范围,而目的地址的高5位是由PC当前值,所以程序可转移的位置只能是和
PC当前值在同一2 KB范围内。本指令转移可以向前也可以向后,指令执行后 不影响状态标志位。

例如:若AJMP指令地址(PC)=2300H。执行指令AJMP 0FFH后,结果
为:转移目的地址(PC)=20FFH,程序向前转到20FFH单元开始执行。 又如:若AJMP指令地址(PC)=2FFFH。执行指令AJMP 0FFH后,结果 为:转移目的地址(PC)=30FFH,程序向后转到30FFH单元开始执行 因为在执行本指令,当前PC=2FFFH+2。 由上可见:若addr11相同,则AJMP指令的机器码相同,但转移的目 的地址却可能不同,这是因为转移的目的地址是由PC当前值的高5位与addr11

共同决定的。

3.SJMP(相对短转指令)
SJMP rel 相对跳转指令 ——可在当前PC-128与+127范围内跳转 指令的操作数rel用8位带符号数补码表示,占指令的一个 字节。因为8位补码的取值范围为-128— +127,所以该指令的 转移范围是:相对PC当前值向前转128字节,向后转127字节。 即 转移目的地址= SJMP指令所在地址+2+rel

如在2100H单元有SJMP指令,若rel = 5AH(正数),则转移目
的地址为215CH(向后转);若rel = F0H(负数),则转移目的地 址为20F2H(向前转)。

用汇编语言编程时,指令中的相对地址rel往往用欲转移至的

地址的标号(符号地址)表示。机器汇编时,能自动算出相对地址
值;但手工汇编时,需自己计算相对地址值rel。 rel的计算公式如下: 向前转移:rel=FEH -(SJMP指令地址与目的地址差的绝对值) 向后转移:rel=FEH -(SJMP指令地址与目的地址差的绝对值)-2 若rel = FEH,即目的地址就是SJMP指令的地址,在汇编指令 中的偏移地址可用 $ 符号表示。若在程序的末尾加上SJMP

$(机器码为80 FEH),则程序就不会再向后执行,造成单指令的
无限循环,进入等待状态。

4.JMP @A+DPTR(相对长转移指令) JMP @A+DPTR 间接长跳转指令

——可在以DPTR为基址 + A为偏移量之和所指向的

64K程序范围内跳转
它是以数据指针DPTR的内容为基址,以累加器A的内容 为相对偏移量,在64 KB范围内无条件转移。该指令的特点是 转移地址可以在程序运行中加以改变。例如,当DPTR为确定 值,根据A的不同值就可以实现多分支的转移。该指令在执行 后不会改变DPTR及A中原来的内容。

例16 根据累加器A的值,转不同处理程序的入口。

MOV DPTR,#TABLE
JMP @A+DPTR … ABLE:AJMP TAB1 AJMP TAB2 AJMP TAB3 …

;表首地址送DPTR
;根据A值转移

;当(A)=0时转TAB1执行 ;当(A)=2时转TAB2执行 ;当(A)=4时转TAB3执行

可见,A必须是偶数,因为AJMP TAB# 是双字节指令。

若为LJMP TAB# 则A值应该为多少?

3.6.2 条件转移指令 条件转移指令是当某种条件满足时,程序转移执行;条件 不满足时,程序仍按原来顺序执行。 转移的条件可以是上一条指令或更前一条指令的执行结果 (常体现在标志位上),也可以是条件转移指令本身包含的某种 运算结果。 由于该类指令采用相对寻址,因此程序可在以当前PC值为 中心的-128~+127范围内转移。 该类指令共有8条,可以分为累加器判零条件转移指令、比 较条件转移指令和减1条件转移指令三类。表3.5中列出了这些 指令。

表3.5 条件转移指令

1.判零条件转移指令

条件转移:

JZ,JNZ

JZ rel JNZ rel ——根据Acc的内容是否为0决定是否跳转
JZ指令:累加器A为0转移,不为0则顺序执行; JNZ指令:累加器A不为0转移,为0则顺序执行。 累加器A的内容是否为0,是由这条指令以前的其它指令执 行的结果决定的,执行这条指令不作任何运算,也不影响标志 位。

例17 将片外RAM首地址为DATA1的一个数据块转送到片内 RAM首地址为DATA2的存储区中,遇零终止。 外部RAM向内部RAM的数据转送一定要经过累加器A,利用判 零条件转移正好可以判别是否要继续传送或者终止。完成数据传 送的参考程序如下: MOV MOV R0,#DATA1 R1,#DATA1 ;R0作为外部数据块的地址指针 ;R1作为内部数据块的地址指针

LOOP: MOVX
HERE: JZ MOV INC INC

A,@R0
HERE @R1,A R0 R1

;取外部RAM数据送入A
;数据为零则终止传送 ;数据传送至内部RAM 单元 ;修改指针,指向下一数据地址

SJMP

LOOP

;循环取数

2.比较转移指令 CJNE A, #data, rel CJNE A, direct,rel CJNE @Ri,#data, rel CJNE Rn, #data, rel ——将A(或@Ri,或Rn)与#data(或direct)相比较,其值不相

等就跳转;相等则不跳转,继续往下执行。

以上指令执行过程:
(1)若第一操作数=第二操作数,顺序执行,进位标志位CY清0; (2)若第一操作数>第二操作数,程序转移,进位标志位CY清0; (3)若第一操作数<第二操作数,程序转移,进位标志位CY清1; 比较是进行一次减法运算,但其差值不保存,两个数的 原值不受影响,而标志位CY要受到影响。利用标志位CY作进 一步的判断,可实现三分支转移。 例18 当从P1口输入数据为01H 时,程序继续执行,否则等待 ,直到P1口出现01H。参考程序如下: MOV A,#01H WAIT: CJNE A,P1,WAIT ;立即数01H送A ;(P1)≠01H,则等待

《单片微机原理及应用》教学课件

3.减1条件转移指令 DJNZ direct,rel DJNZ Rn, rel ——将direct(或Rn)里的内容减 1,结果不等于0就跳转;

等于0则不跳转继续往下走。
减1条件转移指令有两条。每执行一次这种指令,就把第一
操作数减1,并把结果仍保存在第一操作数中,然后判断是否为

零。若不为零,则转移到指定的地址单元,否则顺序执行。

若单片的晶振频率为6MHZ,问执行下列程序需 要的时间 DELAY: MOV R3,#100 ;1 LOOP: NOP ;1 NOP NOP DJNZ R3,LOOP ;2 RET ;2

3.7.3 空操作指令
NOP ;(PC)←(PC)+1 “耗时”一个机器周期。 do nothing! 空操作指令是一条单字节单周期指令。它控制 CPU不做任 何操作,仅仅是消耗这条指令执行所需要的一个机器周期的时 间,不影响任何标志位,故称为空操作指令。NOP指令在设计

延时程序、拼凑精确延时时间及在程序等待或修改程序等场合
是很有用的。

若单片的晶振频率为6MHZ,问执行下列程序需 要的时间 DELAY: MOV R3,#100 ;1 LOOP: NOP ;1 NOP NOP DJNZ R3,LOOP ;2 RET ;2

1 +( 1 + 1 + 1 + 2 )* 100 +2 =503 T=503*2uS=1006uS≈1mS

例19 将内部RAM从DATA单元开始的10个无符号数相加,相

加结果送SUM单元保存。
设相加结果不超过8位二进制数,则相应的程序如下: CLR C MOV R0,#0AH MOV R1,#DATA ;设置循环次数 ;R1作地址指针,指向数据块首地址

CLR A
LOOP: ADDC A,@R1 INC R1 DJNZ R0,LOOP MOV SUM,A

;A清零
;加一个数 ;修改指针,指向下一个数 ;R0减1,不为0循环 ;存10个数相加的和

3.7 子程序调用与返回指令
3.7.1 子程序调用指令

子程序调用指令有长调用和绝对调用两条,它们都是双周期指令。

LCALL addr16 子程序长调用指令 ——可在64K范围内调用子程序

LCALL,可调用64 KB范围内的子程序。由于该指令为3字节, 所以执行该指令时首先应执行(PC)←(PC)+3,以获得下一条指令 地址,并把此时的PC内容压入堆栈(先压入低字节,后压入高字 节)作为返回地址,堆栈指针SP加2指向栈顶,然后把目的地址 addr16送入PC。该指令执行不影响标志位。
《单片微机原理及应用》教学课件

ACALL addr11 子程序绝对调用指令 ——可在指令所在的2K范围内调用子程序

ACALL提供11位地址,只能调用与PC在同一2 KB范围内的
子程序。由于该指令为2字节指令,所以执行该指令时应执行 (PC)←(PC)+2以获得下一条指令地址,并把该地址压入堆栈作为 返回地址。机器码的组成如下:
a10 a9 a8 1 0 0 0 1 a7 a6 a5 a4 a3 a2 a1 a0

被调用子程序的目的地址也是由执行 ACALL指令的当前PC 值的高5位与指令中提供的11位直接地址形成。PC值如下: a15 a14 a13 a12 a11 a10 a9

a8 a7 a6 a5 a4 a3 a2 a1 a0

LCALL和ACALL指令类似于转移指令LJMP和AJMP,不同之处在 于LCALL和ACALL在转移前要把执行完该指令的PC内容自动压 入堆栈后(为了返回),才将子程序入口地址addr16(或addr11) 送PC,实现转移。 而LJMP和AJMP,没有堆栈操作,从给出的目的地址开始 执行, 不存在子程序返回的问题。

3.7.2 返回指令
返回指令共两条:一条是对应两条调用指令的子程序返回指

令RET,另一条是对应从中断服务程序的返回指令RETI。

从上述两条指令的功能操作看,都是从堆栈中弹出返回地
址送PC,堆栈指针减2,但它们是两条不同的指令。其有下面两

点不同:
(1) 从使用上,RET指令必须是子程序的最后一条指令;

RETI必须是中断服务程序的最后一条指令。
(2) RETI指令除恢复断点地址外,还恢复CPU响应中断时硬

件自动保护的现场信息。执行RETI指令后,将清除中断响应时
所置位的优先级状态触发器,使得已申请的同级或低级中断申

请可以响应;而RET指令只能恢复返回地址。

子程序调用及返回: (LCALL,ACALL,RET,RETI——4条) LCALL addr16 子程序长调用指令 ——可在64K范围内调用子程序 ACALL addr11 子程序绝对调用指令 ——可在指令所在的2K范围内调用子程序
RET 子程序返回指令 ——子程序结束并返回调用的下一条指令 RETI 中断服务子程序返回指令 ——中断结束/返回被打断处的下一条指令
《单片微机原理及应用》教学课件

控制转移类指令
此类指令改变程序的执行顺序——改变当前PC值 无条件转移: (LJMP,AJMP,SJMP,JMP——4条) 条件转移(判断跳转): (JZ,JNZ,CJNE,DJNZ——8条)

子程序调用及返回: (LCALL,ACALL,RET,RETI——4条)
空操作: (NOP——1条) “耗时”一个机器周期。

3.8 位操作类指令
位操作类指令在单片机指令系统中占有重要地位,这是因为 单片机在控制系统中主要用于控制线路通、断,继电器的吸合

与释放等。

位操作也称布尔变量操作,它是以位(bit)作为单位来进行运
算和操作的。MCS-51单片机内部有一个功能相对独立的布尔处

理机,它有借用进位标志CY作为位累加器,有位存储器(即位寻
址区中的各位),指令系统中有17条专门进行位处理的指令集。 位处理指令可以完成以位为对象的数据转送、运算、控制转移

等操作。

位操作类指令 以位为单位进行逻辑运算及操作, 可分为4种: 位传送: (MOV——2条)

位清零/置位:

(CLR,SETB——4条)

位逻辑与/或/非运算:(ANL,ORL,CPL——6条) 位条件转移: (JC,JNC,JB,JNB,JBC——5条)

《单片微机原理及应用》教学课件

位传送指令(2条): MOV C, bit ——(C)?(bit) MOV bit, C ——(bit)?(C)
注: bit表示位地址(RAM和SFR)

位清零/置位指令(4条): CLR bit(或C)—— (bit或 C)?“0” SETB bit(或C)—— (bit或 C)?“1” 位逻辑与/或/非指令(6条): ANL C,bit(或/bit) ORL C,bit(或/bit) CPL bit (或 C)
注:“/bit”表示对bit位先取反然后再参加运算
《单片微机原理及应用》教学课件

判位条件转移指令(5条): JC rel——(Cy)=“1”就跳转;否则不跳转

JNC rel——(Cy)?“1”就跳转;否则不跳转 bit,rel ——(bit)=“1”就跳转;否则不跳转 JNB bit,rel ——(bit)?“1”就跳转;否则不跳转 JBC bit,rel ——(bit)=“1”就先将其清零 再跳转; JB

否则,不动此位也不跳转。
《单片微机原理及应用》教学课件

前面的简单测控实例中的程序:
任务一:控制一盏灯点亮 JOB1: CLR P1.0 ;P1.0清“0”,亮红灯 HERE: AJMP HERE ;原地等待,不做别的事 任务二:红灯周期性地亮/灭

位操作指令

JOB2: CPL P1.0 ACALL DELAY AJMP JOB2

;对P1.0取反:红灯亮/灭 ;延时1秒 ;重复
; P1.1清“0” ,亮绿灯 ;将P1.3置“1” ;检测传感器是否被阻断 ;有入侵者,报警! ;再跳回去检测

任务三:红外防盗报警 JOB3: CLR P1.1 REDO: SETB P1.3 CHECK:JNB P1.3,CHECK LOOP: ………… AJMP REDO

《单片微机原理及应用》教学课件

例20 功能。

利用位操作指令,模拟图3.6所示硬件逻辑电路的

图3.6 硬件逻辑电路图

例20 利用位操作指令,模拟图3.6所示硬件逻 辑电路的功能。参考程序如下: PR2: MOV ORL CPL ANL CPL MOV MOV ANL CPL ORL MOV RET C,P1.1 C, P1.2 C C,P1.0 C F0,C C,P1.3 C,/P1.4

C
C,F0 P1.5,C

例20 利用位操作指令,模拟图3.6所示硬件逻辑电路的 功能。参考程序如下: PR2: MOV C,P1.1 ;(CY)← (P1.1) ORL C, P1.2 ;(CY)← (P1.1)∨(P1.2) CPL C ANL C,P1.0 ;(CY)←(P1.0)∧A CPL C ;(CY)←(P1.0)∧A MOV F0,C ;F0内暂存B MOV C,P1.3 ;(CY)←(P1.3) ANL C,/P1.4 ;(CY)←(P1.3)∧/(P1.4) CPL C ORL C,F0 ;(CY)←B∨D MOV P1.5,C ;运算结果送入P1.5 RET

在位操作指令中,位地址的表示不同的方法有(以下均以 程序状态字寄存器PSW的第5位F0标志为例说明):

(1) 直接位地址表示,如D5H。
(2) 点表示(说明是什么寄存器的什么位),如PSW.5,说 明是PSW的第5位。 (3) 位名称表示,如直接用F0,TI等表示。 (4) 用户定义名称表示,如用户定义用FLG这一名称来代 替F0,则在指令中允许用FLG表示F0标志位。

3.9 汇编程序格式与伪指令
1.汇编程序格式 在程序中指令书写具有如下格式: [标号:] 操作码助记符 [源操作数][,目的操作数] [;注释] 标号用在指令的前边,必须跟":",表示符号地址。

2.伪指令 伪指令不要求计算机做任何操作,也没有对应的机器码, 不产生目标程序,不影响程序的执行,仅仅是能够帮助进行汇 编的一些指令,起说明作用。它主要用来指定程序或数据的起 始位置,给出一些连续存放数据的地址或为中间运算结果保留 一部分存储空间以及表示源程序结束等等。

1) 设置目标程序起始地址伪指令ORG
格式:[符号:] ORG 地址(十六进制表示)

该伪指令的功能是规定其后面的目标程序或数据 块的起始地址。
它放在一段源程序(主程序、子程序)或数据块的 前面,说明紧跟在其后的程序段或数据块的起始地址 就是ORG后面给出的地址。 例如: ORG 2000H


START:MOV A,#7FH

2) 结束汇编伪指令END 格式:[符号:] END END是汇编语言源程序的结束标志,表示汇编结 束。在END以后所写的指令,汇编程序都不予处理。 一个源程序只能有一个END命令,否则就有一部分指 令不能被汇编。

3) 定义字节伪指令DB

格式:[标号:] DB 项或项表
其中项或项表指一个字节数据,用逗号分开的字 节数据串,或以引号括起来的字符串。该伪指令的功 能是把项或项表的数据(字符串按字符顺序以ASCII码) 存入从标号地址开始的连续存储单元中。

例如:
ORG TAB1: DB DB 2000H ?5?,‘A?,‘B?,‘C?,‘D? 30H,8AH,7FH,73

由于ORG 2000H,所以TAB1的地址为2000H,因此,以上 伪指令经汇编后,将对2000H开始的连续存储单元赋值:

(2000H)=30H
(2001H)=8AH (2002H)=7FH (2003H)=49H (2004H)=35H ;十进制数73以十六进制数存放 ;35H是数字5的ASCII码

(2005H)=41H
(2006H)=42H (2007H)=43H

;41H是字母A的ASCII码
;42H是字符串'BCD'中B的ASCII码 ;43H是字符串'BCD'中C的ASCII码

(2008H)=44H

;44H是字符串'BCD'中D的ASCII码

4) 定义字伪指令DW 格式:[标号:] DW 项或项表 DW伪指令与DB相似,但用于定义字的内容。项或项 表指所定义的一个字(两个字节)或用逗号分开的字串。 汇编时,机器自动按高8位先存入,低8位在后的格式排 列。 例如: ORG 1500H TAB2: DW 1234H,80H 汇编以后:(1500H)=12H, (1501H)=34H, (1502H)=00H, (1503H)=80H

5) 预留存储空间伪指令DS 格式:[标号:] DS 表达式 该伪指令的功能是从标号地址开始,保留若干个字 节的内存空间以备存放数据。保留的字节单元数由表达 式的值决定。 例如: ORG 1000H DS 20H DB 30H,8FH 汇编后从1000H开始,预留32(20H)个字节的内存 单元,然后从1020H开始,按照下一条DB指令赋值,即 (1020H)=30H,(1021H)=8FH。

6)赋值伪指令EQU 格式:标号: EQU 项 该伪指令的功能是将指令中的项的值赋予EQU前 面的标号。项可以是常数、地址标号或表达式。 例如: TAB1 EQU 1000H TAB2 EQU 2000H DATA EQU 30H COMM EQU 31H 汇编后TAB1、TAB2分别具有值1000H、2000H。 用EQU伪指令对某标号赋值后,该标号的值在整 个程序中不能再改变。

7) 位地址定义伪指令BIT 格式:标号: BIT 位地址 该伪指令的功能是将位地址赋予BIT前面的标号, 经赋值后可用该标号代替BIT后面的位地址。 例如: PLG BIT F0 A1 BIT P1.0 经以上伪指令定义后,在程序中就可以把FLG和 AI作为位地址来使用。


相关文章:
第三章MCS51单片机的指令系统和汇编语言程序示例(第5
第三章 MCS51 单片机指令系统和汇编语言程序示例(第 5、6、7 节) 1. 试分析单片机执行下列指令后累加器 A 和 PSW 中各标志位的变化状况? (1)MOV A,#...
51系列单片机指令系统
第三章(4)MCS-51系列单片机... 32页 免费 第3...51系列单片机指令系统 汇编语言指令格式,机器语言指令...系列单片机指令系统是用户编制单片机应用程序的主要工具...
第3章-MCS-51系列单片机的指令系统和汇编语言程序
第3章-MCS-51系列单片机指令系统和汇编语言程序_信息与通信_工程科技_专业资料。关于单片机学习的资料,可用于考试复习,练习题目第3章 MCS 一 51 系列单片机的指...
第3章 MCS-51单片机汇编语言程序设计
第3 章 MCS-51 单片机汇编语言程序设计 3.1 MCS-51 单片机指令系统 3.1.1 基础知识 1.基本概念 指令:由程序员编写的能够为计算机识别的命令。 指令系统:由全部...
51单片机汇编程序范例
下面用 51 单片机的汇编语言来求解。 MOV DIV MOV MOV XCH DIV B, AB #...楼上的程序, 使用了 DEC DPTR, 要知道, 单片机指令系统里面, 51 是没有 DEC...
第3章 指令系统与汇编语言程序设计
题时 2 学时 第3章 指令系统与汇编语言程序设计 3.1 寻址方式 理论讲授 授课类型 教学目标 1.知识目标 了解单片机的指令格式,掌握 MCS-51 系列单片机的寻址方式...
单片机三、四章题目
单片机三、四章题目_工学_高等教育_教育专区。第三章 MCS—51 系列单片机指令系统和汇编语言程序示例 一、单项选择题 1.一条指令通常由操作码和操作数两部分组...
MCS-51系列单片机的指令系统及汇编语言程序设计
MCS-51系列单片机指令系统汇编语言程序设计_电脑基础知识_IT/计算机_专业资料。内容提要 >MCS-51单片机指令系努 >汇编语言的基本格式 >程序结构及其设计方法 >...
第3章 指令系统与汇编语言程序设计.ppt.Convertor
第3 章 指令系统与汇编语言程序设计 本章要点: 51 系列单片机指令系统的寻址方式 51 系列单片机指令系统的使用要点 51 系列单片机汇编语言程序设计的方法及应用实例...
更多相关标签:
单片机汇编指令 | 单片机汇编指令表 | 单片机汇编语言指令 | pic单片机汇编指令 | 单片机汇编指令详解 | 汇编数据段定义示例 | 汇编代码示例 | 汇编语言示例 |