- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 MCS-51系列单片机指令系统
和汇编语言程序设计
;第一节 汇编语言与指令系统
程序:完成某项特定任务的指令的集合,设计程序用
程序设计语言
程序设计语言:机器语言、汇编语言、高级语言
机器语言:是机器唯一能懂的语言。
用汇编语言和高级语言编写的程序(源程序)必须
翻译成机器语言的程序(目标程序),计算机才能执行。
汇编语言:汇编语言的指令格式分为操作码和操作数,
操作码告诉计算机做什么,操作数表明所处理的数据是
什么。适用于编制程序工作量不大,规模较小的程序,
高级语言:高级语言面向过程。;指令系统:所有指令的集合。
51系列单片机的指令系统共有111条指令。指令按
字节来分有单字节指令、双字节指令、三字节指令。指
令字节数越少,指令执行的速度越快,所占的存储单元
也越少。指令按功能可分为五类:
(1)数据传送指令 用于单片机片内RAM和特殊功能寄存器SFR之间传送数据或用于片内和片外存储单元之间传送数据。
(2)算术运算指令 用于对两个数进行加、减、乖、除等算术运算,影响程序状态字PSW。
(3)逻辑操作指令 用于对两个操作数进行逻辑乖、逻辑或、逻辑异或、逻辑取反等操作。
(4)控制转移指令 用来改变程序执行的流向,执行后改变程序计数器PC中的值。 ;5)位操作指令 位操作指令又称布尔变量操作指令,分为位传送、位置位、位运算和位控制转移指令。
指令系统中所用符号的说明:
(1)Rn:工作寄存器,可以是R0—R7中的一个
(2)#DATA:8位立即数,实际使用时DATA应是00H—FFH中的一个
(3)direct:8位直接地址:实际使用时direct应00H—FFH中的一个,也可以是采用物理地址表示的特殊功能寄存器SFR中的一个
(4)@Ri:表示寄存器间接寻址,Ri只能是R0或R1;(5)#data:16位立即数
(6)@DPTR:表示以DPTR为数据指针的间接寻址,用于对外部64K RAM/ROM寻址
(7)bit:位地址
(8)addr11:11位目标地址
(9)addr16:16位目标地址
(10)rel:8位带符号地址偏移量
(11)$:当前指令的地址
;第二节 寻址方式
寻找操作数的方法称为指令的寻址方式。在执行指令是时,CPU要根据地址寻找参加运算的操作数,然后才能对操作数进行操作,操作结果还要根据地址存入相应存储单元或寄存器中,计算机执行程序实际上是不断寻找操作数并进行操作的过程。
一、立即寻址
立即寻址是在指令码中直接含有所需的立即数,可以是二进制8位或16位立即数,立即数用#data或#data16表示,例如指令MOV A,#30H,表示把立即数30H送入累加器A;
;二、寄存器寻址
这类指令所需操作数在某个工作寄存器R0—R7、A、B或DPTR等中。例如指令ADD A,R2,它的操作功能是取出工作寄存器R2中的内容(操作数)与累加器A中的内容相加,结果送回累加器A。
如:ADD A,R2
它的操作功能是(A)? (A)+ (R2)
指令 ADD A,Ri
以Ri中i的不同,指定是哪个寄存器。;;
要访问片外RAM某一单元,还可以用16位的DPTR间接寻址。
MOV DPTR,7000H
MOVX A,@DPTR
;四、直接寻址
直接给出操作数所在的存储器地址,就称为直接寻址。可用于直接寻址的存储空间主要有片内RAM的128字节和特殊功能寄存器SFR,直接地址采用direct表示,在汇编成机器码时,direct必须用实际操作数的物理地址。
如:MOV A,3AH; A←(3A)
如:MOV A,B ;同MOV A,F0。
51单片机有很强位操作功能,片内RAM有16个单元(20H~2FH)和12个SFR的各位被赋予了地址。
;五、基址寄存器加变址寄存器间接寻址
用于访问程序存储器,主要用于查表性质的访问。以程序计数器(PC)或数据指针DPTR作为基址寄存器,以累加器A作为变址寄存器,把它们的地址和作为程序存储器地址,再读取数据。有如下两条指令:
MOVC A,@A+PC;A←(A+PC)
MOVC A,@A+DPTR;A←(A+DPTR)
例:已知片外ROM单元的20E0H单元有一常数47H,要把它取到累加器A,请编出相应程序。
解:根据变址寻址的特点,基地址取2000H,变址为E0H,相应程序为:
MOV DPTR,#2000H ;DPTR←0300H
MOV A,#E0H ;A←02
MOVC A,@A+DPTR; ;A←47H ;;;六、相
文档评论(0)