《单片机汇编程序设计〖PPT课件〗单片机原理与应用及C51程序设计》由会员分享,可在线阅读,更多相关《单片机汇编程序设计〖PPT课件〗单片机原理与应用及C51程序设计(73页珍藏版)》请在金锄头文库上搜索。
1、第三章 单片机汇编程序设计 指令是使计算机完成基本操作的命令。一种计算机能够执行的全部指令的集合,称为这种计算机的指令系统。单片机的指令系统与微型计算机的指令系统不同, 42种指令助记符,其中有 49条单字节指令, 45条双字节指令和 17条三字节指令;有 64条为单机器周期指令, 45条为双机器周期指令,只有乘、除法两条指令为四机器周期指令。在存储空间和运算速度上,效率都比较高。 令短、执行快。从功能上可分成五大类:数据传送指令、算术运算指令、逻辑操作指令、控制转移指令和位操作指令。 令格式 标号: 操作码助记符 目的操作数 ,源操作数 ;注释 ( 1)操作码助记符表明指令的功能,不同的指令
2、有不同的指令助记符,它一般用说明其功能的英文单词的缩写形式表示。 第三章 单片机汇编程序设计 ( 2)操作数用于给指令的操作提供数据、数据的地址或指令的地址,操作数往往用相应的寻址方式指明。 操作数、双操作数和三操作数四种情况。 ( 3)标号是该指令的符号地址,后面须带冒号。它主要为转移指令提供转移的目的地址。 ( 4)注释是对该指令的解释,前面须带分号。它们是编程者根据需要加上去的,用于对指令进行说明,对于指令本身功能而言是可以不要的。 令中用到的标识符 为便于后面的学习,在这里先对指令中用到的一些符号的约定意义作以说明: ( 1) n:表示当前工作寄存器区中的工作寄存器, 或 1,表示 1
3、。 7,表示 7。 ( 2) #示包含在指令中的 8位立即数。 ( 3) #示包含在指令中的 16位立即数。 第三章 单片机汇编程序设计 ( 4) 补码形式表示的 8位相对偏移量,范围为 27,主要用在相对寻址的指令中。 ( 5) 别表示 16位直接地址和 11位直接地址。 ( 6) 示直接寻址的地址。 ( 7) 示可位寻址的直接位地址。 ( 8)( X):表示 ( 9)( X):表示以 ( X)作地址,该地址单元的内容用( X)表示。 ( 10) / 和 符号:“ /”表示对该位操作数取反,但不影响该位的原值。“ ”表示操作流程,将箭尾一方的内容送入箭头所指一方的单元中去。 第三章 单片机汇
4、编程序设计 分为数的寻址和指令寻址,数的寻址有:常数寻址(立即寻址)、寄存器数寻址(寄存器寻址)、存储器数寻址(直接寻址方式、寄存器间接寻址方式、变址寻址方式)和位寻址,指令的寻址有绝对寻址和相对寻址, 数寻址(立即寻址) 操作数是常数,使用时直接出现在指令中,紧跟在操作码的后面,作为指令的一部分。与操作码一起存放在程序存储器中,可以立即得到并执行,不需要经过别的途径去寻找。常数又称为立即数,故又称为立即寻址。在汇编指令中,立即数前面以“ #”符号作前缀。在程序中通常用于给寄存器或存储器单元赋初值,例如: A, #20H 其功能是把立即数 20,其中源操作数 20令执行后累加器 0H。 第三章
5、 单片机汇编程序设计 存器数寻址(寄存器寻址) 操作数在寄存器中,使用时在指令中直接提供寄存器的名称,这种寻址方式称为寄存器寻址。在 种寻址方式针对的寄存器只能是 7 8个通用寄存器和部分特殊功能寄存器(如累加器 A、寄存器 B、数据指针 的数据,对于其它的特殊功能寄存器中的内容的寻址方式不属于它。在汇编指令中,寄存器寻址在指令中直接提供寄存器的名称,如 A、 如: A, 功能是把 ,在指令中,源操作数 送的对象为 指令执行前 0H,则指令执行后累加器 0H。 储器数寻址 存储器数寻址针对的数据是存放在存储器单元中,对于存储器单元的内容通过提供存储器单元地址使用。根据存储器单元地址的提供方式,
6、存储器数的寻址方式有:直接寻址、寄存器间接寻址、变址寻址。 第三章 单片机汇编程序设计 一直接寻址 直接寻址是指数据在存储器单元中,在指令中直接提供存储器单元的地址。在 种寻址方式针对的是片内数据存储器和特殊功能寄存器。在汇编指令中,指令中直接以地址数的形式提供存储器单元的地址。例如: A, 20H 其功能是把片内数据存储器 20。如指令执行前片内数据存储器 200H,则指令执行后累加器 0H。指令中 20是片内数据存储单元的地址。在 据前面不加“ #”是存储单元地址而不是常数,常数前面要加符号“ #”。 对于特殊功能寄存器,在指令中使用时往往通过特殊功能寄存器的名称使用,而特殊功能寄存器名称
7、实际上是特殊功能寄存器单元的符号地址,因此它们是直接寻址。例如: A, 功能是把 。 指令在翻译成机器码时, 第三章 单片机汇编程序设计 二寄存器间接寻址 寄存器间接寻址是指数据存放在存储单元中,而存储单元地址存放在寄存器中,在指令中通过提供存放存储单元地址的寄存器来使用对应的存储单元。形式为: 寄存器名。 例如: A, 指令的功能是将以工作寄存器 中去。指令的源操作数是寄存器间接寻址。若 0H,片内 00H,则执行该指令后,累加器 0H。寄存器间接寻址示意图如图所示。 80H 20H 20H A 80H 三章 单片机汇编程序设计 在 存器间接寻址用到的寄存器只能是通用寄存器 能访问的数据是片
8、内数据存储器和片外数据存储器。其中,片内数据存储器只能用 1作指针间接访问;片外数据存储器,低端的 256字节单元,既可以用两位十六进制地址以 1作指针间接访问,也可用四位十六进制地址以 高端的字节单元则只能以 于片内 56字节都可以用 们之间用指令来区别。片内 外 三变址寻址 变址寻址是指操作数的地址由基址寄存器的地址加上变址寄存器的地址得到。在 是以数据指针寄存器 加器 者相加得存储单元的地址,所访问的存储器为程序存储器。 第三章 单片机汇编程序设计 例如: A, A+功能是将数据指针寄存器 中的内容相加作为程序存储器的地址,从对应的单元中取出内容送累加器 令中,源操作数的寻址方式为变址寻
9、址,设指令执行前数据指针寄存器 000H,累加器 5H,程序存储器 2005指令执行后,累加器 0H。示意图如图所示。 2000H 30H 30H 2005H 05H A + 第三章 单片机汇编程序设计 寻址 位寻址是指操作数是二进制位的寻址方式。在 多条位处理指令,能够进行各种位运算。在处理的操作对象是各种可位寻址位。对于它们的访问是通过提供相应的位地址来处理。 在 地址的表示可以用以下几种方式: 1直接位地址( 00H0例如: 20H 2字节地址带位号。例如: 0位。 3特殊功能寄存器名带位号。例如: 0口的 1位。 4位符号地址。例如: 计数器 令寻址 一绝对寻址 绝对寻址是在指令的操作
10、数中直接提供目的位置的地址或地址的一部份。在 转移和长调用提供目的位置的 16位地址,绝对转移和绝对调用提供目的位置的 16位地址的低 11位,它们都为绝对寻址。 第三章 单片机汇编程序设计 二相对寻址 相对寻址是以当前程序计数器 对转移指令的操作数属于相对寻址。 在使用相对寻址时要注意以下两点: ( 1)当前 等于转移指令的地址加上转移指令的字节数。实际上是转移指令的下一条指令的地址。例如:若转移指令的地址为 2010H,转移指令的长度为 2字节,则转移指令执行时的 012H。 ( 2)偏移量 位有符号数,以补码表示,它的取值范围为 127。当为负值时,向前转移,当为正数时向后转移。 相对寻
11、址的目的地址为: 目的地址 =当前 PC+移指令的地址 +转移指令的字节数 +三章 单片机汇编程序设计 据传送指令 数据传送指令有 29条,是指令系统中数量最多、使用也最频繁的一类指令。这类指令可分为三组:普通传送指令、数据交换指令、堆栈操作指令。 一普通传送指令 普通传送指令以助记符 成片内数据存储器传送指令、片外数据存储器传送指令和程序存储器传送指令。 1片内数据存储器传送指令 令格式: 目的操作数,源操作数 其中:源操作数可以为 A、 #的操作数可以为 A、 合起来总共 16条,按目的操作数的寻址方式划分为五组: 第三章 单片机汇编程序设计 ( 1)以 A, A A, A ( A, A ( A, # A #( 2)以 A ; A ( # #( 3)以直接地址 A ;( A ( ( ( ( ( #d