汇编语言指令系统
- 格式:doc
- 大小:1.80 MB
- 文档页数:99
MIPS指令系统和汇编语言MIPS(Microprocessor without Interlocked Pipeline Stages)指令系统,是一种以RISC(Reduced Instruction Set Computer,精简指令集计算机)为基础的处理器架构。
作为一种广泛应用于嵌入式系统和计算机组成的指令集架构,MIPS指令系统以其简洁高效的特性而受到广泛关注和应用。
一、MIPS指令系统概述MIPS指令系统的设计目标之一是提高处理器的性能,并降低设计的复杂性。
它采用了统一的指令格式,包括操作码、源操作数以及目的操作数等字段,使得指令的译码和执行过程更加高效。
此外,MIPS的指令集还支持延迟槽、流水线和分支延迟等特性,以进一步提升指令执行的效率。
二、MIPS指令格式MIPS指令格式遵循统一的规则,包括三种基本类型的指令格式:R 型、I型和J型指令。
R型指令主要用于寄存器之间的操作,包括算术运算、逻辑运算等;I型指令用于立即数和寄存器之间的操作,涵盖了数据传输、分支跳转等功能;J型指令主要用于无条件跳转。
三、MIPS指令编码和寻址方式MIPS指令采用固定长度的指令编码格式,使得指令的解析和处理更加高效。
在寻址方面,MIPS支持多种寻址方式,包括立即寻址、寄存器寻址和间接寻址等。
这些灵活的寻址方式使得MIPS指令更加适用于不同的计算需求。
四、MIPS汇编语言MIPS汇编语言是一种用于编写MIPS指令的低级语言。
它是一种基于文本的表示形式,使用助记符来表示不同的指令和操作。
MIPS汇编语言具有简单易学的特性,更加接近底层硬件的工作原理,使得程序员可以更加精准地控制和优化程序的执行过程。
五、MIPS指令系统的应用由于MIPS指令系统的优越性能和灵活性,它被广泛应用于各种领域。
在嵌入式系统中,MIPS处理器可以实现高性能和低功耗的设计,广泛应用于智能手机、路由器、电视机等设备中。
在计算机组成和操作系统领域,MIPS指令系统被用于讲解和研究计算机的工作原理和底层机制。
名词解释指令系统
指令系统是指计算机系统用于向计算机执行特定任务发出指令的一套规则
和机制。
指令系统是计算机硬件和软件的重要组成部分,决定了计算机能够做什么、如何执行特定任务。
指令系统由多个层次组成。
首先是汇编语言,它是用汇编语言编写的程序,
能够让计算机直接执行。
汇编语言通常使用简单的指令集,只涉及计算机寄存器和内存的使用,以及数据的操作。
接下来是高级语言,高级语言编写的程序需要通过编译器或解释器翻译成汇编语言或机器语言,才能被计算机执行。
高级语言通常使用更复杂的指令集,涉及更多的操作,例如文件读写、网络通信等。
指令系统还可以包括硬件指令和软件指令。
硬件指令是由计算机硬件直接控制的指令,例如CPU中的寄存器和内存。
软件指令是由操作系统和应用程序编写的指令,例如读写文件的指令,以及网络通信的指令。
指令系统的设计非常关键,它能够影响计算机系统的性能和效率。
优化指令系统可以提高计算机系统的处理能力和响应速度,也可以降低硬件成本和复杂度。
指令系统的错误或缺陷可能导致计算机系统出现错误或崩溃,因此必须保证指令系统的稳定性和可靠性。
指令系统是现代计算机系统的重要组成部分,对于计算机系统的性能和效率有着至关重要的作用。
第二章PIC单片机指令系统和汇编语言程序设计2.1 指令系统概述2.1.1 指令的表示方法1.机器指令的表示方法:指令用于规定计算机的基本操作。
一台计算机所能执行的指令集合就是它的指令系统。
指令共有两种表示方法,分别是机器语言表示方法和汇编语言表示方法。
不同种类的单片机有不同的一套命令(即所谓“指令系统”)。
2.汇编语言的表示方法:汇编语言是对机器语言的改进,它采用便于人们记忆的一些符号(例如简化的英文单词)来表示操作码、操作数和地址码等。
通常把表示指令的符号称之为助记符。
3.PIC16F87X单片机指令:PIC16F87X单片机采用精简指令集(RISC)结构,指令效率高,功能强。
它的指令为单字的宽字位(14)指令,由此生成的程序代码短。
指令条数少,仅有35条。
(1)面向字节操作类(2)面向位操作类(3)常数操作和控制类操作。
2.1.2PIC单片机指令的寻址方式1.寄存器间接寻址:所谓寄存器间接寻址指的是通过寄存器F0、F4来实现。
实际的寄存器地址放在F4的低5位中,通过F0来进行间接寻址。
INDF不是物理上实际存在的寄存器,而任何寻址INDF的指令都是以FSR寄存器内容为地址的RAM单元中存放着参加运算或操作的数据。
2.立即数寻址:所谓立即寻址就是操作数在指令中直接给出。
通常把出现在指令中的操作数称之为立即数,因此就把这种寻址方式称之为立即寻址。
3.直接寻址:指令中操作数以其所在存储单元地址的形式给出,就称之为直接寻址。
这种方式是对任何一寄存器直接寻址访问。
4.位寻址:这种寻址方式是对寄存器中的任一位(bit)进行操作。
2.1.3指令符号的意义说明1.PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释2.指令符号的意义说明:在PIC系列单片机指令中常把数据存储器RAM当作寄存器来使用(处理)并用字母f(或F)表示。
第3章指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。
按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。
下面分别对各类指令进行介绍。
3.2.1 算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。
1.加法指令加法指令共有13条,如表3.5所示。
表3.5 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。
例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。
2.减法指令减法指令共有13条,见表3.6所示。
表3.6 减法指令3.乘法指令乘法指令共有10条,见表3.7。
表3.7 乘法指令4.乘加和乘减指令乘加和乘减指令共有22条,见表3.8所示。
表3.8 乘加和乘减指令5.双操作数指令双操作数指令共有6条,见表3.9所示。
表3.9 双操作数指令6.特殊应用指令特殊应用指令共有15条,见表3.10所示。
表3.10 特殊应用指令3.2.2 逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。
1.与指令与指令共5条,见表3.11。
表3.11 与指令2.或指令或指令共5条,见表3.12。
表3.12 或指令3.异或指令异或指令共5条,见表3.13。
表3.13 异或指令4.移位指令移位指令共6条,见表3.14。
表3.14 移位指令5.测试指令测试指令共5条,见表见表3.15。
表3.15测试指令3.2.3 程序控制指令程序控制指令包括分支指令(B,BC),调用指令(CALL),中断指令(INTR,TRAP),返回指令(RET),重复指令(RPT),堆栈操作指令(FRAME,POP),其它程序控制指令(IDLE,NOP)。
分别例于下列表中。
1.分支指令分支指令共6条,见表3.16。
表3.16 分支指令‡条件为真,§条件为假,*延迟指令2.调用指令调用指令共5条,见表3.17。
表3.17调用指令3.中断指令中断指令有2条,见下表。
表3.18中断指令4.返回指令返回指令共有6条,见下表。
表3.19 返回指令5.重复指令重复指令共5条,见下表。
表3.20 重复指令6.堆栈操作指令堆栈操作指令共5条,见下表。
表3.21堆栈操作指令7.其它程序控制指令其它程序控制指令共7条,见下表。
表3.22 其它程序控制指令3.2.4 加载和存储指令加载和存储指令包括一般的加载和存储指令(LD,ST),条件存储指令(CMPS,SACCD),并行的读取和乘法指令(LD‖MAC),并行的读取和存储指令(LD‖ST),并行的存储和乘法指令(ST‖MAC),并行的读取和加减指令(LD‖ADD,LD‖SUB)以及其他读取类型和存储类指令(MVDD,PORTW,READA)。
1.加载指令加载指令共21条,见下表。
2.存储指令存储指令共14条,见下表。
113.条件存储指令条件存储指令有4条,见下表。
表3.25 条件存储指令4.并行加载和存储指令并行加载和存储指令有2条,见下表。
12表3.26 并行加载和存储指令5.并行加载和乘法指令并行加载和乘法指令有4条,见下表。
表3.27 并行加载和乘法指令6.并行存储和加减指令并行存储和加载指令有2条,见下表。
表3.28 并行存储和加减指令7.并行存储和乘法指令并行存储和乘法指令有5条,见下表。
表3.29并行存储和乘法指令13续表8.其它存储和加载指令有12条其它存储和加载指令,见下表。
表3.30 其它存储和加载指令3.2.5 重复执行单条指令重复执行单条指令是将下一条指令重复执行(RC)+1次,最多为65 536次,使用重复执行指令功能时,绝对的程序和数据地址是自动增加的。
当重复指令被解码时,所有中断(包括NMI,不包括RS)均被屏蔽,直到重复指令执行完毕。
但是在响应重复执行循环中响应HOLD信号,不管状态寄存器ST1中的HM为何值。
重复指令可以使被重复的指令由多周期指令变成单周期指令,表3.30列出了这些指令。
使用长偏移地址或绝对地址的单数据操作数指令不能用于重复指令,如使用*ARn(lk)、*+A R n(lk)、*+A R n(lk)%和*(lk)寻址的指令。
不能使用RPT或RPTZ指令循环执行的指令有36条,见表3.31。
14表3.31 重复执行时由多周期指令变成单周期指令的指令表3.32不能使用RPT或RPTZ指令重复指令的指令1516续表3.3 指令介绍及举例本节详细介绍了TMS320C54x 系列指令集,该指令集支持大量的信号处理操作及通用操作,如多重处理和高速控制等。
TMS320C54x 提供两种指令,一是汇编指令,另一种是代数指令。
汇编指令类似指令助记符,代数指令接近汇编指令,但更便于理解。
TMS320C54x 开发平台都支持两种指令编程和调试,也支持汇编指令和代数指令互相转换。
下面所有举例都列出了两种表达方式,前面是汇编指令表达方式,后面为代数指令表达方式。
1. ABDST语法: 汇编指令方式 代数指令方式ABDST Xmem, Ymem abdst (Xmem,Ymem )操作码:执行:(B ((Xmem )-(Ymem ))<<16 →A受OVM ,FRCT 和SXM 影响;影响C ,OVA ,OVB 。
说明:计算两向量Xmem, Ymem 之差的绝对值。
累加器A (32~16)的绝对值加到累加器B 中。
Xmem 减Ymem 之差左移16位送到累加器A 中。
若分数方式位为1(FRCT=1),则绝对值乘2。
指令字长:1个字。
周期数:1个周期。
【例】ABDST *AR3+,*AR4+ (abdst (*AR3+,*AR4+))ABAR3 AR4 FRCT 数据存储器0100h 0200h 2.ABS语法: 汇编指令方式 代数指令方式ABS src[,dst] dst=|src |17操作码:15 14 13 12 11 10 987654321执行:| (src) | → dst (or src if dst is not specified)受OVM 位影响方式如下:若OVM =1,80 0000 0000h 的绝对值为00 7FFF FFFFh ; 若OVM =0,80 0000 0000h 的绝对值为80 0000 0000h 。
影响C, OVdst说明:计算src 的绝对值,然后装入dst 中。
指令字长:1个字。
周期数:1个周期。
【例1】 ABS A,B (B=∣A |)A –53 A –53B –1000B﹢53【例2】 ABS A (A=|A |)AOVM 【例3】 ABS A (A=|A |)3. ADD语法:汇编指令方式 代数指令方式(1)ADD Smem, src src=src+Smem 或src+=Smem(2)ADD Smem,TS,src src=src+Smem <<TS 或src+=Smem <<TS(3)ADD Smem,16,src[,dst] dst=src+Smem <<16或dst+= Smem <<16(4)ADD Smem[,SHIFT],src[,dst] dst=src+Smem[<<SHIFT] 或dst+=Smem[<<SHIFT](5)AAD Xmem,SHFT,src src=src+Xmem <<SHFT 或src+= Xmem <<SHFT(6)ADD Xmem,Ymem,dst dst=(Xmem+Ymem )<<16 (7)ADD #lk[,SHFT],src[,dst] dst=src+# lk[<<[SHFT] 或dst+=# lk[<<SHFT](8)ADD #lk,16,src[,dst] dst=src+# lk <<16或dst+=# lk <<16(9)ADD src[,SHIFT],[,dst] dst=dst+src[<<SHIF] 或dst+= src[<<SHIFT](10)ADD src,ASM[,dst] dst=dst+src<<ASM或dst+= src<<ASM –32 768≤lk≤32 767, –16≤SHIFT≤15,0≤SHFT≤15操作码:(1)(2)(3)(4)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(5)(6)(7)(8)(9)(10)执行:(1)(Smem)+(src)→src(2)(Smem)<<(TS)+(src)→src(3)(Smem)<<16+(src)→dst(4)(Smem)[<<SHIFT]+(src)→dst(5)(Xmem)<<SHFT+(src) →src1819(6)((Xmem )+(Ymem ))<<16 →dst (7)lk <<SHFT+(src )→dst (8)lk <<16+(src )→dst (9)(src or [dst])+(src )<<SHIFT→dst (10)(src or [dst])+(src )<<ASM→dst 受SXM 和OVM 位影响。
影响C 。
说明:该指令将一个16位数加到选定的累加器中或一个采用双数据存储器操作数寻址的16位操作数Xmem 中。
被加的数值可为下列各操作数之一:● 单数据存储器操作数(Smem ); ● 双数据存储器操作数(Ymem ); ● 16位立即数(#lk ); ● src 中移位后的值。
如果定义了dst ,结果就存在dst 中;否则,存在src 中。
大部分第二操作数要移位。
当进行左移时,低位舔0,高位如下:如果SXM=1,则进行符号扩展;如果SXM=0,则清0。
对于右移,高位如下:如果SXM=1,则进行符号扩展;如果SXM=0,则清0。
指令字长:指令1、2、3、5、6、9和10:一个字。
指令4、7和8:2个字。
当Smem 使用长偏移量间接寻址或绝对寻址,指令长度增加一个字。
周期数:指令1、2、3、5、6、9和10:一个周期。
指令4、7和8:2个周期。
当Smem 使用长偏移量间接寻址或绝对寻址,指令周期增加一个周期。
【例1】 ADD AR3+,14,A ( A=A + *AR3 + << 14 )A AC C AR3 AR3 SXM SXM 0100h 0100h【例2】 ADD A, –8, B (B=B+A <<–8)A B C 注:#4568=#11D8h4. ADDC语法:汇编指令方式 代数指令方式ADDC Smem, src src = src + Smem + CARRY 或 src+ = Smem + CARRY 操作码:20执行:(Smem )+(src)+(C)→src受OVM ,C 的影响。