- 1、本文档共210页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
MCS-51指令系统与汇编语言程序设计基础讲述
MCS-51系列单片机采用复杂指令系统,共有42种操作码助记符,支持直接寻址、寄存器寻址、间接寻址、立即数寻址、变址寻址、相对寻址及位寻址等七种寻址方式。不同指令操作码助记符与不同寻址方式之间的组合构成了MCS-51系列单片机的指令系统,共111条。按功能可将这些指令分为数据传送指令、算术运算指令、逻辑运算指令、控制转移指令和位操作指令等五大类,每一类型的指令中又包含若干条指令。由于指令较多,使得许多初学者感到很难掌握,其实只要理解每类指令的功能、助记符及其支持的寻址方式,即可从MCS-51指令表中找出完成特定操作所需的指令。 本章在介绍MCS-51指令系统时,为方便叙述,使用了下列符号及约定: (1) ?Rn(n=0~7):表示工作寄存器组R0~R7中的某一寄存器。 (2) ?@Ri(i=0~1):以寄存器R0或R1作间接寻址,表示操作数地址在寄存器R0或R1中。其中“@”是间接寻址标识符,操作对象是外部RAM或内部RAM 00H~FFH单元(对仅有前128字节内部RAM的51子系列来说,地址范围是00H~7FH)。 (3)? @DPTR:以数据指针DPTR(16位)作间接寻址,操作数在外部RAM中,“@”同样是间接寻址标识符。 (4)? #data:8位立即数;#data16:16位立即数。其中“#”是立即数标识符,常用于初始化内部RAM单元、特殊功能寄存器和数据指针DPTR中。 (5)? direct:8位直接地址,可以是内部RAM 00H~7FH单元字节地址、内部RAM 20H~2FH单元中的位地址或特殊功能寄存器的映像地址。 (6)? /bit:在位操作中,取出“bit”位信息后,先取反,然后再参与运算,但不改变bit位的值,其中“/”是位取反标识符。 (7)? rel:补码形式的8位偏移地址,范围在-128~+127之间。 (8)? rrr:在操作码中,用于表示R0~R7寄存器的编码。rrr编码与寄存器R0~R7之间的对应关系如下: (9) ?addr11:11位目标地址,用于ACALL(绝对调用)和AJMP(绝对跳转)指令中,转移范围为2?KB。 (10) ?addr16:16位目标地址,用于LCALL和LJMP指令中,转移范围为64?KB。 (11) 操作数中的累加器A写作“A”时是寄存器寻址,写作“Acc”时是直接寻址,尽管操作对象均是CPU内的累加器A。对于支持直接寻址和寄存器寻址的指令来说,用“A”和“Acc”均可,只是指令的操作码不同;对于不支持寄存器寻址的指令(如PUSH、POP),则不能将累加器“Acc”写作“A”;而对于不支持直接寻址的指令,如“MOVX”中的“A”也不能写成“Acc”。因此,在汇编语言指令中,须严格区分累加器A的写法。 (12) 累加器A的内容为nn时,用“A=nn”表示;地址编码为mm的存储单元内容用“(mm)”表示。 (13) 指令执行时间用“机器周期”度量。例如“MOV A,Rn”指令执行时间为一个机器周期,在标准MCS-51中,一个机器周期包含12个振荡周期(即时钟周期)。如果晶振频率为12?MHz,则振荡周期T=1/12 μs,因此一个机器周期为12T,即1?μs。对于运行在“6时钟/机器周期”的8XC5XX2、89C51RX、P89C6XX2芯片来说,指令机器周期数不变,但指令执行的时间缩短了一半;对于运行在“2时钟/机器周期”的芯片LPC900系列来说,指令执行时间只有标准MCS-51的1/6。 (14) 指令机器码一律用二进制书写。 (15) 对于不常用或约束条件多、容易出错的指令,在指令表中加灰色背景,程序设计时应尽量避免使用这类指令。 3.1.1 数据传送指令 数据传送是计算机系统中最常见、最基本的操作。因此,数据传送指令在计算机指令系统中占有重要位置,指令条数也最多。数据传送指令的任务是实现计算机系统内不同存储单元之间的信息传送,如图3-1所示。 在MCS-51指令系统中,数据传送指令包括: (1) 内部RAM与特殊功能寄存器之间的数据传送指令,这类指令用“MOV”作为指令操作码助记符。 (2) 外部RAM(包括扩展的并行I/O口、内部扩展RAM,即ERAM)与累加器A之间的数据传送指令,这类指令用“MOVX”作为指令操作码助记符。 图3-1 MCS-51中不同存储区之间数据传送示意图 (3) 程序存储器读指令,即程序存储器ROM与累加器A之间的数据传送指令,这类指令用“MOVC”作为指令操作码助记符。 (4) 堆栈操作指令。 (5) 字节交换指令。 数据传送指令一般不影响程序状态字寄存器PSW中的标志位,只有当数据传送到累加器A时,P
文档评论(0)