- 1、本文档共153页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
(2)长调用指令。助记符机器码LCALLaddr1615…a8a7…a0这条指令执行时把PC内容加3获得下一条指令首地址,并把它压入堆栈(先低字节,后高字节),SP内容加2;然后把指令的第二、第三字节(a15~a8,a7~a0)装入PC中,转去执行该地址开始的子程序。这条调用指令可以调用存放在存储器中64KB范围内任何地方的子程序。指令执行后不影响任何标志位。【例3-29】[HT][ST]设(SP)=60H,标号地址START为0100H,标号MIR为8100H,执行下列指令:START:LCALLMIR结果为:(SP)=62H,(61H)=03H,(62H)=01H,(PC)=8100H。(3)返回指令。子程序返回指令。助记符 机器码RET子程序返回指令是把栈顶相邻两个单元的内容弹出送到PC,SP的内容减2,程序返回PC值所指的指令执行。RET指令通常安排在子程序末尾,使程序能从子程序返回到主程序。【例3-30】[HT][ST]设(SP)=62H,(62H)=07H,(61H)=30H,执行下列指令:RET结果为:(SP)=60H,(PC)=0730H,CPU从0730H开始执行程序。·中断返回指令。助记符 机器码RETI这条指令的功能与RET指令相类似。通常安排在中断服务程序的最后。它的应用将在中断一节讨论。(4)空操作指令。助记符 机器码NOP空操作指令也是CPU控制指令,它没有使程序转移的功能。因仅此一条,故不单独分类。3.4伪指令上一节介绍的MCS-51指令系统中的每一条指令都是用意义明确的助记符来表示的。这是因为现代计算机一般都配备汇编语言,每一条语句就是一条指令,命令CPU执行一定的操作,完成规定的功能。但是由汇编语言编写的源程序,计算机不能直接执行,因为计算机只认识机器指令(二进制编码)。因此,必须把汇编语言源程序通过汇编程序翻译成机器语言程序(称为目标程序),计算机才能执行,这个翻译过程称为汇编。汇编程序对用汇编语言写的源程序进行汇编时,还要提供一些汇编用的指令,例如要指定程序或数据存放的起始地址;要给一些连续存放的数据确定单元,等等。但是,这些指令在汇编时并不产生目标代码,不影响程序执行,所以称为伪指令。常用的伪指令有下列几种。1.ORGORG(Origin——起点)伪指令总是出现在每段源程序或数据块的开始,它指明此语句后面的程序或数据块的起始地址。其一般格式为ORGnnH(绝对地址或标号)在汇编时由nnH确定此语句后面第一条指令(或第一数据)的地址。该段源程序(或数据块)就连续存放在以后的地址内,直到遇到另一个ORGnnH语句为止。【例3-31】ORG伪指令举例。ORG8000HMOVR0,#50HMOVA,R4ADDA,@R0MOVR3,AORG伪指令说明其后面源程序的目标代码在存储器中存放的起始地址是8000H,即:2.DBDB为DefineByte的缩写,用于定义一个字节。一般格式为标号:DB字节常数或字符或表达式其中,标号区段可有可无;字节常数或字符是指一个字节数据,它的形式一般为用逗号分开的字节串,或用引号括起来的ASCII码字符串(一个ASCII码字符相当于一个字节)。此伪指令的功能是把字节常数或字节串存入内存连续单元中。【例3-32】[HT][ST]DB伪指令举例。ORG9000HDATA1:DB73H,01H,90HDATA2:DB02H伪指令ORG9000H指定了标号DATA1的地址9000H,伪指令DB指定了数73H、01H、90H顺序地存放在从9000H开始的单元中;DATA2也是一个标号,它的地址紧接前一条伪指令DB数据,为9003H,数02H存
文档评论(0)