资源描述:
《单片微型计算机及应用(张毅坤) 第3章 指令系统及汇编.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第3章指令系统及汇编3.1MCS—51单片机汇编语言与指令格式3.2寻址方式3.3MCS—51单片机指令系统3.4汇编语言及汇编语言程序设计3.5基本程序设计方法3.6程序设计举例3.1MCS—51单片机汇编语言与指令格式3.1.1单片机的汇编语言由于构成计算机的电子器件特性所决定,计算机只能识别二进制代码。这种以二进制代码来描述指令功能的语言,称之为机器语言,用机器语言组成的程序,称为目标程序。计算机就是按照机器语言的指令来完成各种功能操作的,它具有程序简捷、占用存储空间小、执行速度快、控制功能强等特点。3.1.2指令格式MCS—51单片机汇编语言指令的标准格式如下:[标号:]操作
2、码[目的操作数][,源操作数][;注释]例如:LOOP:ADD#A,#10H;(A)←(A)+10H(1)方括号[]表示该项是可选项,可有可无。(2)标号是用户设定的符号,它实际代表该指令所在的地址。标号必须以字母开头,其后跟1~8个字母或数字,并以“:”结尾。(3)操作码是用英文缩写的指令功能助记符。它确定了本条指令完成什么样的操作功能。如:ADD表示加法操作。任何一条指令都必须有该助记符项,不得省略。(4)目的操作数提供操作的对象,并指出一个目标地址,表示操作结果存放单元的地址,它与操作码之间必须以一个或几个空格分隔。如上例中A表示操作对象是累加器A的内容,并指出操作结果又回送A
3、存放。(5)源操作数指出的是一个源地址(或立即数),表示操作的对象或操作数来自何处。它与目的操作数之间要用“,”号隔开。(6)注释部分是在编写程序时,为了增加程序的可读性,由用户拟写对该条指令或该段程序功能的说明。它以分号“;”开头,可以用中文、英文或某些符号来表示,显然它不存入计算机,只出现在源程序中。3.1.3指令中常用符号在分类介绍各类指令之前,先对描述指令的一些符号意义进行一些简单约定:(1)Ri和Rn:R表示当前工作寄存器区中的工作寄存器,i表示0或1,即R0和R1。n表示0~7,即R0~R7,当前工作寄存器的选定是由PSW的RS1和RS0位决定的。(2)#data:#表示
4、立即数,data为8位常数。#data是指包含在指令中的8位立即数。(3)#data16:包含在指令中的16位立即数。(4)rel:相对地址,以补码形式表示的地址偏移量,范围为-128~+127,主要用于无条件相对短转移指令SJMP和所有的条件转移指令中。(5)addr16:16位目的地址。目的地址可在全部程序存储器的64KB空间范围内,主要用于无条件长转移指令LJMP和子程序长调用指令LCALL中。(6)addr11:11位目的地址。目的地址应与下条指令处于相同的2KB程序存储器地址空间范围内,主要用于绝对转移指令AJMP和子程序绝对调用指令ACALL指令中。(7)direct:表
5、示直接寻址的地址,即8位内部数据存储器RAM的单元地址(0~127/255),或特殊功能寄存器SFR的地址。对于SFR可直接用其名称来代替其直接地址。(8)bit:内部数据存储器RAM和特殊功能寄存器SFR中的可直接寻址位地址。(9)@:间接寻址寄存器或基地址寄存器的前缀,如@Ri,@DPTR,表示寄存器间接寻址。(10)(X):表示X中的内容。(11)((X)):表示由X寻址的单元中的内容,即(X)作地址,该地址的内容用((X))表示。(12)/和→符号:/表示对该位操作数取反,但不影响该位的原值。→表示指令操作流程,将箭头一方的内容,送入箭头另一方的单元中去。3.2寻址方式3.2
6、.1寄存器寻址选定某寄存器,自该寄存器中读取或存放操作数,以完成指令规定的操作,称为寄存器寻址。例如:MOVA,R0;(A)←(R0)该指令的功能是把工作寄存器R0中的内容传送到累加器A中,如:R0内容为FFH,则执该指令后A的内容也为FFH。在该条指令中,源操作数和目的操作数是由寻址R0和A寄存器得到的,故属于寄存器寻址。该指令为单字节指令,机器代码为E8H。3.2.2立即寻址操作数直接出现在指令中,它紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器内,可以立即得到并执行,不需要另去寄存器或存储器等处寻找和取数,故称为立即寻址。该操作数称为立即数,并在其前冠以“#”
7、号作前缀,以表示并非地址。立即数可以是8位或16位,用十六进制数表示。例如:MOVA,#0FH;(A)←0FH该指令的功能是将立即数0FH传送到累加器A中,对应的机器码为74H。它隐含了寄存器寻址累加器A方式,长一个字节,占用一个存储单元;立即数0FH紧跟在操作码之后,成为指令代码的一部分,长也是一个字节,占用紧跟在后面的另一个存储单元。故该指令为双字节指令,其机器码为74H0FH。3.2.3寄存器间接寻址由指令指出某一个寄存器的内容作为操作数地址的寻址方