Freescale汇编指令.ppt_第1页
Freescale汇编指令.ppt_第2页
Freescale汇编指令.ppt_第3页
Freescale汇编指令.ppt_第4页
Freescale汇编指令.ppt_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于HCS12的嵌入式系统设计 第3章CPU12指令系统 3 1概述3 2CPU12汇编指令的格式和符号说明3 2 1操作码和操作数3 2 2数据类型3 2 3数据表示方法3 2 4寄存器和存储器表示法3 3寻址方式 AddressingMode 3 3 1隐含 固有寻址 InherentAddressing INH 3 3 2立即寻址 ImmediateAddressing IMM 3 3 3直接寻址 DirectAddressing DIR 3 3 4扩展寻址 ExtendedAddressing EXT 3 3 5相对寻址 RelativeAddressing REL 3 3 6变址寻址 IndexedAddressing IDX 3 4S12汇编指令系统3 4 1数据传送指令3 4 2算术运算指令3 4 3逻辑运算指令3 4 4高级函数指令3 4 5程序控制指令3 4 6CPU控制指令 基于HCS12的嵌入式系统设计 第3章CPU12指令系统 3 1概述基本概念回顾指令 计算机能直接识别和执行的命令 即每个有效的编码组 指令系统 一种计算机CPU所能执行的全部指令的集合 指令助记符 instructionmnemonicsymbol 用一组有一定含义的字符表示的指令 一般采用相关的英文单词缩写 汇编语言源程序 利用指令助记符编写的程序 操作码 Opcode 规定一条指令完成何种操作 操作数 Operand 指令所完成操作的对象 3 2CPU12汇编指令的格式和符号说明3 2 1操作码和操作数CPU12指令组成 前导字节 操作码 后随字节 扩展字节 后置字节提供了一定形式的变址寻址 传送 交换和循环的基址寄存器和偏移量的符号等信息 扩展字节包含有附加的程序信息 例如地址 偏移量和立即数等 基于HCS12的嵌入式系统设计 3 2CPU12汇编指令的格式和符号说明 2 3 2 2数据类型CPU12支持8种数据类型 位数据 1位 5位带符号整数 8位带 无符号整数 字节型组合BCD数 8位 9位带符号整数 16位带 无符号整数 16位有效地址 32位带 无符号整数 3 2 3数据表示方法十进制整数可直接使用 16进制数在数字前面加 二进制数前加 立即数应在数据前加 3 2 4寄存器和存储器表示法寄存器用名称表示 不分大小写 M Memorylocation 表示由指令有效地址指向的8位存储单元 R Result 表示算术或逻辑运算结果 I Intermediateresult 表示算术或逻辑运算的中间结果 寄存器和存储器符号加下标 n 时 表示是它的第n位 16位寄存器符号后加下标 H 或 L 时 表示其高位字节或低位字节 M M 1表示16位存储器 由M和M 1相邻两个存储单元组成 M M 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 寻址 寻找操作数地址的过程 有效地址 effectiveaddress 操作数所在的地址 寻址方式 AddressingMode 通过确定操作数所在的位置 地址 提取操作数的方法 CPU12共有6类寻址方式 即固有寻址 立即寻址 直接寻址 扩展寻址 相对寻址和变址寻址 3 3 1隐含 固有寻址 InherentAddressing INH 固有寻址 有效地址包含在操作码中 也称为隐含寻址 Impliedaddressing 又因为操作数总是处于CPU的寄存器之中 还称为寄存器寻址 Registeraddressing 特征 在指令助记符中会出现寄存器的名称 有时在助记符中甚至连寄存器的名称都不出现 3 3 2立即寻址 ImmediateAddressing IMM 立即寻址 指令的操作数是一个8位或16位二进制数 指令中出现的操作数称为立即数 为了与直接地址相区别 立即数前必须加 号 立即寻址常用来给寄存器赋值 3 3 3直接寻址 DirectAddressing DIR 直接寻址 指令中直接给出操作数地址的寻址方式 3 3 4扩展寻址 ExtendedAddressing EXT 扩展寻址 指令中直接给出操作数完整16位地址的寻址方式 基于HCS12的嵌入式系统设计 3 3寻址方式 2 3 3 5相对寻址 RelativeAddressing REL 相对寻址只出现在相对转移指令 relativebranchinstruction 中 相对寻址 当前的PC值加上指令中规定的地址偏移量relx 构成操作数的实际地址的寻址方式 目的地址 源地址 转移指令字节数 relx偏移量为8位 9位和16位带符号二进制补码 短转移的偏移量为 80 7F 128 127 循环控制指令支持9位偏移量 其数值为 100 0FF 256 255 长转移的偏移量为 8000 7FFF 32768 32767 如果偏移量为0 则CPU立即执行紧接着转移指令的下一条指令 程序利用转移指令返回到指令首址 所以程序就在该行落入陷阱 称为 原地踏步 这是一种终止程序的普通方法 广泛用于程序调试 3 3 6变址寻址 IndexedAddressing IDX 变址寻址是CPU12的主要寻址方式 也是本节的重点和难点 变址寻址是以某个寄存器的内容为基本地址 然后在这个基本地址上加上地址偏移量 形成操作数地址或存放操作数地址的地址 并将这个地址单元的内容作为指令的操作数 CPU12共有4类不同的变址寻址方式 这4类又可进一步分解成12种不同的变址寻址方式 3 3 6 1常数偏移变址寻址 ConstantOffsetIndexedAddressing 常数偏移变址寻址 将变址寄存器的内容加上一个常数形成操作数地址 有三种不同的偏移量 5位 9位和16位 基于HCS12的嵌入式系统设计 3 3寻址方式 3 A 5位常数偏移变址寻址IDX 5 BitConstantOffsetIndexedAddressing 偏移量为5位带符号数 偏移量大小为 16 15 5位偏移量隐含在后随字节中 有效地址为变址寄存器内容 5位地址偏移量 B 9位常数偏移变址寻址IDX1 9 BitConstantOffsetIndexedAddressing 9位带符号偏移量的地址偏移范围 256 255 偏移量的符号位在后随字节中 偏移量大小在扩展字节中 变址寄存器内容加上9位带符号常数偏移量作为操作数地址 C 16位常数偏移变址寻址IDX2 16 BitConstantOffsetIndexedAddressing 有效地址由变址寄存器内容加上两个偏移量扩展字节形成 可以访问64KB地址空间中的任何单元 3 3 6 2自动递增 递减变址寻址IDX Autoincrement AutodecrementIndexedAddressing 在CPU12的变址寻址方式中 提供了4种方法自动改变基址寄存器的内容 并作为指令执行的一部分 变址寻址前或变址寻址后 变址寄存器中的数值可以加上或减去一个整数值 增加值的范围是0000 0111 1 8 减少值范围是1111 1000 1 8 对于先递增或先递减的指令 变址寄存器内容在访问内存单元之前变化 相当于前面常数偏移变址寻址 而对于后递增或后递减指令 则是用变址寄存器中的初值访问内存单元 然后才改变变址寄存器中的内容 3 3 6 3累加器偏移变址寻址IDX AccumulatorOffsetIndexedAddressing 累加器偏移变址寻址 将变址寄存器中的内容与累加器中的无符号偏移量相加 构成有效地址 为了使用这种寻址方式 偏移量必须先置于累加器中 累加器可以是A B D 基于HCS12的嵌入式系统设计 3 3寻址方式 4 3 3 6 4间接变址寻址 IndirectIndexedAddressing 寄存器间接寻址 操作数地址是以寄存器名称的形式间接给出 间接变址寻址 变址寄存器中的内容与一个16位偏移量相加形成一个地址 但该地址并不是操作数的地址 它所指向的地址单元中的内容才是操作数的有效地址 偏移量既可以是一个16位的常数偏移量 也可以是累加器中的内容 A 16位常数偏移间接变址寻址 IDX2 16 BitConstantIndirectIndexedAddressing 将由指令提供的16位偏移量与基址变址寄存器 baseindexingregister 的内容相加 形成一个地址 指针 指向一个存放操作数地址的单元 指令执行时 根据由基址和偏移量所形成的地址指针 首先到指定的地址单元中取得操作数地址 然后再根据操作数地址提取操作数 其有效地址为 effectiveaddress twooffsetextensionbytes X Y SPorPC 为了将这种寻址方式与16位常数偏移变址寻址方式加以区别 在指令助记符的操作数部分 用一个方括号括起来 B 累加器D间接变址寻址 D IDX AccumulatorDIndexed IndirectAddressing 将累加器D中的内容 基址寄存器的内容 形成一个地址指针 指向存放操作数地址的存储单元 指令执行时 根据基址寄存器和偏移寄存器D中的内容形成一个地址 到该地址单元中找到操作数地址 再由操作数地址取得操作数 其有效地址为 effectiveaddress D X Y SPorPC 为了把这种寻址方式与累加器D偏移变址寻址方式区别开来 用一个方括号将指令助记符的操作数部分括起来 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 1 按指令助记符分类 S12共有169种不同的汇编指令 考虑到不同类型的寻址方式 指令数量达594种 按照指令功能 可将指令分为以下几大类 数据传送指令 算术运算指令 逻辑运算指令 转移与子程序调用指令 中断指令 MCU控制指令 高级函数指令 模糊运算指令等 3 4 1数据传送指令数据传送指令将数据从一处复制到另一处 包括 立即加载 寄存器之间的传送与交换 内存传送到寄存器 寄存器传送到内存 内存之间的传送和堆栈操作指令等 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中 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 2 3 6 1 3寄存器存储指令寄存器存储指令仅限于将寄存器内容送入内存单元 共6条指令 如表3 3所示 每条指令支持7种源操作数寻址方式 DIR EXT IDX IDX1 IDX2 D IDX IDX2 3 4 1 4寄存器数据传送指令将源寄存器的内容传送到目的寄存器 共9条指令 如表3 4所示 均为固有寻址方式 实际上该组指令只有3条 其余指令是为兼容68HC11而保留的伪指令 由汇编程序自动汇编成对应的TFR指令 如表3 4中阴影部分所示 源寄存器和目的寄存器可以在9个寄存器中任意选择 包括MCU内部的两个暂存器TMP2和TMP3 其中涉及到TMP2和TMP3的指令是为了以前产品保留的指令 有些汇编程序可能视其为无效指令 但可以通过DC B和DC W在程序中直接嵌入这样的指令 表3 3寄存器存储指令 表3 4寄存器数据传送指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 3 注 R1和R2分别是寄存器A B CCR D X Y SP TMP2 TMP3之一 但TMP3只能作为源寄存器 TMP2只能作为目的寄存器 TFR指令的数据传送规则是 1 8位到8位或16位到16位 直接传送 2 8位到16位 通过符号扩展变成16位后传送 TFRA X等同于SEXA X 3 16位到8位 舍弃高位 只传送低位 需要说明的是 数据从8位寄存器传送到16位寄存器 8位寄存器的内容传送到16位寄存器的低8位 S12自动在目的寄存器的最高有效字节中执行一次符号扩展 符号扩展的原则是 如果8位寄存器的最高位是0 则16位寄存器的高8位为 00 如果8位寄存器的最高位是1 则16位寄存器的高8位为 FF 3 4 1 5寄存器数据交换指令将源寄存器内容与目的寄存器内容进行交换 共3条指令 如表3 5所示 均为固有寻址方式 实际上该组指令只有1条EXG指令 XGDX和XGDY指令是为兼容68HC11而保留的伪指令 由汇编程序自动汇编成对应的EXG指令 如表3 5中阴影部分所示 注 R1和R2分别是寄存器A B CCR D X Y SP TMP2 TMP3之一 但TMP3只能作为第1操作数寄存器 TMP2只能作为第2操作数寄存器 表3 5寄存器数据交换指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 4 该指令可以在任意16位或8位寄存器之间交换数据 规则是 1 8位 8位或16位 16位 直接交换 2 8位 16位 将8位寄存器内容高8位零扩展成16位后 传送到16位寄存器 16位寄存器的低8位传送到8位寄存器 3 16位 8位 16位寄存器的低8位传送到8位寄存器 8位寄存器高8位补 00或 FF后 传送到16位寄存器 其中8位寄存器是A时 高8位补 00 8位寄存器是B或CCR时 高8位补 FF 表3 8内存数据移动指令 3 4 1 6内存数据移动指令可以将源操作数 一个字或字节 送到目地地址 源操作数不变 这是S12仅有的两条不涉及内部寄存器而直接进行内存单元之间数据传送的指令 支持6种寻址方式 IMM EXT IMM IDX EXT EXT EXT IDX IDX EXT IDX IDX 如表3 8所示 3 4 1 7堆栈操作指令S12堆栈操作仅限于寄存器与堆栈之间的数据传送 使用堆栈指针进行间接寻址 堆栈操作分为进栈和出栈两种 操作循序正好相反 即指针先递减 后压栈 先弹出 指针后递增 指令共计12条 入栈和出栈各6条 均为固有寻址方式 指令如表3 9所示 表3 9堆栈操作指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 5 3 4 2 1加法指令S12加法运算分为两类 一类是两个寄存器内容的加法 另一类是寄存器内容与立即数或内存单元内容的加法 运算结果保存在寄存器中 所有加法指令都影响标志位 两个寄存器的加法指令如表3 10所示 共有3条指令 但ABX和ABY指令是为兼容68HC11而保留 由汇编程序自动汇编成对应的LEAX指令 如表3 10中阴影部分所示 寄存器与立即数或内存单元的加法如表3 11所示 共有5条指令 支持8种寻址方式 IMM DIR EXT IDX IDX1 IDX2 D IDX IDX2 由此派生出40条指令 其中2条为带进位的加法指令 3条为不带进位的加法指令 表3 10加法指令 1 表3 11加法指令 2 表3 12减法指令 3 4 2 2减法指令S12减法运算也分为两类 一类是两个寄存器内容的减法 另一类是寄存器内容与立即数或内存单元内容的减法 运算结果保存在寄存器中 所有减法指令都影响标志位 两个寄存器内容的减法指令为SBA 计算A B 结果存放在A中 寄存器与立即数或内存单元的减法如表3 12所示 共有5条指令 支持8种寻址方式 IMM DIR EXT IDX IDX1 IDX2 D IDX IDX2 其中2条为带借位的减法指令 3条为不带借位的减法指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 6 3 4 2 3加1和减1指令S12分别具有一组用于指针调整或循环控制的加1和减1指令 每组有6条指令 操作对象是寄存器A B X Y SP或内存单元 如表3 13和表3 14所示 其中 寄存器A B X Y加1或减1指令为固有寻址 对内存单元的操作则支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 其中 INS和DES指令是为兼容68HC11而保留 由汇编程序自动汇编成对应的LEAS指令 为变址寻址IDX方式 如表3 13和表3 14中阴影部分所示 3 4 2 4十进制调整指令S12只有1条十进制调整指令DAA 根据标志H C和A中数值的大小做BCD调整 调整规则是 1 如果A中的低4位 9或标志H 1 则A A 06 2 如果A中的高4位 9或标志C 1 则A A 60 同时重置标志C 表3 13加1指令 表3 14减1指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 7 3 4 2 5清零指令清零指令用来向寄存器或内存单元中写入 00 功能上与加载立即数 00的指令相同 共有3条指令 如表3 15所示 寄存器清零只针对A和B 为固有寻址方式 内存单元清零指令支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 3 4 2 6符号扩展指令单字节无符号数通过高位补0可以扩展成任意宽度 而对于有符号数 由于采用补码表示 高位可能需要补0或补1 因此 S12设置了符号扩展指令SEX 为固有寻址方式 符号扩展过程是 将原数据符号位复制到已扩展数据的所有高位 指令要求源操作数是A B或CCR中的内容 扩展后的结果存放在D X Y或SP中 指令格式为 SEXR1 R2 R1 A B或CCR R2 D X Y或SP 相当于TFRR1 R23 4 2 7乘法指令S12乘法全部在寄存器内完成 可以实现两个8位或16位的硬件乘法运算 共有3条指令 均为固有寻址方式 如3 16所示 表3 15清零指令 表3 16乘法指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 8 3 4 2 8除法指令S12除法全部在寄存器内完成 可以实现16 16位或32 16位的硬件除法运算 共有5条指令 均为固有寻址方式 如3 17所示 EDIV和EDIVS为常规32 16除法指令 分别按无符号数和有符号数相除 FDIV是小数除法指令 即求真分数D X的值 IDIV和IDIVS分别是无符号和有符号整数16 16除法指令 区别在于IDIVS指令的商和余数用补码表示 3 4 2 9比较指令比较指令用于将寄存器的内容与立即数或内存单元的内容进行比较 实际上进行的是两个操作数的减法运算 并不回送运算结果 只是根据差值设置相应的状态位 作为跳转 循环等的判断条件 这类指令影响标志位N Z V C 比较指令共有7条 除了CBA为固有寻址方式外 其余6条指令允许使用8种寻址方式 IMM DIR EXT IDX IDX1 IDX2 D IDX IDX2 如表3 18所示 表3 18比较指令 表3 17除法指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 9 3 4 2 10测试指令测试指令用于检测累加器A B或内存单元的内容是否 0 相当于一次减0操作 操作后 源操作数不变 也不保存结果 只是根据结果设置标志位 该类指令有3条 如表3 19所示 其中 TSTA和TSTB为固有寻址 TST允许使用6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 表3 19测试指令 3 4 3逻辑运算指令S12的逻辑运算指令包括基本逻辑运算 取反和求补 移位 位操作 位逻辑运算和位测试等指令 3 4 3 1基本逻辑运算指令基本逻辑运算指令按字节进行 与 或 异或 逻辑运算 用于将寄存器中的某些位清0或置1 共有8条指令 如表3 20所示 其中 针对CCR的操作只允许立即寻址 针对累加器A B的操作支持8种寻址方式 IMM DIR EXT IDX IDX1 IDX2 D IDX IDX2 3 4 3 2取反 求补指令取反 求补指令将累加器A B或内存单元内容取反和求补 结果放回原处 共有6条指令 如表3 21所示 其中 针对累加器A B的操作为固有寻址 针对内存单元的操作支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 取反指令相当于执行一次 FF r 或 FF M 操作 求补指令实际上进行一次 00 r 或 00 M 的减法操作 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 10 3 4 3 3位操作与位测试指令位操作与位测试指令如表3 22所示 共有7条指令 位操作指令5条 用于将内存单元中的某1位或某几位清0或置1 其中 CCR特征位操作指令CLC CLI CLV是为了兼容68HC11而保留 汇编程序自动汇编成ANDCC指令 为立即寻址方式 内存单元清0 置1指令BCLR和BSET支持5种寻址方式 DIR EXT IDX IDX1 IDX2 BCLR指令将一个8位屏蔽字节取反后 与内存单元中的内容作 逻辑与 运算 结果送回原处 8位屏蔽字节被用于指定内存单元的哪些位为0 即若8位屏蔽数的某位为1 则内存单元的对应位被清0 BSET指令将一个8位屏蔽字节与内存单元中的内容作 逻辑或 运算 结果送回原处 相当于将8位屏蔽字节中的1送到内存单元的对应位 位测试指令有2条 即BITA BITB 支持8种寻址方式 IMM DIR EXT IDX IDX1 IDX2 D IDX IDX2 位测试指令将累加器A B内容与立即数或内存单元内容进行 逻辑与 运算 但结果并不回送 仅仅根据运算结果设置标志位N Z V 表3 21取反 求补指令 表3 20逻辑运算指令 表3 22位操作与位测试指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 11 3 4 3 4逻辑移位指令逻辑移位指令如表3 23所示 共有8条指令 分为逻辑左移LSL和逻辑右移LSR两种 其中 针对累加器A B D的操作为固有寻址 针对内存单元的操作支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 3 4 3 5算术移位指令算术移位指令如表3 24所示 共有7条指令 分为算术左移ASL和算术右移ASR两种 其中 针对累加器A B D的操作为固有寻址 针对内存单元的操作支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 3 4 3 6循环移位指令循环移位指令如表3 25所示 共有6条指令 分为循环左移ROL和循环右移ROR两种 其中 针对累加器A B的操作为固有寻址 针对内存单元的操作支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 表3 23逻辑移位指令表3 24算术移位指令表3 25循环移位指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 12 3 4 4高级函数指令S12的高级函数指令具有高级语言中某些函数的功能 如求最大值 最小值 乘积累加 内插值运算等 3 4 4 1求最大值 最小值指令求最大值 最小值指令如表3 26所示 用于在累加器A D与内存操作数之间取最大或最小的一个 共有8条指令 求最大值和最小值各有4条指令 支持5种寻址方式 其中 以字母M开头的4条为8位指令 以字母E开头的4条为16位指令 虽然这些指令自动完成数据的比较和传送 但标志位显示了比较的结果和是否发生了数据传送 表3 26求最大值 最小值指令 3 4 4 2乘积累加指令乘积累加指令只有1条EMACS 采用特殊寻址方式 可实现带符号数的16位乘法和32位累加运算 隐含使用寄存器X和Y 指令功能为 EMACSopr16a M X M X 1 M Y M Y 1 M M 3 M M 3操作过程是 先将X和Y所指向的两个16位内存操作数相乘 然后将32位乘积与一个扩展寻址的32位内存操作数相加 结果仍然保存在该地址 指令要求两个乘数及32位内存被加数均为有符号数 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 13 3 4 4 3查表与插值指令查表与插值指令有2条 采用变址寻址IDX方式 其中 TBL为8位内插值操作 结果保存在累加器A中 ETBL为16位内插值操作 结果保存在累加器D中 指令功能为 TBLoprx0 xysppc M B M 1 M AETBLoprx0 xysppc M M 1 B M 2 M 3 M M 1 D3 4 5程序控制指令程序控制指令通过改变程序计数器PC的内容 使MCU从正常的执行顺序改变到不同的程序流程 分为转移和调用两大类 前者为永久转移 不再返回 后者执行完新的任务后 返回原地继续执行 其中 转移指令又分为无条件转移和有条件转移两种 3 4 5 1无条件转移指令无条件转移指令如表3 27所示 共有5条指令 前4条 两对 指令采用相对寻址方式 指令中需给出地址偏移量 其中 BRA为无条件固定短转移 使用8位地址偏移量 BRN为不转移 相当于空操作指令 无条件固定长转移 也配套有相应的LBRA LBRN指令 采用16位地址偏移量 两条不转移指令BRN和LBRN主要用于程序的调试 JMP指令支持6种寻址方式 EXT IDX IDX1 IDX2 D IDX IDX2 允许直接或间接给定目标地址 然后将目标地址直接赋给PC JMP指令的转移范围是64KB空间 执行时不影响标志位 但将清除指令队列 表3 27无条件转移指令 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 14 3 4 5 2条件短转移指令条件短转移指令分为两类 一类是根据标志位的状态决定是否转移 但指令只检查有关标志位状态 而不管这些状态如何生成 也不影响任何标志位 该类指令共有16条 采用相对寻址方式 地址偏移量为8位带符号数 最大转移范围是 128 127 如表3 28所示 另一类指令包含产生转移条件的操作 且并不影响标志 也不依赖标志 而是根据操作结果决定是否转移 虽然指令中也出现了8位地址偏移量 但却并不单纯为相对寻址 而是包含多种寻址方式 按对源操作数的寻址 有5种寻址方式 DIR EXT IDX IDX1 IDX2 该类指令只有2条 如表3 29所示 表3 28条件短转移指令 1 表3 29条件短转移指令 2 基于HCS12的嵌入式系统设计 3 4S12汇编指令系统 15 3 4 5 3条件长转移指令条件长转移指令如表3 30所示 共有16条指令 采用相对寻址方式 与表3 28条件短转移指令相对应 区别在于转移距离可达 32768 32767

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论