第3节指令系统.ppt
《第3节指令系统.ppt》由会员分享,可在线阅读,更多相关《第3节指令系统.ppt(65页珍藏版)》请在优知文库上搜索。
1、Freescale 8位单片机指令系统HCS08 CPU指令表HCS08指令系统共有120条基本指令,每一条指令又有各自不同的寻址方式,根据这些基本指令的功能,现将其分为以下六类:算术算术运算运算数据数据传送传送逻辑逻辑操作操作程序程序控制控制移位类移位类指令指令指令系统分类指令系统分类位操作位操作数据传送指令数据传送指令这组指令用于存储器和CPU 寄存器间、存储器单元间或者CPU 寄存器间的数据转移。读入、存储和数据传送等指令根据数据的值自动更新条件码自动更新条件码。这允许BEQ、BNE、BPL 和BMI 等在载入、储存和数据传送指令后不需要运行特殊的测试或比较指令,而立即进行条件转移。Lo
2、ad A 和Load X是从存储器中取出一个8位数放入累加器A或寄存器X。Load H:X是从存储器中取出8位的数放入寄存器H,然后再从下一个存储单元取出8位数放入寄存器X。为了尽可能灵活的访问存储器,加载A 或X 都可使用8 种不同的寻址方式。而LDHX 可有7种不同的寻址方式来指定所取数的存储单元。下列代码展示了加载指令的某些用法。这些指令在实际程序中并不这样用,它们只是些无关联的加载指令,用来说明可用不同方式来访问存储器的多种可行的寻址方式.因为操作数进入ALU 需要用到累加器A,所以通常在执行算术与逻辑操作时,要使用LDA 指令取得一个值,以便与第2 个操作数进行运算。;求A+B的和(
3、假设总和累加器add oprB;立即数A+立即数B-累加器在有些情况下,可设计程序使得放在累加器A 中的运算结果能用来作为后续运算的操作数。这样可以避免存储结果的过程以及将下一个操作数放入累加器的必要。;求A+B+C的和(假设总和累加器add oprB ;立即数A+立即数B-累加器add oprC ;累加器+立即数C-累加器下面展示了中间值保存在堆栈中的例程。有时这样做比将临时结果存储在存储器中要快。存储的数量依赖于用何种寻址方式放置临时变量至存储器以及X 寄存器是否被其他操作所使用.;计算(A+B)-(C+D)(假设没有进位或借位)LDA oprC ;立即数C-累加器ADD oprD ;立即
4、数C+立即数D-累加器PSHA ;中间结果放入堆栈SP+1LDA oprA ;立即数A-累加器ADD oprB ;立即数A+立即数B-累加器SUB 1,sp ;(A+B)-(C+D)结果放入累加器AIS#1 ;释放一个变量TAX 和TXA 提供了一个有效的方法来把A 寄存器的值送到X 寄存器或者把寄存器X 的值送到寄存器A。如果寄存器X 未被使用,可以用来暂存累加器A 中的值,这样累加器就可以用来做其他操作。TAP 和TPA 提供了一个方法在寄存器A 到CCR 中或者从CCR 到寄存器A 传送数据。这种操作在类似调试监控等开发工具中比在通常用户程序中使用得更多。MOV指令从存储器区读一个8 位
5、数值,并将这个数值存储到存储区的其他地方。就像加载和存储指令一样,MOV 根据被移动数据的值改变CCR 中N 和和Z 标志位。尽管加载和存储指令能够完成尽管加载和存储指令能够完成MOV 所做的事情,但MOV 不需要使用累加器,在传送操作期间,累加器A 能够正常使用。在许多情况下,MOV 比加载-存储指令更快更小(目标代码的大小)。MOV 指令允许四种从指定源到目标的不同的寻址方式。下面的例子展示了使用传送指令初始化几个寄存器的值。284 C0DB 6E 03 00 mov#$03,PTAD ;0011到低4位285 C0DE 6E 0F 03 mov#$0F,PTADD ;使得低4位为输出28
6、6 C0E1 6E F0 01 mov#$F0,PTAPE ;上拉高4位下面例子展示了使用加载和存储指令实现字符串移动字符串移动操作数,而不用传送指令。;块移动例子,移动字符串到RAM块45 0088 LDHX#moveBlk1;指向RAM目标块D6 BF7F movLoop1:LDA(stringBytes-moveBlk1),x;得到源字节27 04 BEQ dunLoop1;结束循环的条件F7 STA ,x ;保存到目标块5C INCX ;下一个位置(假设直接寻址)20 F7 BRA movLoop1;继续循环 dunLoop1:算术运算指令算术运算指令包含了传统的加、减、乘和除操作,还
7、包含常用的指令如加一、减一、清零、求补(2 进制补码)、比较、测试和为处理BCD 码的十进制调整指令。比较指令实际上就是减操作,影响CCR 状态位但结果不返回到CPU 寄存器。测试指令影响着N和Z 位,但是不影响被测试的数据。ADD 指令将寄存器A 中的数据加上存储器内的操作数,并将结果存储到寄存器A中。ADC 将寄存器A 中的数据加上由前一次操作产生的进位,再加上存储器中的操作数,将结果存储到寄存器A 中。该操作允许执行多字节加法,就像下例所示。;8位操作数到24位和的加法LDA oprA ;取8位操作数到寄存器AADD sum24+2 ;24位和的低字节STA sum24+2 ;更新24位
8、和的低字节LDA sum24+1 ;取24位和的中间字节ADC#0 ;保持任何进位STA sum24+1 ;更新中间字节LDA sum24 ;得到24位和的高字节ADC#0 ;保持进位到高字节中STA sum24 ;更新高字节SUB 指令将累加器A 中的数据减去存储器中的数据,然后将结果存储到累加器A中。对于这个指令,进位状态位是借位指示器。SBC 指令将累加器A 中的数据减去由前一次操作所影响的借位再减去存储器中的数据,然后将结果存储回寄存器A 中。这个操作允许执行多字节减法,就像下面例子所显示的。;16位减法.结果是16位=oprE-oprFLDA oprE+1 ;oprE的低8字节SUB
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统
