Freescale 汇编指令
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
的嵌入式系统设计》 《基于HCS12的嵌入式系统设计》 基于 的嵌入式系统设计
第3章 CPU12指令系统
3.1概述
基本概念回顾 指令:计算机能直接识别和执行的命令,即每个有效的编码组。 指令:计算机能直接识别和执行的命令,即每个有效的编码组。 指令系统:一种计算机CPU所能执行的全部指令的集合。 所能执行的全部指令的集合。 指令系统:一种计算机 所能执行的全部指令的集合 指令助记符(instruction mnemonic symbol):用一组有一定含义的字符表示的指令, 指令助记符 :用一组有一定含义的字符表示的指令, 一般采用相关的英文单词缩写。 一般采用相关的英文单词缩写。 汇编语言源程序:利用指令助记符编写的程序。 汇编语言源程序:利用指令助记符编写的程序。 操作码(Opcode):规定一条指令完成何种操作。 操作码 :规定一条指令完成何种操作。 操作数(Operand):指令所完成操作的对象。 操作数 :指令所完成操作的对象。
的嵌入式系统设计》 《基于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(16-Bit Constant Offset Indexed Addressing) 有效地址由变址寄存器内容加上两个偏移量扩展字节形成,可以访问 地址空间中的任何单元。 有效地址由变址寄存器内容加上两个偏移量扩展字节形成,可以访问64KB地址空间中的任何单元。 地址空间中的任何单元 3.3.6.2 自动递增/递减变址寻址IDX(Autoincrement/Autodecrement Indexed Addressing) 的变址寻址方式中, 种方法自动改变基址寄存器的内容, 在CPU12的变址寻址方式中,提供了 种方法自动改变基址寄存器的内容,并作为指令执行的一部 的变址寻址方式中 提供了4种方法自动改变基址寄存器的内容 变址寻址前或变址寻址后,变址寄存器中的数值可以加上或减去一个整数值, 分。变址寻址前或变址寻址后,变址寄存器中的数值可以加上或减去一个整数值, 增加值的范围是 0000~0111(+1~+8),减少值范围是 ~ ~ ,减少值范围是1111~1000(-1~-8)。 ~ ~ 。 对于先递增或先递减的指令,变址寄存器内容在访问内存单元之前变化, 对于先递增或先递减的指令,变址寄存器内容在访问内存单元之前变化,相当于前面常数偏移变址 寻址。而对于后递增或后递减指令,则是用变址寄存器中的初值访问内存单元, 寻址。而对于后递增或后递减指令,则是用变址寄存器中的初值访问内存单元,然后才改变变址寄 存器中的内容。 存器中的内容。 3.3.6.3 累加器偏移变址寻址IDX(Accumulator Offset Indexed Addressing) 累加器偏移变址寻址:将变址寄存器中的内容与累加器中的无符号偏移量相加,构成有效地址。 累加器偏移变址寻址:将变址寄存器中的内容与累加器中的无符号偏移量相加,构成有效地址。 为了使用这种寻址方式,偏移量必须先置于累加器中,累加器可以是A、 、 。 为了使用这种寻址方式,偏移量必须先置于累加器中,累加器可以是 、B、D。
3.3.6 变址寻址(Indexed Addressing,IDX)
变址寻址是CPU12的主要寻址方式,也是本节的重点和难点。 的主要寻址方式,也是本节的重点和难点。 变址寻址是 的主要寻址方式 变址寻址是以某个寄存器的内容为基本地址,然后在这个基本地址上加上地址偏移量, 变址寻址是以某个寄存器的内容为基本地址,然后在这个基本地址上加上地址偏移量,形成操作数 地址或存放操作数地址的地址,并将这个地址单元的内容作为指令的操作数。 地址或存放操作数地址的地址,并将这个地址单元的内容作为指令的操作数。 CPU12 共有 类不同的变址寻址方式,这4类又可进一步分解成 种不同的变址寻址方式。 共有4类不同的变址寻址方式 类不同的变址寻址方式, 类又可进一步分解成 种不同的变址寻址方式。 类又可进一步分解成12种不同的变址寻址方式 3.3.6.1 常数偏移变址寻址(Constant Offset Indexed Addressing) 常数偏移变址寻址:将变址寄存器的内容加上一个常数形成操作数地址。有三种不同的偏移量: 常数偏移变址寻址:将变址寄存器的内容加上一个常数形成操作数地址。有三种不同的偏移量:5 位和16位 位、9位和 位。 位和
3.2 CPU12汇编指令的格式和符号说明
3.2.1 操作码和操作数
CPU12指令组成:(前导字节 操作码 后随字节 扩展字节 指令组成: 前导字节 操作码(+后随字节 扩展字节) 指令组成 前导字节)+操作码 后随字节+扩展字节 后置字节提供了一定形式的变址寻址、传送、交换和循环的基址寄存器和偏移量的符 后置字节提供了一定形式的变址寻址、 传送、 号等信息。 号等信息。 扩展字节包含有附加的程序信息,例如地址、偏移量和立即数等。 扩展字节包含有附加的程序信息,例如地址、偏移量和立即数等。
3.2.3数据表示方法
十进制整数可直接使用; 进制数在数字前面加 进制数在数字前面加“ ;二进制数前加“ ; 十进制整数可直接使用;16进制数在数字前面加“$”;二进制数前加“%”;立即数应 在数据前加“ 。 在数据前加“#”。
3.2.4寄存器和存储器表示法
寄存器用名称表示,不分大小写; 表示由指令有效地址指向的8位 寄存器用名称表示,不分大小写;M(Memory location)表示由指令有效地址指向的 位 表示由指令有效地址指向的 存储单元;R(Result)表示算术或逻辑运算结果;I(Intermediate result)表示算术或逻辑 存储单元; 表示算术或逻辑运算结果; 表示算术或逻辑 表示算术或逻辑运算结果 运算的中间结果。寄存器和存储器符号加下标“ 时 表示是它的第n位 运算的中间结果。寄存器和存储器符号加下标“n”时,表示是它的第 位;16位寄存器 位寄存器 符号后加下标“ 或 符号后加下标“H”或“L”时,表示其高位字节或低位字节。 时 表示其高位字节或低位字节。 M:M+1表示 位存储器,由M和M+1相邻两个存储单元组成。M~M+3表示 位存储 表示16位存储器 相邻两个存储单元组成。 ~ 表示32位存储 表示 位存储器, 和 相邻两个存储单元组成 表示 器,由4个相邻的存储单元 、M+1、M+2、M+3组成;(M:M+1)表示两个相邻存储单 个相邻的存储单元M、 、 、 组成; 表示两个相邻存储单 个相邻的存储单元 组成 元的内容组成的1个字 个字, 为高位字节, 为低位字节; 表示内容, 元的内容组成的 个字,(M)为高位字节,(M+1)为低位字节;符号 )表示内容,如 为高位字节 为低位字节 符号( 表示内容 M(X)、M(SP)分别是由变址寄存器 和堆栈指针 所指向的存储单元,M(y+3)是由变 分别是由变址寄存器X和堆栈指针 所指向的存储单元, 、 分别是由变址寄存器 和堆栈指针SP所指向的存储单元 是由变 址寄存器Y加 后指向的存储单元 后指向的存储单元。 址寄存器 加3后指向的存储单元。
3.3.2 立即寻址(Immediate Addressing,IMM)
立即寻址:指令的操作数是一个 位或 位二进制数。 位或16位二进制数 立即寻址:指令的操作数是一个8位或 位二进制数。 指令中出现的操作数称为立即数,为了与直接地址相区别,立即数前必须加“ 号 指令中出现的操作数称为立即数,为了与直接地址相区别,立即数前必须加“#”号。立即寻址常用 来给寄存器赋值。 来给寄存器赋值。
的嵌入式系统设计》 《基于HCS12的嵌入式系统设计》 基于 的嵌入式系统设计
3.3 寻址方式(2)
3.3.5 相对寻址(Relative Addressing,REL)
相对寻址只出现在相对转移指令(relative branch instruction)中。 相对寻址只出现在相对转移指令 中 相对寻址:当前的PC值加上指令中规定的地址偏移量 值加上指令中规定的地址偏移量relx,构成操作数的实际地址的寻址方式。 相对寻址:当前的 值加上指令中规定的地址偏移量 ,构成操作数的实际地址的寻址方式。 目的地址=源地址 转移指令字节数+ 源地址+转移指令字节数 目的地址 源地址 转移指令字节数 relx 偏移量为8位 位和 位带符号二进制补码。短转移的偏移量为$80~ 位和16位带符号二进制补码 偏移量为 位、9位和 位带符号二进制补码。短转移的偏移量为 ~$7F(-128~+127);循环控制 ~ ; 指令支持9位偏移量 其数值为$100~$0FF(-256~+255);长转移的偏移量为 位偏移量, 指令支持 位偏移量,其数值为 ~ ~ ;长转移的偏移量为$8000~$7FFF(~ 32768~32767)。 ~ 。 如果偏移量为0, 立即执行紧接着转移指令的下一条指令。 如果偏移量为 ,则CPU立即执行紧接着转移指令的下一条指令。程序利用转移指令返回到指令首 立即执行紧接着转移指令的下一条指令 所以程序就在该行落入陷阱,称为“原地踏步” 这是一种终止程序的普通方法, 址,所以程序就在该行落入陷阱,称为“原地踏步”。这是一种终止程序的普通方法,广泛用于程 序调试。 序调试。
3.3.3 直接寻址(Direct Addressing,DIR)
直接寻址:指令中直接给出操作数地址的寻址方式。 直接寻址:指令中直接给出操作数地址的寻址方式。
3.3.4 扩展寻址(Extended Addressing,EXT)
扩展寻址:指令中直接给出操作数完整 位地址的寻址方式 位地址的寻址方式。 扩展寻址:指令中直接给出操作数完整16位地址的寻址方式。
的嵌入式系统设计》 《基于HCS12的嵌入式系统设计》 基于 的嵌入式系统设计
3.3 寻址方式(1)
寻址:寻找操作数地址的过程。 寻址:寻找操作数地址的过程。 有效地址(effective address):操作数所在的地址。 有效地址 :操作数所在的地址。 寻址方式(Addressing Mode):通过确定操作数所在的位置(地址 ,提取操作数的方法。 寻址方式 :通过确定操作数所在的位置 地址),提取操作数的方法。 地址 CPU12共有 类寻址方式,即固有寻址、立即寻址、直接寻址、扩展寻址、相对寻址和变址寻址。 共有6类寻址方式,即固有寻址、立即寻址、直接寻址、扩展寻址、相对寻址和变址寻址。 共有 类寻址方式
cpu12指令系统31概述32cpu12汇编指令的格式和符号说明321操作码和操作数322数据类型323数据表示方法324寄存器和存储器表示法33寻址方式addressingmode331隐含固有寻址inherentaddressinginh332立即寻址immediateaddressingimm333直接寻址directaddressingdir334扩展寻址extendedaddressingext335相对寻址relativeaddressingrel336变址寻址indexedaddressingidx34s12汇编指令系统341数据传送指令342算术运算指令343逻辑运算指令344高级函数指令345程序控制指令346cpu控制指令基于hcs12的嵌入式系统设计cpu12指令系统31概述指令助记符instructionmnemonicsymbol
3.3.1 隐含/固有寻址(Inherent Addressing,INH)
固有寻址:有效地址包含在操作码中,也称为隐含寻址 固有寻址:有效地址包含在操作码中,也称为隐含寻址(Implied addressing),又因为操作数总是处 , 的寄存器之中, 于CPU的寄存器之中,还称为寄存器寻址 的寄存器之中 还称为寄存器寻址(Register addressing)。 。 特征:在指令助记符中会出现寄存器的名称,有时在助记符中甚至连寄存器的名称都不出现。 特征:在指令助记符中会出现寄存器的名称,有时在助记符中甚至连寄存器的名称都不出现。
的嵌入式系统设计》 《基于HCS12的嵌入式系统设计》 基Байду номын сангаас 的嵌入式系统设计
3.2 CPU12汇编指令的格式和符号说明(2)
3.2.2 数据类型
CPU12支持 种数据类型:位数据 位);5位带符号整数;8位带 无符号整数;字节型 支持8种数据类型 位数据(1位 ; 位带符号整数 位带符号整数; 位带 无符号整数; 位带/无符号整数 支持 种数据类型: 组合BCD数(8位);9位带符号整数;16位带 无符号整数;16位有效地址;32位带 无符 位带符号整数; 位带 无符号整数; 位有效地址 位带/无符号整数 位有效地址; 位带 位带/无符 组合 数 位 ; 位带符号整数 号整数。 号整数。
第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直接寻址 直接寻址(Direct 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控制指令 控制指令