第3章 MCS-51单片机汇编语言程序设计

合集下载

MCS-51系列单片机的指令系统和汇编语言程序

MCS-51系列单片机的指令系统和汇编语言程序

3·1 汇编指令第3 章MCS 一51 系列单片机的指令系统和汇编语言程序3·1·1 请说明机器语言、汇编语言、高级语言三者的主要区分,进一步说明为什么这三种语言缺一不行。

3·1·2 请总结:(1)汇编语言程序的优缺点和适用场合。

(2)学习微机原理课程时,为什么肯定要学汇编语言程序?3·1·3MCS 一51 系列单片机的寻址方式有哪儿种?请列表分析各种寻址方式的访问对象与寻址范围。

3·1·4 要访问片内RAM,可有哪几种寻址方式?3·1·5 要访问片外RAM,有哪几种寻址方式?3·1·6 要访问ROM,又有哪几种寻址方式?3·1·7 试按寻址方式对MCS 一51 系列单片机的各指令重进展归类(一般依据源操作数寻址方式归类,程序转移类指令例外)。

3·1·8 试分别针对51 子系列与52 子系列,说明MOV A,direct 指令与MOV A,@Rj 指令的访问范围。

3·1·9 传送类指令中哪几个小类是访问RAM 的?哪几个小类是访问ROM 的?为什么访问ROM 的指令那么少?CPU 访问ROM 多不多?什么时候需要访问ROM?3·1·10 试绘图示明MCS 一51 系列单片机数据传送类指令可满足的各种传送关系。

3·1·11 请选用指令,分别到达以下操作: (1)将累加器内容送工作存放器R6.(2)将累加器内容送片内RAM 的7BH 单元。

(3)将累加器内容送片外RAM 的7BH 单元。

(4)将累加器内容送片外RAM 的007BH 单元。

(5)将ROM007BH 单元内容送累加器。

3·1·12 区分以下指令的不同功能:(l)MOV A,#24H 与MOV A.24H(2)MOV A,R0 与MOV A,@R0(3)MOV A,@R0 与MOVX A,@R03·1·13 设片内RAM 30H 单元的内容为40H;片内RAM 40H 单元的内容为l0H;片内RAM l0H 单元的内容为00H;(Pl)=0CAH。

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5范文

第三章MCS51单片机的指令系统和汇编语言程序示例(第5、6、7节)1.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1)MOV A,#19HADD A,#66H(2)MOV A,#5AHADD A,#6BH2.已知:A=85H,R0=30H,(30H)=11H, (31H)=0FFH,C=1,试计算单片机执行下列指令后累加器A和C中的值各是多少?(1)ADDC A,R0, (2)ADDC A,31H(3) ADDC A,@R0, (4) ADDC A,#85H3.已知M1和M2中分别存放两个16位无符号数的低8位,M1+1和M2+1中分别存放两个16位无符号数的高8位,计算两数之和(低8位存放在M1,高8位存放在M1+1,设两数之和不超过16位)。

4.试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?CLR CMOV A,#52HSUBB A,#0B4H5.已知:A=0DFH,R1=40H,R7=19H,(30H)=00H,(40H)=0FFH,试分析单片机执行下列指令后累加器A和PSW中各标志位的变化状况?(1) DEC A (2) DEC R7 (3) DEC 30H (4) DEC @R16.试写出能完成85+59的BCD加法程序,并对工作过程进行分析。

7.已知:两个8位无符号乘数分别放在30H和31H单元中,编程实现他们乘积的低8位存放在32H,高8位存放在33H。

8.已知:R0=30H,(30H)=0AAH,试分析执行下列指令后累加器A和30H单元的内容是什么?(1)MOV A, #0FFH ANL A, R0(2)MOV A, #0FH ANL A, 30H(3)MOV A, #0F0H ANL A, @R0(4)MOV A, #80H ANL 30H, A9.设:A=0AAH和P1=0FFH,试编程把累加器A的低四位送入P1口的低四位,P1口的高四位保持不变。

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

计算机接口技术课件 第三章 MCS-51单片机汇编语言与程序设计基础

例2:编制一段程序,要求在端口线 :编制一段程序,要求在端口线P1.0,P1.1上分别产生周期为 , 上分别产生周期为 200us和400us的方波.设单片机的外接频率为 的方波. 和 的方波 设单片机的外接频率为12MHz. . 分析:利用定时器产生方波,将定时器设置成为工作方式 , 分析:利用定时器产生方波,将定时器设置成为工作方式3,将寄 存器T0定时 定时100us,T1定时 定时200us,达到定时时间后引起中断,在中 存器 定时 , 定时 ,达到定时时间后引起中断, 断服务程序中各自将P1.0和P1.1引脚取反. 引脚取反. 断服务程序中各自将 和 引脚取反 定时器预设值的设置: 定时器预设值的设置: 单片机的晶体振荡频率为12MHz,计时器的计时频率为1MHz,机 单片机的晶体振荡频率为 ,计时器的计时频率为 , 器周期为1us. 定时 定时100us,因此寄存器 需要计数 需要计数100次 器周期为 . T0定时 ,因此寄存器T0需要计数 次 ,其预 置值为64H+1=9CH. T1定时 定时200us,因此寄存器 需要计数 需要计数200次 置值为 . 定时 ,因此寄存器T1需要计数 次 其预置值为C8H+1=38H. ,其预置值为 . 定时器T0,T1的工作方式设置: 的工作方式设置: 定时器 的工作方式设置 T0采用工作方式 ,因此 采用工作方式3,因此TMOD寄存器的值设置为 寄存器的值设置为#22H. 采用工作方式 寄存器的值设置为 . 定时器T0,T1的控制设置: 的控制设置: 定时器 的控制设置 打开T0, ;要求TCON寄存器的值设置为 寄存器的值设置为#50H. 打开 ,T1;要求 寄存器的值设置为 .
定义存储区域的大小. 6. DS —定义存储区域的大小. 定义存储区域的大小 例: ORG 0350H DS 3

第三章MCS51系列单片机指令系统及汇编语言程序设计

第三章MCS51系列单片机指令系统及汇编语言程序设计
AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)

大学课件MCS51单片机指令系统与汇编语言程序设计

大学课件MCS51单片机指令系统与汇编语言程序设计

ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。

第3章51系列单片机程序设计(C语言部分)

第3章51系列单片机程序设计(C语言部分)

idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata
分页寻址片外数据存储区(256字节)由MOV @Ri访问(i=0,1)
xdata
片外数据存储区(64 KB)由MOVX @DPTR访问
code
程序存储器64 KB空间,由MOVC @DPTR访问
第3章 51系列单片机程序设计(C部分)
/* Ary37定义为abry[3]的第7位 */
第3章 51系列单片机程序设计(C部分)
3.5 数 组
数组:数组是一组类型相同 有序数据的集合。用数组名 和下标来唯一确定数组中的 元素。
第3章 51系列单片机程序设计(C部分)
3.5.1 一维数组
一、一维数组的定义 形式:类型说明符 数组名 [常量表达式]
使用C51进行编程时,MCS-51片内的I/O口与片外扩展的I/O可以统一在一个头文 件中定义,也可以在程序中(一般在开始的位置)进行定义。
对于MCS-51片内I/O口按特殊功能寄存器方法定义。 例如:
sfr P0=0x80 ; /* 定义P0口,地址为80H */ sfr P1=0x90 ; /* 定义P1口,地址为90H */
第3章 51系列单片机程序设计(C部分)
3.4.3 C51数据的存储类型与MCS-51存储结构
表 3.4.2 C51存储类型与MCS-51存储空间的对应关系
存储类型 与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节)
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节)
据 浮点型(float) 类
型 指针类型
详细见表3.4.1

第3章MCS1的指令系统

25
7.位寻址
3.4
MCS-51指令系统分类介绍
MCS-51 的指令系统,共有 111 条指令,按功能分类, 可分为下面5大类: (1)数据传送类(28条) (2)算术操作类(24条 (3)逻辑运算类(25条)
(4)控制转移类(17条)
(5)位操作类(17条)
26
3.4
MCS-51指令系统分类介绍
程序存储器 DPTR
2000H A
2010H 64H 64H(10H) 10H
2000H
变址寻址示意图
18
5.基址寄存器加变址寄存器间址寻址方式(变址寻址) 说明: (1)本寻址方式是专门针对程序存储器的寻址方式,寻址范围 可达到64KB。 (2)本寻址方式的指令只有3条: MOVC A,@A+DPTR
8
3.3
1.寄存器寻址方式
指令系统的寻址方式
以通用寄存器的内容为操作数的寻址方式。 通用寄存器指A、B 、DPTR以及R0~R7 。 寄存器寻址就是从寄存器中读取操作数或存放操作数进寄存
器。
MOV A,Rn ;(Rn)→A,n=0~7 表示把寄存器Rn的内容传送给累加器A 寻址范围: (1)4组通用工作寄存区共32个工作寄存器。 (2)部分特殊功能寄存器,例如A、B 以及数据指针寄存器 DPTR等。
在相对寻址的转移指令中,给出了地址偏移量,以“rel” 表示,即把 PC 的当前值加上偏移量就构成了程序转移的目的
地址:
目的地址=转移指令所在的地址 + 转移指令的字节数 + rel 偏移量rel是一带符号的8位二进制数补码数。 范围是:–128 - +127 向地址增加方向最大可转移(127+转移指令字节)个单元

第3章_MCS-51单片机指令系统及汇编语言程序设计2


3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $

第3章 MCS-51指令系统


注意
•区分各种寻址方式的涵义,正确取得传送的 数据
例:R0=30H,(30H)=50H
MOV A,R0;(A)=30H MOV A,@R0;(A)=50H MOV A,30H;(A)=(30H)=50H MOV A,#30H;(A)=30H
•所有传送指令都不影响标志位
•数据传送与数据交换区别开
2.以寄存器Rn为目的操作数的指令(3条)
3.2.6 相对寻址

相对寻址方式是为了程序的相对转移而设计 的, 以PC的内容为基址,加上给出的偏移量作为 转移地址,从而实现程序的转移。 转移的目的地址=转移指令地址+转移指令字 节数+偏移量
值得注意的是,偏移量是有正负号之分的有符号数, 偏移量的取值范围是当前PC值的-128—+127之间。
l数据传送类指令(29条) l算术运算类指令(24条) l逻辑操作类指令(24条)
控制转移类指令(17条) l位操作类指令 (17条)
l
3.3.1数据传送指令(29条)
片内传送指令 MOV 片外传送指令 MOVX 查表传送指令 MOVC 累加器交换指令 XCH、XCHD、SWAP 堆栈操作指令 PUSH、POP MOV 目的操作数
这3条指令的功能是把源操作数指定的内容送到所选定的工作寄存 器Rn中。有直接、立即和寄存器寻址方式:
MOV Rn , direct ;(direct)→(Rn) 直接寻址单元中的内容送到寄存器Rn中 MOV Rn , #data ;#data→(Rn) 立即数直接送到寄存器Rn中 MOV Rn , A ;(A)→(Rn) 累加器A中的内容送到寄存器Rn中

3.2.7 位寻址
在MCS-51单片机中,RAM中的20H—2FH字节单元对应

MCS-51单片机的汇编语言指令系统


3.2.3 寄存器寻址方式 操作数在寄存器中
MOV A,R0
寻址范围: (1)工作寄存器:4组R0~R7 (2)部分特殊功能寄存器:如A、B、DPTR等
3.2.4 寄存器间接寻址方式
寄存器中存放的是操作数的地址, 即操作数是通过寄存器间接得到的 如:MOV A,@R0
寻址范围: (1)内部RAM低128单元 (2)外部RAM 64KB 如 MOVX A,@DPTR (3)外部RAM的低256单元 如:MOV A,@R0 (4)堆栈操作指令(PUSH、POP),以堆栈作间址
如: INC DPTR 1010 0011
MOV A,Rn
无操作数 含有操作数
1110 1rrr
一字节指令49条
2、双字节指令 包括二个字节,其中第一个字节为操作码,
第二个字节为操作数
如:MOV A,#data 指令代码:0111 0100
立即数
双字节指令共45条
3、三字节指令 三字节指令中,操作码占一个字节 操作数占两个字节
目的地址=转移指令地址+转移指令字节数+ rel 偏移量rel是一个带符号的8位二进制补码数,表示的数 的范围是:-128~+127
3.2.7 位寻址方式 位处理功能,可以对数据位进行操作
如:MOV C,3AH 把3AH位的状态送进位位C 寻址范围: (1)内部RAM中的位寻址区
单元地址为20H~2FH,共16个单元128位,位地址 是00H~7FH (2)专用寄存器的可寻址位 可供寻址的专用寄存器共有11个,实有寻址位83位
第3章 MCS-51单片机的汇编语言指令系统
3.1 指令格式及其符号说明
单片机汇编语言:助记符语言 单片机的指令:是CPU用于控制功能部件完成某一
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第3章 MCS-51单片机汇编语言程序设计3.1 MCS-51单片机指令系统3.1.1基础知识1.基本概念指令:由程序员编写的能够为计算机识别的命令。

指令系统:由全部指令构成的指令集合。

汇编语言:用助记符描述的指令的集合。

汇编程序:汇编语言编写的程序借助编译工具编译成为目标代码,计算机才能识别。

这个编译工具称为汇编程序。

2.指令的分类每条指令在程序存储器ROM中占据一定的空间,以字节为单位。

按指令所占字节数分类:单字节(49条);双字节(46条);3字节(16条)。

每条指令在执行时要花去一定的时间,以机器周期为单位。

按指令执行时间分类:单周期(64条);双周期(45条);4周期(2条)。

按指令的功能分类,可分为5大类:数据传送类(29条);算术运算类(24条);逻辑运算及移位类(24);控制转移类(17条);位操作类(17条)。

3.MCS-51单片机指令的格式1).MCS-51单片机指令的标准形式:[标号:]操作码 [目的操作数/寻址方式][,源操作数/寻址方式][;注释]其中:方括符[ ]表示可选项,一个具体的指令可以有这部分也可以没有这部分;标号代表指令所在的程序存储器地址,可以是1-8个以字母开头的字符串,以“:”结尾;操作码就是指令功能助记符;目的操作数存储指令的操作结果;源操作数是操作的数据源;注释是以“;”开头的不进行任何操作,起到帮助解释程序功能的作用。

2).MCS-51单片机指令的寻址方式寻址方式:指令按地址获得操作数的方式。

MCS-51单片机共有七种寻址方式:(1)寄存器寻址:操作数存储在寄存器中,是最节省存储空间的一种寻址方式。

(2)立即寻址:指令中直接给出进行操作的操作数,操作数以#为前缀,当操作数是以A—F 开头的十六进制数时必须在前面添一个“0”。

二进制数必须带后缀“B”或“b”;十六进制数必须带后缀“H”或“h”;十进制数的后缀是“D”或“d”或不加任何符号。

(3)寄存器间接寻址:操作数的地址存放在寄存器中,循环结构程序经常使用这种寻址方式,也作为52系列单片机寻址内部RAM 80H -0FFH单元的寻址方式。

(4)直接寻址:直接给出存放操作数的地址,SFR只能采用直接寻址方式。

(5)基址加变址间接寻址:基址寄存器的内容加上变址寄存器的内容是存放操作数的地址,查表程序经常使用这种寻址方式;(6)相对寻址:在指令中给出相对地址rel,rel是一个8位数的地址偏移量,是相对于转移指令下一条指令第一个指令代码的地址偏移量。

是控制程序转移时使用的寻址方式;(7)位寻址:指令中给出进行操作位的直接地址,是MCS-51单片机的一个特点。

最后应当指出一条指令可能有多种寻址方式。

3.1.2 指令系统MCS-51单片机的汇编语言包括两种指令:一种是(真)指令:告诉计算机如何操作以及做何种操作;另一种是伪指令:告诉汇编程序在翻译应用程序时有何具体约定。

伪指令不进行具体的操作。

1.指令集MCS-51系列单片机指令集含有111条指令,按功能分可以分成五大类功能:1).数据传送类指令(5种/29条)①内部存储器间传送:(MOV—16条);②外部数据存储器与累加器间传送:(MOVX——4条);③程序存储器向累加器传送:(MOVC—2条);④数据交换:(XCH,XCHD,SWAP—5条);⑤堆栈操作:(PUSH,POP—2条)。

2).算术运算类指令(6种/24条)①半加法运算: (ADD—4条);②带进位加法运算 (ADDC—4条);③带借位减法运算(SUBB—4条);④加1/减1操作: (INC,DEC—9条);⑤单字节乘/除法运算: (MUL,DIV—2条);⑥十进制调整: (DA A—1条)。

;3).逻辑运算及移位类指令(5种/24条)①逻辑与运算:(ANL—6条);②逻辑或运算:(ORL—6条);③逻辑异或运算:(XRL—6条);④累加器清零/取反:(CLR,CPL—2条);⑤累加器移位操作:(RL,RLC,RR,RRC—4条)。

4).控制转移类指令(4种/17条)①无条件转移:(LJMP,AJMP,SJMP,JMP—4条);②条件转移(判断跳转):(JZ,JNZ,CJNE,DJNZ—8条);③程序调用及返回:(LCALL,ACALL,RET,RETI—4条);④空操作:(NOP—1条)。

“耗时”一个机器周期。

5).位操作类指令(4种/17条)①位传送:(MOV—2条);②位清零/置位:(CLR,SETB—4条);③位逻辑与/或/非运算:(ANL,ORL,CPL—6条);④位条件转移:(JC,JNC,JB,JNB,JBC—5条)。

2. 伪指令1).ORG伪指令格式:ORG常数此语句用于指出程序在程序存储器中的位置,通过ORG指令参数的变化,可以定义程序编译后的存储地址,主程序可以省略此语句,相当于使用ORG 0000H。

2).END伪指令格式:END指出源程序的结束。

编译程序对END后面语句不作处理。

3).DB伪指令格式:地址名:DB表达式表DB伪指令按字节值初始化存储器,表达式表是由逗号分隔的一个或多个字节值或字符串组成。

例:ABC: DB ’DAY’,25H,1010BABC: DB 44H,41H,59H,25H,0AH这两条伪指令是等价的。

DB伪指令中的地址名,应由以字母开头不长于12个字符的串组成,可以被指令作为参数引用,引用时地址名具有相应数据区首地址的值。

4).DW伪指令格式:地址名: DW 数字表DW伪指令按字(二个字节)初始化存储器,与DB伪指令一样,地址名可以被指令作为参数引用。

例:ABC: DW 1234H,08HABC: DB 12H,34H,00H,08H以上两条伪指令是等价的。

5).DS伪指令格式:地址名: DS 常数DS伪指令保留一段存储空间,空间的长度由常数指定。

该空间全部填写FFH。

例如:ABC: DS 4ABC: DB 0FFH, 0FFH,0FFH,0FFH。

以上两条伪指令是等价的。

6).EQU伪指令格式:符号名 EQU 21HEQU伪指令给符号名指定一个数值,以后用户可以在指令中引用符号名就相当于使用该数值。

例如:NUM EQU 21HMOV A,#NUM等价于 MOV A #21H(源操作数是立即寻址)MOV A,NUM等价于 MOV A,21H(源操作数是直接寻址)7).位地址符号命令BIT格式:字符名称 BIT 位地址该命令把位地址赋于标号段的字符名称。

例如:A1BIT P1.0A2BIT P1.1这里位地址P1.0、P1.1分别赋给标号段的字符A1、A2,在编程中可将字符A1、A2当作位地址用。

3.2 MCS-51单片机典型汇编语言程序设计要点3.2.1循环程序循环程序的结构大体上是相同的。

要特别注意以下几个问题:1、在进入循环之前,应合理设置循环初始变量。

2、循环体只能执行有限次,如果无限执行的话,称之为“死循环”,这是应当避免的。

3、不能破坏或修改循环体,这里,要特别注意应避免从循环体外直接跳转到循环体内。

4、多重循环的嵌套,应当是以下两种形式:图3.1(a)、(b)图均正确,应避免图(c)的情况。

(a)(b)(c)图3.1 循环程序结构图由此可见,多重循环是从外层向内层一层层进入,从内层向外层一层层退出。

不要在外层循环中用跳转指令直接转到内层循环体内。

5、循环体内可以直接转到循环体外或外层循环中,实现一个循环由多个条件控制结束的结构。

6、对循环体的编程要仔细推敲,合理安排,对其进行优化时,应主要放在缩短执行时间上,其次是程序的长度。

3.2.2查表程序查表是汇编语言程序设计中经常遇到的一类程序,对于一些复杂参数的计算,不仅程序长,难以计算,而且要耗费大量时间。

尤其是一些非线性参数,用一般算术运算解决是十分困难的。

它涉及到对数、指数、三角函数以及微分和积分运算。

对于这样一些运算,用汇编语言编程都比较复杂,有些甚至无法建立数学模型,如果采用查表法解决就容易多了。

所谓查表,就是把事先计算或测得的数据按一定顺序编制成表格,存放在程序存贮器中。

查表程序的任务就是根据被测数据,查出最终所需要的结果。

因此查表比直接计算简单得多,尤其是对非数值计算的处理上。

利用查表法可完成数据运算、数据转换和数据补偿等工作。

并具有编程简单、执行速度快、适合于实时控制等优点。

编程时可以方便地利用伪指令DB或DW把表格的数据存入程序存贮器ROM。

MCS-51指令系统中有两条指令具有极强的查表功能。

1. MOVC A,@A+DPTR该指令以数据地址指针DPTR内容作基址,它指向数据表格首址,以变址器A的内容为所查表格的项数(即在表格中的位置是第几项)。

执行指令时,基址加变址,读取表格中的数据,(DPTR+A)内容送A。

该指令可以灵活设置数据地址指针DPTR内容,可在64K程序存贮器范围内查表,故称为长查表指令。

2. MOVC A,@A+PC该指令以程序计数器PC内容作基址,以变址器A内容为项数加变址调整值。

执行指令时,基址加变址,读取表格中数据,(PC+A)内容送A。

变址调整值即MOVC A,@A+PC指令执行后的地址到表格首址之间的距离,即两地址之间其它指令所占的字节数。

用PC内容作基址查表只能查距本指令256个字节以内的表格,被称为页内查表指令或短查表指令。

执行该指令时,PC当前值是由MOVC A,@A+PC指令在程序中的位置加2以后决定的,还要计算变址调整值,使用起来比较麻烦。

但它不影响DPTR内容,使程序具有一定灵活性,仍是一种常用的查表方法。

3.2.3 子程序编程及调用在MCS-51指令系统中,子程序调用指令LCALL、ACALL的功能是:①首先将返回点地址推入堆栈;②将子程序首址置入PC。

子程序返回指令RET的功能是将返回点地址置入PC。

因此,作为子程序,必须有明确的符号地址,而且,子程序的最后一句指令必须是RET。

在主程序运行时可能会用到RAM,R n,A,DPTR,PSW以及其它特殊功能寄存器,而在子程序中也可能又用到这些寄存器,如果在子程序运行时,首先不对主程序的工作环境或称现场加以保护,则在子程序运行时就可能破坏掉现场,子程序返回后,主程序会因现场环境被破坏而不能继续工作。

因此,在调用子程序过程中,保护现场和恢复现场是必要的。

习题与思考题解题思路与方法【习题3-1】什么是指令?什么是程序?简述程序在计算机中的执行过程。

【解答】指令是控制计算机进行某种操作的命令。

CPU就是根据指令来指挥和控制计算机各部分协调地动作,完成规定的操作。

指令是由二进制代码表示的。

通常指令分为操作码和操作数两部分:操作码规定操作的类型,操作数给出参加操作的数据或存放数据的地址。

为完成某项规定任务,把计算机指令按一定次序进行编排组合所形成的指令集称为程序。

相关文档
最新文档