当前位置:文档之家› 3-1-指令系统-CPU寄存器

3-1-指令系统-CPU寄存器


WIRELESS DIGITAL FULL-DUPLEX VOICE TRANSCEIVER 无线数字全双工语音收发器
SW-438
CPU
CC1020
WIRELESS DIGITAL FULL-DUPLEX VOICE TRANSCEIVER 无线数字全双工语音收发器
TPA4861D
Speaker DriverБайду номын сангаасTPA4861D
指令系统学习方法
汇编指令的一般格式 操作码
寻找 寻址方式
标号:操作码 操作数 //注释 CPU寄存器 内存单元(sfr、地址) 指针 常数 标号、特殊符号 伪运算符构成的表达式
操作数
操作码115个
ASL BHS
ASLA ASLX BLO
一共120个操作码
指令系统基本要领
CPU寄存器 寻址模式 指令系统及其分类学习 编程练习 RAM
▪目标代码完全向上兼容M68HC05和M68HC08家族
▪所有寄存器和存储器映射在单块64 Kbyte地址空间 ▪16位堆栈指针SP(64 Kbyte地址空间中的任意大小堆栈)
▪16位索引寄存器(H:X)的强大的寻址索引模式
▪多种寻址模式 ▪8位累加器(A) ▪支持存储器到存储器的数据传送 ▪高效的位操作指令
LDHX TXS
#ramlast+1
;RAM最高地址的下一位 ;HX-1----->SP
SP
一般情况下,RAM 被定义在通用寄存器或者它的头文件 中,在实际应用中被认为是特定的HCS08 芯片。RamLast+1 使 RAM 高端的下一高地址放入H:X 中,因为TXS 指令在传送时会 自动调整它的值(自减1)。调整使得SP 指向堆栈中的下一个可用 的位置。这样,SP 当前指向RAM 的最后位置(最高地址值),并 且将它作为堆栈的第一个位置。当有值进栈时,堆栈指针会向低 地址方向移动。
▪快速的8位乘8位和16位除以 8位指令
▪STOP和WAIT指令唤醒低功耗运行状态
CPU寄存器
CPU寄存器
A
这个通用的8 位寄存器是HCS08 主要的数据寄存器。数据可以通过LDA 指令从存储器或 通过PULA 指令从堆栈读入到A。数据通过存数指令STA 存入存储器中或通过堆栈指令 PSHA 将A 进栈到累加器A。多种寻址方式给存储器的存取指令带来了更大的灵活性。传 送指令可以将数据从累加器A 传送到寄存器X 中(TAX),或者从寄存器X 传送到累加器A 中(TXA),或者从累加器A 传送到CCR 中(TAP),或者从CCR 传送到累加器A 中(TPA)。 TAP 和TPA 中的P 表示处理机状态。A 半交换指令(NSA)使A 中数据的高四位和低四位对 调。 通常对A 中的值通过ADD、SUB、ASLA、RORA、INCA、DECA、AND、ORA、 EOR 等指令执行算术、移位和逻辑操作。其中有些指令如INCA 和ASLA,对A 中的内容 进行操作后放回A 中。另外一种情况如ADD 和AND,它们有两个操作数:一个操作数在A 中,另一个操作数在存储器中。算术和逻辑操作的结果都是替代累加器内的值。 乘法和除法指令使用A 作为一个操作数,并且保存部分值到A 中。MUL 指令将X 和A 中的无符号数相乘并将16 位结果的高低字节分别存储在X 和A 中。DIV 指令将H、A 中的 16 位无符号数除以X 中8 位无符号数,再将商储存在A 中,余数放入H 中。 在进行两个BCD 码数的ADD 或ADC 操作时,需执行十进制调整指令DAA 来纠正A 中的值,使其变为有效的BCD 码2 位数。关于指令的详细解释请查阅BCD 算术运算。 显然,累加器是个非常忙的寄存器,因此如果能够避免使用累加器是很有益的。例 如,从存储器到存储器的传送指令(MOV)就很有用。DBNZ 也很有用,因为它允许循环计 数器工作在内存变量中而不是在累加器中。X 寄存器在许多情况下被当作另一个通用的8 位数据寄存器。有些算术运算操作如清零、加、减、取反、求补和移位也可以使用X 寄存 器。
H:X
这个16 位的变址寄存器事实上是两个独立的8 位寄存器(H 和X) 的合并。变址寻址方式使用H:X 作为16 位的基本参考点,且允许有 16 位偏移量、8 位偏移量和无偏移量的指令,另外一些变址寻址寄 存器在变址用于存取存储器操作时自动增加到16 位变址寄存器。关 于变址寻址方式的详细描述请查阅变址寻址方式。 8 位X 寄存器(H:X 中的低8 位)也被当作一个通用的数据寄存 器。修改类指令(如ASLX、ASRX、CLRX、COMX、DECX、 INCX、LSLX、LSRX、NEGX、ROLX、RORX 和TSTX)允许能被 累加器所执行的ALU 操作的子集。要注意的是,当要改变整个16位 H:X 变址寄存器时,不要用这些指令,因为这些指令只影响X。下 面的指令序列给出了在X 上的16 位形式的8 位操作实例。

A
#opr
CPU
CCR
H:X
SP
HCS08 CPU 简介

HCS08 CPU与M68HC08 CPU的指令系统完全 相同,且目标代码与M68HC08完全兼容。 同时增加了一些指令和增强了寻址模式以 增加C编译器效率,且支持一个新的背景调 试系统,能够代替早期M68HC08微处理器 的监测模式。
HCS08 CPU的特点包括:
Load、store、push 和pull 指令可用于X 中,其寻址方式与用于A 中的变址寻址相同。在16 位H:X 寄存器中也有取数和存数指令,但 没有提供多种不同的寻址方式。进栈(PSHH)和出栈(PULH)指令可 用于H 中,并且这两个简单的指令可将16 位变址寄存器(H:X)进栈 和出栈。
H:X
有时堆栈指针值需要被传送到HX 寄存器中,因此H:X 在堆栈中能当作信息 指针使用。堆栈指针总是指向堆栈中的下一个可用的位置,但是一般情况下变址 寄存器应该直接指向数据。因此,堆栈的16 位值是通过TSX 指令传送到H:X 中, 并加一。因为这个调整,TSX 执行后HX 指向堆栈数据的最后一个字节。当使用 TXS 指令时求补调整就会发生(通过使用TXS 这个值会自减1)。可以认为,当16 位地址在SP 中,它指向下一个有用堆栈位置,若在H:X 中,则它指向最后一个 字节信息。
H:X
为了与早期的M08HC05 系列兼容,中断不在堆栈中保存H 寄 存器。一种好的做法是在中断服务例程中将PSHH 指令作为第一个 指令(保护H)并且在程序结束RTI 之前加上PULH 指令作为最后一个 指令(恢复H)。可以不要这些指令,如果确信H 已经不在中断服务例 程中被用到,并且确信没有AIX 指令或没有变址寻址方式中的自增 指令,因为这些指令能够使H 发生改变。如果能容许两个字节的额 外程序空间、一个在堆栈中额外的临时空间和运行期间五个总线周 期的开销,那么更安全的做法就是把PSHH 和PULH 包含进去作为 一种习惯。 乘除指令把X 作为操作数,且MUL 将一部分乘积存储在X 中 。MUL 将无符号数A 和X 相乘,并把16 位结果存于X:A 中。DIV 指 令将H、A 中16 位无符号数与X 中的8 位无符号数相除,商放入A 中,余数放入H 中。
A
指令类型 指令名称 LDA/STA A与别人的数据交换 PULA/PSHA TAX/TXA TPA/TAP NSA 折腾A ASLA 大部分X也行 RORA INCA DECA DAA ADD A与存储器的数据进行 SUB 运算后放回A中 AND ORA EOR A*X=XA MUL H A/X = A……..H DIV 作用 与存储器进行数据交换 与堆栈进行数据交换 与X进行数据交换 与CCR进行数据交换 将A中数据的高四位和低四位对调 算术左移位 循环右移位 加1 减1 十进制调整 加 减 逻辑与 逻辑或 逻辑异或 乘法 除法
M/A-COM GaAs RF Switch
SW-438
Freescale 8位单片机指令系统
HC08 CPU有5个寄存器、16种寻址方式、140条基 本指令(加上寻址方式可形成270条具体指令),这是学习 08汇编语言的基础。 08汇编语言是学习08系列MCU的重要基础之一,学 好汇编语言有助于进行底层编程、有助于理解编程结构、 有利于理解单片机内部结构。 基本要领: 1〉掌握CPU内部5个寄存器的使用方法; 2〉理解16种寻址方式; 3〉记住常用指令; 4〉进行编程实践
SP
这个16 位地址指针寄存器用于自动维护CPU 的一个后进先 出(LIFO)堆栈。当CPU 执行绝对转移调用(JSR)或相对转移调用 (BSR)指令时,它会自动保存返回地址到堆栈中。当子程序最后 执行返回指令(RTS)时,该返回地址会自动从堆栈中恢复,并由 此继续执行先前暂停的地方,在那里子程序被调用。SP 是一个 满16 位寄存器,所以堆栈可以寻址存储映射区的任何地方,且 它可取不超过芯片可用RAM 空间大小的任意大小。 堆栈指针总是指向堆栈中下一个可用位置。当一个数值要 进栈时,它会被写到SP 指向的地址中,随后SP 会自动减少而 指向下一个可用位置。当一个数值要出栈时,SP 首先会自增以 指向堆栈中最近进栈的数据,然后从刚被SP 指向的地址中读出 数据。需要注意的是SP 指向的数据,在出栈的过程中不会被改 变。如果SP 指向当前内存的下一个位置,即指向之前最近存储 的数据,当新的数据进栈时,会覆盖该位置的数据。如果在复位 初始化期间,堆栈的RAM 区被清空,那么堆栈扩充时,可以通 过观察哪些存储单元仍然为空来确定最大深度。
H:X使用总结
指令类型 指令名称 作用 LDX/STX 与存储器进行数据交换 HX/X 与别人的数 PULX/PSHX 与堆栈进行数据交换 据交换 TAX/TXA 与A进行数据交换 TSX/TXS 与SP进行数据交换 LDHX/STHX HX整体与存储器进行数据交换 ASLX/ASRX 算术左、右移位 折腾X LSLX/LSRX 逻辑左、右移位 被认为是 ALU 操 ROLX/RORX 循环左、右移位 作的子集 CLRX 清0 16位形式 LDHX #0 INCX 加1 AIX #1 DECX 减1 AIX #-1 COMX、NEGX 求反、求补运算 TSTX 测试是否为0,影响标志位 CPHX #0 IX2 最本质作用 变址寻址方式使用H:X 作为16 位的基本 参考点,且允许有16 位偏移量、8 位偏 IX1 移量和无偏移量的指令。 IX A*X=XA MUL 乘法 H A/X = A…….H DIV 除法 特别注意点 中断时H没有自动进栈,需要手工压栈与出栈
相关主题