HCS12汇编指令

上传人:野鹰 文档编号:3000672 上传时间:2017-07-29 格式:PPT 页数:28 大小:334KB
返回 下载 相关 举报
HCS12汇编指令_第1页
第1页 / 共28页
HCS12汇编指令_第2页
第2页 / 共28页
HCS12汇编指令_第3页
第3页 / 共28页
HCS12汇编指令_第4页
第4页 / 共28页
HCS12汇编指令_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《HCS12汇编指令》由会员分享,可在线阅读,更多相关《HCS12汇编指令(28页珍藏版)》请在金锄头文库上搜索。

1、基于HCS12的嵌入式系统设计,基于HCS12的嵌入式系统设计,合肥工业大学吴 晔,张 阳,滕 勤 Email:,, TEL:13505612773,13966717615,基于HCS12的嵌入式系统设计,第3章 CPU12指令系统,3.1概述3.2 CPU12汇编指令的格式和符号说明3.2.1 操作码和操作数3.2.2 数据类型3.2.3数据表示方法3.2.4寄存器和存储器表示法3.3 寻址方式(Addressing Mode)3.3.1隐含/固有寻址(Inherent Addressing,INH)3.3.2立即寻址(Immediate Addressing,IMM)3.3.3直接寻址(D

2、irect Addressing,DIR)3.3.4扩展寻址(Extended Addressing,EXT)3.3.5相对寻址(Relative Addressing,REL )3.3.6变址寻址(Indexed Addressing,IDX)3.4 S12汇编指令系统3.4.1数据传送指令3.4.2算术运算指令3.4.3逻辑运算指令3.4.4高级函数指令3.4.5 程序控制指令3.4.6 CPU控制指令,基于HCS12的嵌入式系统设计,第3章 CPU12指令系统,3.1概述基本概念回顾指令:计算机能直接识别和执行的命令,即每个有效的编码组。指令系统:一种计算机CPU所能执行的全部指令的集合

3、。指令助记符(instruction mnemonic symbol):用一组有一定含义的字符表示的指令,一般采用相关的英文单词缩写。汇编语言源程序:利用指令助记符编写的程序。操作码(Opcode):规定一条指令完成何种操作。操作数(Operand):指令所完成操作的对象。3.2 CPU12汇编指令的格式和符号说明3.2.1 操作码和操作数CPU12指令组成:(前导字节)+操作码(+后随字节+扩展字节)后置字节提供了一定形式的变址寻址、传送、交换和循环的基址寄存器和偏移量的符号等信息。扩展字节包含有附加的程序信息,例如地址、偏移量和立即数等。,基于HCS12的嵌入式系统设计,3.2 CPU12

4、汇编指令的格式和符号说明(2),3.2.2 数据类型CPU12支持8种数据类型:位数据(1位);5位带符号整数;8位带/无符号整数;字节型组合BCD数(8位);9位带符号整数;16位带/无符号整数;16位有效地址;32位带/无符号整数。3.2.3数据表示方法十进制整数可直接使用;16进制数在数字前面加“$”;二进制数前加“%”;立即数应在数据前加“#”。3.2.4寄存器和存储器表示法寄存器用名称表示,不分大小写;M(Memory location)表示由指令有效地址指向的8位存储单元;R(Result)表示算术或逻辑运算结果;I(Intermediate result)表示算术或逻辑运算的中间

5、结果。寄存器和存储器符号加下标“n”时,表示是它的第n位;16位寄存器符号后加下标“H”或“L”时,表示其高位字节或低位字节。M:M+1表示16位存储器,由M和M+1相邻两个存储单元组成。MM+3表示32位存储器,由4个相邻的存储单元M、M+1、M+2、M+3组成;(M:M+1)表示两个相邻存储单元的内容组成的1个字,(M)为高位字节,(M+1)为低位字节;符号( )表示内容,如M(X)、M(SP)分别是由变址寄存器X和堆栈指针SP所指向的存储单元,M(y+3)是由变址寄存器Y加3后指向的存储单元。,基于HCS12的嵌入式系统设计,3.3 寻址方式(1),寻址:寻找操作数地址的过程。有效地址(

6、effective address):操作数所在的地址。寻址方式(Addressing Mode):通过确定操作数所在的位置(地址),提取操作数的方法。CPU12共有6类寻址方式,即固有寻址、立即寻址、直接寻址、扩展寻址、相对寻址和变址寻址。3.3.1 隐含/固有寻址(Inherent Addressing,INH)固有寻址:有效地址包含在操作码中,也称为隐含寻址(Implied addressing),又因为操作数总是处于CPU的寄存器之中,还称为寄存器寻址(Register addressing)。特征:在指令助记符中会出现寄存器的名称,有时在助记符中甚至连寄存器的名称都不出现。3.3.2

7、 立即寻址(Immediate Addressing,IMM)立即寻址:指令的操作数是一个8位或16位二进制数。指令中出现的操作数称为立即数,为了与直接地址相区别,立即数前必须加“#”号。立即寻址常用来给寄存器赋值。3.3.3 直接寻址(Direct Addressing,DIR)直接寻址:指令中直接给出操作数地址的寻址方式。3.3.4 扩展寻址(Extended Addressing,EXT)扩展寻址:指令中直接给出操作数完整16位地址的寻址方式。,基于HCS12的嵌入式系统设计,3.3 寻址方式(2),3.3.5 相对寻址(Relative Addressing,REL)相对寻址只出现在相

8、对转移指令(relative branch instruction)中。相对寻址:当前的PC值加上指令中规定的地址偏移量relx,构成操作数的实际地址的寻址方式。目的地址=源地址+转移指令字节数+ relx偏移量为8位、9位和16位带符号二进制补码。短转移的偏移量为$80$7F(-128+127);循环控制指令支持9位偏移量,其数值为$100$0FF(-256+255);长转移的偏移量为$8000$7FFF(-3276832767)。如果偏移量为0,则CPU立即执行紧接着转移指令的下一条指令。程序利用转移指令返回到指令首址,所以程序就在该行落入陷阱,称为“原地踏步”。这是一种终止程序的普通方法

9、,广泛用于程序调试。3.3.6 变址寻址(Indexed Addressing,IDX)变址寻址是CPU12的主要寻址方式,也是本节的重点和难点。变址寻址是以某个寄存器的内容为基本地址,然后在这个基本地址上加上地址偏移量,形成操作数地址或存放操作数地址的地址,并将这个地址单元的内容作为指令的操作数。CPU12 共有4类不同的变址寻址方式,这4类又可进一步分解成12种不同的变址寻址方式。3.3.6.1 常数偏移变址寻址(Constant Offset Indexed Addressing)常数偏移变址寻址:将变址寄存器的内容加上一个常数形成操作数地址。有三种不同的偏移量:5位、9位和16位。,基

10、于HCS12的嵌入式系统设计,3.3 寻址方式(3),A、5位常数偏移变址寻址IDX(5-Bit Constant Offset Indexed Addressing)偏移量为5位带符号数,偏移量大小为:-16+15,5位偏移量隐含在后随字节中,有效地址为变址寄存器内容+5位地址偏移量。B、9位常数偏移变址寻址IDX1(9 - Bit Constant Offset Indexed Addressing)9位带符号偏移量的地址偏移范围:-256+255,偏移量的符号位在后随字节中,偏移量大小在扩展字节中,变址寄存器内容加上9位带符号常数偏移量作为操作数地址。C、16 位常数偏移变址寻址IDX2

11、(16-Bit Constant Offset Indexed Addressing)有效地址由变址寄存器内容加上两个偏移量扩展字节形成,可以访问64KB地址空间中的任何单元。3.3.6.2 自动递增/递减变址寻址IDX(Autoincrement/Autodecrement Indexed Addressing)在CPU12的变址寻址方式中,提供了4种方法自动改变基址寄存器的内容,并作为指令执行的一部分。变址寻址前或变址寻址后,变址寄存器中的数值可以加上或减去一个整数值, 增加值的范围是00000111(+1+8),减少值范围是11111000(-1-8)。对于先递增或先递减的指令,变址寄存

12、器内容在访问内存单元之前变化,相当于前面常数偏移变址寻址。而对于后递增或后递减指令,则是用变址寄存器中的初值访问内存单元,然后才改变变址寄存器中的内容。3.3.6.3 累加器偏移变址寻址IDX(Accumulator Offset Indexed Addressing)累加器偏移变址寻址:将变址寄存器中的内容与累加器中的无符号偏移量相加,构成有效地址。为了使用这种寻址方式,偏移量必须先置于累加器中,累加器可以是A、B、D。,基于HCS12的嵌入式系统设计,3.3 寻址方式(4),3.3.6.4间接变址寻址(Indirect Indexed Addressing)寄存器间接寻址:操作数地址是以寄

13、存器名称的形式间接给出。间接变址寻址:变址寄存器中的内容与一个16位偏移量相加形成一个地址,但该地址并不是操作数的地址,它所指向的地址单元中的内容才是操作数的有效地址。偏移量既可以是一个16位的常数偏移量,也可以是累加器中的内容。A、16位常数偏移间接变址寻址IDX2(16 - Bit Constant Indirect Indexed Addressing)将由指令提供的16位偏移量与基址变址寄存器(base indexing register)的内容相加,形成一个地址(指针),指向一个存放操作数地址的单元。指令执行时,根据由基址和偏移量所形成的地址指针,首先到指定的地址单元中取得操作数地址

14、,然后再根据操作数地址提取操作数。其有效地址为:effective address = (two offset extension bytes) + (X、Y、SP or PC)为了将这种寻址方式与16位常数偏移变址寻址方式加以区别,在指令助记符的操作数部分,用一个方括号括起来。B、累加器D间接变址寻址D, IDX) (Accumulator D Indexed -Indirect Addressing )将累加器D中的内容+基址寄存器的内容,形成一个地址指针,指向存放操作数地址的存储单元。指令执行时,根据基址寄存器和偏移寄存器D中的内容形成一个地址,到该地址单元中找到操作数地址,再由操作数地

15、址取得操作数。其有效地址为:effective address = (D)+(X,Y,SP or PC)为了把这种寻址方式与累加器D偏移变址寻址方式区别开来,用一个方括号将指令助记符的操作数部分括起来。,基于HCS12的嵌入式系统设计,3.4 S12汇编指令系统(1),按指令助记符分类,S12共有169种不同的汇编指令。考虑到不同类型的寻址方式,指令数量达594种。按照指令功能,可将指令分为以下几大类:数据传送指令、算术运算指令、逻辑运算指令、转移与子程序调用指令、中断指令、MCU控制指令、高级函数指令、模糊运算指令等。3.4.1 数据传送指令数据传送指令将数据从一处复制到另一处,包括:立即加

16、载、寄存器之间的传送与交换、内存传送到寄存器、寄存器传送到内存、内存之间的传送和堆栈操作指令等。3.4.1.1 寄存器加载指令寄存器加载指令用于将立即数或内存中的操作数传送给寄存器,共6条指令,如表3.1所示。每条指令支持8种源操作数寻址方式:IMM、DIR、EXT、IDX、IDX1、IDX2、D,IDX、IDX2,派生出48条指令。,表3.2 有效地址加载指令,表3.1 寄存器加载指令,3.4.1.2 有效地址加载指令有效地址加载指令可以用来将操作数地址分别传送到寄存器SP、X和Y中。共3条指令,如表3.2所示。采用3种变址寻址:IDX、IDX1、IDX2。指令可将SP、PC、X或Y的值加/减5位、9位或16位常数,或者加上A、B或D的内容,传送到寄存器SP、X和Y中。,

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号