版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
2023/2/51第5章指令系统
©修订第1版2016.92023/2/52本章学习内容指令系统的设计方法指令格式寻址方式CISC和RISC的概念2023/2/535.1机器指令
指令:控制计算机执行某种操作的命令。机器语言:计算机硬件实体直接表示控制信息的语言。机器语言程序:用机器语言编制的程序。机器语言是计算机硬件能直接理解并执行的语言,任何用其它语言编制的程序,都必须经过“翻译”,翻译为机器语言程序,才能在机器中正确的运行。一条指令就是机器语言的一个语句,用来说明机器硬件应完成的操作。指令系统(指令集):一台计算机所能执行的全部指令的集合。2023/2/54机器语言是面向机器的:不同的计算机系统,具有不同的指令,每一计算机系统都具有自己的指令系统。指令系统必须是完备的:即任何运算都可以用指令系统中的指令编程实现。指令系统是计算机体系结构的核心;是计算机系统硬件、软件的主要界面。它既是计算机硬件设计的主要依据,又是计算机软件设计的基石。所以一台计算机指令系统的优劣,直接影响着计算机系统的性能。2023/2/555.1.1机器指令格式
指令字(指令代码):表示一条指令的一串二进制代码。指令格式的设计内容:⑴确定的指令字长度⑵划分指令字字段并加以定义2023/2/56一条指令中应包含的信息:①操作码:表示指令的操作特性和功能。②操作数的地址:指示操作数或操作数所在的地址。③存放操作结果的地址。④下一条指令的地址。指令的基本格式:操作码(OP)地址码(A)2023/2/57各字段的指定方法:显式指定:在指令字中明显地指定。隐含指定:由设计者用约定的方法指定。指令操作码均采用显式指定。下一条指令的地址多采用隐含指定。信息的存储结构不同,指定的地址也不一样,地址的结构也不同。2023/2/585.1.2指令字的长度
指令字长度:一个指令字所包含的二进制信息的位数。定长指令字:机器的指令系统中各种指令字的长度均为固定的。可变长指令字:机器的指令系统中各种指令字的长度随指令的功能而异。
2023/2/59定长指令字的指令长度固定,结构简单,指令译码时间短,有利于硬件控制系统的设计,但定长指令字指令平均长度长、容易出现冗余码点、指令不易扩展。可变长指令字的指令长度不定,结构灵活,能充分利用指令的每一位,指令的码点冗余少,平均指令长度短,易于扩展。但可变长指令的指令格式不规整,取指令时可能需要多次访存,导致不同指令的执行时间不一致,硬件控制系统复杂。
2023/2/510在按字节编址的存储器中,采用长度为字节的整倍数的指令,可以充分利用存储空间,增加内存访问的有效性。
为了合理地安排存储空间,并使指令能表达较丰富的内容,采用可变长指令将更加灵活有效。单字长指令:指令长度等于机器字长。双字长指令:指令长度等于两个机器字长。还有更多倍字长的指令及半字长指令等。短指令占存储空间少,有利于提高指令执行速度,因此通常把最常用指令(如算术逻辑运算指令、数据传送指令等)设计成短指令格式。2023/2/5115.1.3指令的地址码CPU可直接访问的存储结构①主存储器:访存时要给出存储器单元地址②CPU寄存器:包括通用寄存器和专用寄存器。③I/O接口寄存器:包括数据寄存器和状态寄存器。④堆栈。2023/2/512设计指令字的地址码格式时需解决的主要问题:⑴
一条指令中需要指明几个地址;⑵
应当如何给出地址;⑶
地址码应选多长。
2023/2/5131.四地址指令四地址指令格式:A1:第一源操作数的存储器地址或寄存器地址。A2:第二源操作数的存储器地址或寄存器地址。A3:存放操作结果的存储器地址或寄存器地址。A4:指示下一条要执行指令的地址。四地址指令的功能:
(A1)OP(A2)→A3A4指示下条指令地址OPA1A2A3A42023/2/514四地址指令直观明了,程序的执行流向明确,不存在转移指令。但指令长度太长,因此在实际机器中基本不用。2023/2/5152.三地址指令程序在执行过程中大多数情况是按指令序列依次执行的,只有在执行转移指令时,程序的执行顺序才被改变。为了压缩指令长度,下一条指令地址采用隐含的方法给出。通常用一个程序计数器
PC来跟踪程序的执行并指示将要执行的指令地址。每执行一条指令,PC自动增量,增量值取决于执行指令的长度。当程序出现转移时,用专门的转移指令将转移地址直接送入PC。在三地址指令中不明显地指示下条指令地址。2023/2/516三地址指令格式:A1:第一源操作数的存储器地址或寄存器地址;A2:第二源操作数的存储器地址或寄存器地址;A3:存放操作结果的存储器地址或寄存器地址;三地址指令功能为:
(A1)OP(A2)→A3;PC指示下条指令地址OPA1A2A32023/2/517三地址指令编程方便,结果不影响运算操作数,但指令长度仍比较长,所以一般在字长较长的大、中型机中使用,而微、小型机中很少使用三个地址均为存储器地址的三地址指令。2023/2/5183.二地址指令二地址指令的格式为:
A1、A2是操作数所在的存储器地址或寄存器地址。二地址指令功能为:(A1)OP(A2)→A1或(A1)OP(A2)→A2源地址:仅提供操作数的地址目的地址:既提供一个操作数,又存放操作结果的地址OPA1A22023/2/519二地址指令的意义源地址中的操作数与目的地址中的操作数进行操作码所规定的操作,结果存入目的地址中。2023/2/520①存储器—存储器型(S—S型)指令:A1、A2均为存储器地址的二地址指令。OPA1A2二地址指令的几种形式2023/2/521②寄存器—寄存器型(R—R型)指令:A1、A2均为寄存器地址的二地址指令。OPR1R22023/2/522③寄存器—存储器型(R—S型)指令:A1、A2中一个是寄存器地址,另一个是存储器地址的二地址指令。也称一个半地址指令。OPRnA2023/2/523二地址指令的指令长度短,特别是R—R型指令,不需访问存储器取操作数,指令执行速度快,因此是最常用的一种指令格式。尤其在RISC结构机器中,所有运算型指令均为R—R型指令。二地址指令执行后,参加运算的操作数被破坏,若不希望被破坏,则需提前保护。2023/2/5244.一地址指令(单地址指令)一地址指令也称单地址指令,指令中只有一个地址字段。
一地址指令的格式为:A可以是存储器地址,也可是寄存器地址。OPA2023/2/525一地址指令有两种情况①单操作数指令:如INC、DEC、NEG等,只需一个操作数,其功能为:
OP(A)→A②双操作数指令:另一个操作数通常采用隐含寻址的方法,将操作数隐含在约定的累加器AC中,其指令功能为:
(AC)OP(A)→AC2023/2/526一地址指令长度短,指令执行速度快(若A为存储器地址,只需一次访存取数),对于字长较短的微、小型机,是一种常用的指令格式。2023/2/5275.零地址指令零地址指令中只有操作码而无地址码,其指令格式为;零地址指令有两种情况:①不需操作数的控制型指令,如HALT、WAIT、NOP等。②运算型零地址指令:操作数隐含在堆栈中。OP2023/2/5285.1.4指令的操作码
操作码用于指明指令要完成的操作功能及其特性。指令系统中的每一条指令都有一个唯一确定的操作码,用以指示指令的操作功能。不同的指令具有不同的操作码。为了能表示指令系统中的全部操作,指令字中必须有足够长度的操作码字段。假定指令系统中有m种操作,则操作码位数n应满足:
n≥log2m指令操作码的编码有定长编码和变长编码两种。2023/2/529定长编码的指令操作码:所有指令的操作码长度一致,位置固定。是一种简单规整的编码方法。定长编码操作码的特点:位数和位置固定,指令译码简单,有利于简化硬件设计。在字长较长的大、中型机以及超小型机中定长编码的操作码被广泛采用,例如:在IBM360/370机中,所有指令的操作码均为8位,最多可指定256种操作。1.定长编码2023/2/530变长编码的指令操作码:不同指令的操作码长度不完全相同,操作码的位数不固定,分散地放在指令字的不同位置上。变长编码操作码的特点:可用较短的指令字长表示更多的操作类型,寻址较大的存储空间。操作码的位数不固定,且位置分散,增加了指令译码与分析的难度,使硬件设计复杂化。在早期的微、小型机中,由于指令字较短,均采用变长编码的指令操作码。如Intel8086、PDP—11等机器。2.变长编码2023/2/531扩展操作码的方法最常用的变长操作码的编码方式是扩展操作码法。扩展操作码法:当指令长度一定时,将操作数地址多的指令选择短的操作码,操作数地址少的指令选择较长操作码。采用扩展操作码法即能充分地利用指令字的各个字段,又能在不增加指令长度的情况下扩展操作码长度,使它能表示更多的指令。2023/2/532例:设某机的指令长度为16位。操作码为4位,具有三个地址字段,每个地址字段长为4位。其指令格式为PA1A2A3按照定长编码的方法,4位操作码可表示16条三地址指令。若指令系统中要求有15条三地址指令、15条二地址指令、15条一地址指令和16条零地址指令,共61条指令。则需要采用变长操作码方式进行编码。2023/2/5332023/2/534例:设机器指令字长为16位,指令中地址字段的长度为4位,共有11条三地址指令,72条二地址指令,64条零地址指令。问最多还能规定多少条一地址指令?解:三地址指令的地址字段共需12位,所以可有4位操作码,可规定16条三地址指令。现有11条三地址指令,所以还有16-11=5个编码用于二地址指令。二地址指令的地址字段共需8位,可有8位操作码,去掉三地址指令用掉的操作码,可规定
5×16=80条二地址指令。现有72条二地址指令,所以还有80-72=8个编码用于一地址指令。2023/2/535一地址指令的地址字段共需4位,可有12位操作码,去掉二、三地址指令用掉的操作码,可规定8×16=128条单地址指令。由于要求有64条零地址指令,而4位操作码只能提供16条指令,所以需要由单地址指令提供64/16=4个操作码编码,因此还能规定
128-4=124条单地址指令。2023/2/5362023/2/537根据指令系统的要求,扩展操作码的组合方案可以有很多种,可以采用等长扩展,也可采用不等长扩展。例如,PDP-11机的指令操作码有4、7、8、10、11和13位等不同的长度。在进行操作码扩展的过程中,必须注意的是:⑴不同指令的操作码编码一定不能重复。⑵在设计不同长度的操作码时,要尽量考虑安排指令使用频度高的指令使用短的操作码,使用频度低的指令使用较长的操作码。这样可以缩短经常使用的指令的译码时间,加快系统整体的运行速度。
2023/2/538在有限的指令字条件下,若要表示更多操作还可采用将操作码进一步分段的方法。可将指令操作码OP再进一步分为主操作码和辅助操作码两部分。主操作码用于表示基本操作,辅助操作码用于表示各种附加操作,如进位、移位、结果回送、判跳等操作。NOVA机的算术逻辑类指令的指令格式:
2023/2/5395.2寻址方式寻址方式:形成本条指令的操作数地址和下一条要执行指令的地址的方法。寻址分为指令地址的寻址和操作数地址的寻址。2023/2/540指令的执行过程ALUAPCMARMEMMDRRSIRIDPLA控制信号2023/2/5411.顺序方式:采用PC增量的方式形成下一条指令地址。
PC+增量→PC由于指令通常顺序存放,所以当程序顺序执行时,可以采用PC增量的方式形成下条指令地址。即按照PC的内容依次取指。增量的多少取决于一条指令所占的存储单元数。5.2.1指令的寻址方式
2023/2/5422023/2/5432.跳越方式跳越方式:当程序发生转移时,修改PC的内容。当程序需要转移时,由转移类指令产生转移地址并送入PC中。转移地址的形成有各种方法。2023/2/54462023/2/545由于操作数的存放往往是随机的,所以希望有多种方式产生操作数地址。另外为了提高程序设计质量,也希望能提供多种灵活的寻址方式。因此,寻址方式主要是指操作数地址的寻址方式。操作数地址有多种寻址方式。5.2.2操作数的寻址方式
2023/2/546⑴形式地址:指令中给出的地址。由于有多种寻址方式,指令中地址字段给出的地址,不一定是操作数的实际地址,称为形式地址。⑵有效地址:形式地址经过一定的运算而得到的操作数的实际地址。有效地址是CPU实际访问的主存单元的地址。2023/2/547讨论各种寻址方式的目的缩短指令长度扩大操作数的寻址空间提高编程的灵活性寻址方式的设计内容确定由形式地址变换为有效地址的算法,并按照这些算法确定相应的硬件结构,自动地实现寻址。2023/2/548⑶设计寻址方式的要求:①指令内包含的地址尽可能短,以缩短指令长度。②能访问尽可能大的存储空间。即能提供尽可能长的地址信息。根据程序所具有的局部性特性,大多数程序在一段时间内都使用存储器的一个小区域,所以,可以用短地址访问该区域内的任一单元的。③希望地址能隐含在寄存器中。因为寄存器地址比较短,而寄存器长度一般与机器字长相同,在字长较长的机器中.寄存器内存放的地址可访问很大的存储空间,所以地址隐含在寄存器,可以减少指令长度。2023/2/549④
能在不改变指令的情况下改变地址的实际值。即在数组、向量、线性表、字符串等数据结构的操作中,能够实现操作数地址的最大增减量。⑤寻址方式尽可能简单、规范,以便简化硬件设计。2023/2/550常用寻址方式一地址指令格式MOD:寻址方式字段A:形式地址形式地址按相应的寻址方式计算得到的操作数的有效地址记作EA。
OP寻址方式MOD形式地址A2023/2/5511.立即寻址立即寻址方式是指指令的地址码部分给出的不是操作数的地址而是操作数本身。即指令所需的操作数由指令的形式地址直接给出。采用立即寻址时,操作数Data就是形式地址部分给出的内容D,D也称为立即数。例:Intel8086指令:
MOVAX,2000H;将数据2000H存入
累加器AX中OP立即寻址DData=D2023/2/552立即寻址方式在取指令的同时操作数即被取出,不必再次访问存储器,提高了指令执行速度。由于指令字长有限,立即寻址方式使得操作数的范围受到限制。立即寻址方式通常用于给某一寄存器或存储器单元赋予初值或提供一个常数。2023/2/5532.直接寻址直接寻址方式是指操作数的有效地址在指令字中直接给出,指令的地址码部分给出的形式地址A就是操作数的有效地址EA。
2023/2/554例:Intel8086指令:
MOVAX,[2000H]将有效地址为2000H的内存单元的内容读入累加器AX中。2023/2/555简单直观,不需要另外计算操作数地址,在指令执行阶段只需访问一次主存即可得到操作数,便于硬件实现。随着存储器容量不断扩大,采用直接寻址方式寻址整个主存空间,将造成指令长度加长。采用直接寻址方式编程时,如果操作数地址发生变化,就必须修改指令中A的值,给编程带来不便。由于操作数地址在指令中给定,使程序和数据在内存中的存放位置受到限制。直接寻址的特点2023/2/5563.间接寻址间接寻址方式是指指令的地址码部分给出的是操作数的有效地址EA所在的存储单元的地址或是指示操作数地址的地址指示字。即有效地址EA是由形式地址A间接提供的。间接寻址分为一级间接寻址和多级间接寻址。2023/2/557一级间接寻址指令的形式地址A给出的是EA所在的存储单元的地址,这时存储单元A中的内容就是操作数的有效地址EA。EA=(A)Data=((A))2023/2/558例:某计算机指令:MOVAL,@2000HE=(A)
=(2000H)
=3000HData=50H00H30H50H2000H3000H2001H50HAL2023/2/559多级间接寻址指令的地址码部分给出的是操作数地址的地址指示字,即存储单元A中的内容还不是有效地址EA,而是指向另一个存储单元的地址或地址指示字。在多级间址方式中,通常把地址字的高位作为标志位,以指示该字是有效地址,还是地址指示字。2023/2/560三级间址的寻址过程地址指示字的高位为1,表示该单元内容仍为地址指示字,需继续访存寻址。地址指示字的高位为0,表示该单元内容即为操作数所在单元的有效地址EA。E=(((A)))2023/2/561①
间接寻址比直接寻址灵活,可扩大寻址范围,以短的地址码访问大的存储空间。如:指令字长与存储器字长均为16位,指令中地址码长为10位,其直接寻址范围为1k空间;如果用间接寻址,有效地址为16位,其寻址空间为64k,比直接寻址扩大64倍。②采用间接寻址,当操作数地址需要改变时,可不必修改指令,只要修改地址指示字中内容(即存放有效地址的单元内容)即可。③间接寻址需多次访存才能取得操作数,尤其是多级间接寻址,因而降低了指令的执行速度。大多数计算机只允许一级间接寻址。在一些大型高速计算机中,很少采用间接寻址。间接寻址的特点2023/2/5624.寄存器直接寻址(寄存器寻址)寄存器直接寻址也称寄存器寻址。寄存器直接寻址是指在指令地址码中给出的是某一通用寄存器的编号(也称寄存器地址),该寄存器的内容即为指令所需的操作数。采用寄存器寻址方式时,有效地址EA是寄存器的编号。2023/2/563例:Intel8086指令:
MOVAL,BL;AL←BL,将寄存器BL中的
内容传送到寄存器AL中。寄存器存取信息的速度比主存快,需要的地址短,可压缩指令长度,有利于加快指令执行速度。但寄存器的数量有限。2023/2/5645.寄存器间接寻址寄存器间接寻址方式是指指令中地址码部分所指定的寄存器中的内容是操作数的有效地址。
2023/2/565例:Intel8086指令:
MOVAL,[BX]设BX=2000H,(2000H)=80H,则AL←80H由于寄存器间接寻址方式中,地址存放在寄存器中,因此只需一次访存即可取得操作数,而且寄存器又能给出全字长的地址码,可寻址较大的存储空间。2023/2/5666.变址寻址变址寻址方式是指操作数的有效地址是由指令中指定的变址寄存器的内容与指令字中的形式地址相加形成的。变址寄存器Rx可以是专用寄存器,也可以是通用寄存器中的某一个。2023/2/567例:Intel8086指令:
MOVAL,[SI+4]设SI=2000H,SI+4=2004H(2004H)=82H,所以AL←82H在某些计算机中,变址寄存器还可以自动增量或减量。每存取一个数据,根据数据的长度,变址寄存器的内容自动增量或自动减量,前者称为自增型变址寻址;后者称为自减型变址寻址。也有资料称为自增型寄存器间接寻址和自减型寄存器间接寻址。2023/2/568例:有VAX—11指令:⑴MOV(R1)+,R0
⑵MOV-(R1),R0⑴(R1)+表示自增型变址寻址,寄存器R1中内容先作为源操作数地址,读数后R1按操作数长度增量。设操作数字长为一个字节,每次增量为1,
若R1=1000H,则指令执行后,R1自增加1,
R1=1001H。2023/2/569⑵-(R1)表示自减型变址寻址,寄存器R1先按操作数长度减量后作为源操作数地址,并将减量结果送回R1。设每次减量为1,R1=1000H,指令执行时先将R1减1,R1=0FFFH,然后将R1的内容作为有效地址访问源操作数。2023/2/570变址寻址可用于数组、向量、字符串等数据的处理。例:Intel8086指令:
LODS;AL←(SI),SI←SI+1SIAAa0A+1a1A+2a2…+12023/2/571变址寻址还可以与间接寻址相结合,形成复合型寻址。①先间址后变址2023/2/572②先变址后间址2023/2/5737.相对寻址相对寻址方式是将程序计数器PC的当前内容与指令中给出的形式地址相加形成操作数的有效地址。
2023/2/574PC当前内容一般为现行指令的下一单元的地址。形式地址是操作数地址相对于PC当前内容的一个相对位移量(Disp),位移量可正可负,一般用补码表示。在相对寻址中,只要保持位移量不变,就可实现指令带着数据在存储器中搬家,有利于实现程序再定位。KOP相对寻址5K+1K+2┆┆K+6操作数MOP相对寻址5M+1M+2┆┆M+6操作数2023/2/575相对寻址还经常用于转移指令中,以PC内容为基准,加上相对位移量形成转移地址。例如PDP—11转移指令格式为:其转移地址为(PC)+2Disp。之所以加2Disp,是因为PDP一11是以字节为单位对主存进行编址的,而Disp是相对于PC的字位移,一个字为2个字节。15870OPDisp2023/2/576例:Intel8086的进位为0转移指令JNCD的功能为:如果进位为0,则转移到目标地址为
(PC)+D处执行。该指令为双字节指令。设本条指令的地址为1000H。①设指令为JNC03H:
如果进位为0,则转移到目标
地址为(PC)+03H处进行执行
本条指令取指后,
PC=1002H
转移目标地址为
1002H+0003H=1005H②设指令为JNC0FDH
则转移目标地址为
1002H+FFFDH=0FFFH0FFDH0FFEH0FFFH××1000HJNC1001H03H1002H1003H1004H1005H××D=FDHD=03H2023/2/5778.基址寻址基址寻址方式是指操作数的有效地址等于指令中的形式地址与基址寄存器中的内容之和。基址寄存器可以是一个专用的寄存器,也可以是由指令指定的通用寄存器,基址寄存器中的内容称为基地址。
2023/2/578基址寻址主要用于将用户程序的逻辑地址(用户编写程序时所使用的地址)转换成主存的物理地址(程序在主存中的实际地址),以便实现程序的再定位。
在多道程序运行时,系统的管理程序将多道程序装入主存。由于用户在编写程序时,不知道自己的程序应该放在主存的哪一个实际物理地址中,只能按相对位置使用逻辑地址编写程序。当用户程序装入主存时,为了实现用户程序的重定位,系统程序给每个用户程序分配一个基准地址。程序运行时,该基准地址装入基址寄存器,通过基址寻址,实现逻辑地址到物理地址的转换。2023/2/579基址寻址与变址寻址在形式上以及有效地址的计算方法上都是相似的,但它们的应用场合是不同的是不同的。基址寻址是面向系统的,主要用于逻辑地址到物理地址的变换,用以解决程序定位问题。基址寄存器由系统程序通过特权指令使用,对用户是透明的。基址寄存器的内容一般不进行自动增量和减量。变址寻址是面向用户的,主要用于访问数组、向量、字符串等成批数据,用以解决程序的循环控制问题。变址寄存器的内容可以进行自动增量和减量。在早期的一些微、小型机中,基址寻址与变址寻址是不加区分的。2023/2/580将基址寻址与变址寻址结合起来就形成了基址加变址寻址方式。这种寻址方式是将两个寄存器的内容和指令形式地址中给出的偏移量相加后得到的结果作为操作数的有效地址。其中一个寄存器作为基址寄存器,另一个作为变址寄存器。9.基址加变址寻址2023/2/581基址加变址寻址2023/2/582例:Intel8086的基址寻址与变址寻址的指令:
MOVAL,[BX+SI+4]设基址寄存器BX的内容为BX=1000H,变址寄存器SI的内容为SI=2000H,主存3004H单元的内容为(2004H)=ABH。由于形式地址A中给出的偏移量为4,所以有效地址EA=(BX)+(SI)+4=3004H,指令执行的结果是将操作数ABH传送到寄存器AL中。
2023/2/583堆栈寻址是一种由堆栈支持的寻址方式。
1)堆栈
一种按后进先出(LIFO)或先进后出(FILO)原则进行存取信息的一组存储器单元的有序集合。堆栈通常是主存的一个特定区域,它可以是固定的区域,也可以是浮动的区域,由软件定义。堆栈区域中数据的个数和内容是动态变化的。堆栈结构通常是一端固定,一端浮动的。栈底:第一个存入(称为压入)数据的堆栈单元。栈底单元是固定的。栈顶:最近存入数据的堆栈单元,栈顶单元是浮动的。10.堆栈寻址
2023/2/584堆栈操作总是按地址自动增量和自动减量方式在栈顶进行。在堆栈操作中,数据按顺序存入堆栈称为数据进栈或压入;从堆栈中按与进栈相反的顺序取出数据称为出栈或弹出。
2023/2/585(1)寄存器堆栈
计算机在CPU中设置一组专门用于堆栈的寄存器,每个寄存器按照机器字长可以保存一个字的数据,相邻的寄存器具有位对位的移位功能,CPU可以通过进栈指令和出栈指令,控制将数据压入和弹出堆栈。寄存器堆栈由于栈顶位置固定,所以不必设置堆栈的栈顶指针。2023/2/586寄存器堆栈的工作过程
2023/2/587为了防止堆栈空时企图执行出栈和堆栈满时企图执行进栈等误操作,可以利用计数器为堆栈设置“栈空”和“栈满”指示。每进行一次进栈操作,计数器加1;每进行一次出栈操作。计数器减1。当计数器中计数值等于堆栈中寄存器的个数时,表示“栈满”;当计数器中计数值等于“0”时,表示“栈空”。寄存器堆栈的存取速度快,不占用主存空间,但堆栈的容量固定,不易扩展。
2023/2/588(2)存储器堆栈
存储器堆栈就是一组连续的存储器单元的有序集合。堆栈通常位于主存的一个特定区域,它既可以是固定的区域,也可以是浮动的区域,可以用软件加以定义,而且需要时可以定义多个存储器堆栈。为了表示栈顶的位置,通常用一个寄存器或存储器单元指出栈顶的地址,这个寄存器或存储器单元称为堆栈指针SP,SP的内容永远指向堆栈当前的栈顶。由于堆栈遵循先进后出原则进行信息的存取,堆栈的压入和弹出操作总是按地址自动增量和自动减量方式在栈顶进行。
2023/2/589堆栈的两种生成方式:自底向上生成方式:栈底占最高地址,栈顶为较低地址,压入数据时,按由高地址向低地址顺序进行,弹出数据(即取出数据)时,由低地址向高地址顺序进行。自顶向下生成方式:与自底向上生成方式顺序相反。2023/2/590堆栈的生成方式2023/2/591自底向上生成堆栈的工作过程自底向上生成堆栈是一种较常用的存储器堆栈方式。
2023/2/592自底向上生成堆栈的工作过程SP栈底低地址高地址ASPSPBSPCSPSPSP2023/2/5932)堆栈寻址
堆栈寻址方式就是按照堆栈指示器SP的内容确定操作数的访存地址。例如在堆栈支持的运算型零地址指令中,操作数隐含指定在堆栈,当CPU执行这种指令时,自动地按当前SP值从堆栈的栈顶和次栈顶弹出数据,进行操作码指示的操作,然后再将所得结果自动压入堆栈。堆栈除了可为零地址指令提供操作数外,还有很多用途。如在子程序的调用中,用堆栈存放返回地址,可以实现子程序的嵌套和递归调用;在程序中断的处理中,用堆栈存放多级中断的有关信息,可以实现多级中断的嵌套等。2023/2/59411.页面寻址
页面寻址就是将存储器逻辑地分成若干页,每一页都有自己的页面地址,一页内包含若干存储单元,可以通过页内地址进行访问。当需要访问一页内的某一单元时,将该页的页面地址与相应单元的页内地址相拼接,即可形成操作数的有效地址。
2023/2/59512.扩展寻址
扩展寻址就是将要访问的存储单元地址的高位预先装入扩展寄存器中,访存时将扩展寄存器的内容与指令字中形式地址部分给出的内容相拼接,形成操作数的有效地址。在微型计算机中,段寻址就是扩展寻址的应用。在采用段寻址的计算机中,首先将存储区域定义为若干逻辑段,将要访问的存储单元地址所在的段地址高位预先装入段寄存器中。访存时,将段寄存器内容与指令字中给出的段内偏移量相加,即可形成操作数的有效地址。
2023/2/596例如,Intel8086CPU将1MB存储器空间分成若干逻辑段来进行管理,每个段的最大容量限制为64KB,且规定每个逻辑段只能从模16地址开始,即段的起始地址(或称段基地址)必须为××××0H。段基地址的高16位通常被保存在16位的段寄存器中。当CPU需要访问存储器时,在指令中提供说明主存单元距离段起始位置的偏移量(段内偏移量)信息,这样存储单元的物理地址就可用段基地址+段内偏移量的方法表示。2023/2/597上述寻址方式都是按地址进行存储器访问的。除此之外,还有按内容寻址的相联存储器。相联寻址:使用相联存储器,按所需内容进行寻址。2023/2/598寻址方式码的省略当地址部分的地址为单一时(指定只有一种),如寄存器寻址,则可以省略寻址方式,直接给出寄存器的编号。例如某机的ALU双操作数指令18条,均为R-R型,且有32个寄存器,则指令格式可以为如下格式,其中省略了源和目的地址的寻址方式字段。OP(5位)Reg1编号(5位)Reg2编号(5位)
2023/2/599例:某计算机字长为16位,主存地址空间大小为128KB,按字编址。采用单字长指令格式,指令各字段定义如下:
15
1211
65
0OPMs
RsMdRd源操作数目的操作数2023/2/5100其中,转移指令采用相对寻址方式,相对偏移是用补码表示,寻址方式定义如下:
Ms/Md寻址方式助记符含义000B寄存器直接Rn操作数=(Rn)001B寄存器间接(Rn)操作数=((Rn))010B自增型变址(Rn)+操作数=((Rn)),
(Rn)+1→Rn011B相对D转移目标地址=(PC)+D注:(X)表示地址为X的内存单元或寄存器X的内容2023/2/5101请回答下列问题:(1)该指令系统最多可有多少条指令?该计算机最多有多少个通用寄存器?存储器地址寄存器(MAR)和存储器数据寄存器(MDR)至少各需多少位?(2)转移指令的目标地址范围是多少?(3)若操作码0010B表示加法操作(助记符为ADD),寄存器R4和R5的编号分别为100B和101B,R4的内容为1234H,R5的内容为5678H。地址1234H中的内容为5678H,地址5678H中的内容为1234H,则汇编语言为ADD(R4),(R5)+(逗号前为源操作数,逗号后为目的操作数)对应的机器码是什么(用十六进制表示)?该指令执行后,哪些寄存器和存储单元的内容会改变?改变后的内容是什么?2023/2/5102分析:(1)指令系统最多支持16条指令;支持8个通用寄存器;
∵主存地址空间大小为128KB,按字编址,故共有64K个字单元,∴
MAR至少为16位。∵该机字长为16位,∴
MDR至少为16位。(2)∵机器字长为16位,∴PC的字长为16位,转移指令采用相对寻址方式,PC加位移量的结果为仍为16位,故转移指令的目标地址范围为0000H~FFFFH。
2023/2/5103(3)汇编语句“ADD(R4),(R5)+”中,(R4)为寄存器间接寻址,编码001B,(R5)+为自增型变址寻址,编码010B,ADD操作码为0010B,故对应的机器码为:0010001100010101=2315H∵R4的内容为1234H,R5的内容为5678H。地址1234H中的内容为5678H,地址5678H中的内容为1234H,该指令执行的操作是:
(1234H)+
(5678H)=5678H+1234H=68ACH∴存储单元5678H的内容变为68ACH。
R5自增加1,内容变为5679H2023/2/51045.3指令类型及功能不同类型的计算机,由于其性能、结构、适用范围的不同,指令系统间差异很大。有的机器指令系统丰富,指令条数多;有的机器指令系统简单,指令类型少。指令系统的设计风格分为:复杂指令系统的计算机(CISC)精简指令系统的计算机(RISC)2023/2/5105指令系统的基本要求1.完备性任何运算都可以用指令编程实现。即要求指令系统的指令丰富、功能齐全、使用方便,应具有所有基本指令。2.有效性用指令系统中的指令编写的程序能高效率运行,占用空间小、执行速度快。3.规整性指令系统具有对称性、匀齐性,指令与数据格式的一致性。2023/2/5106对称性:所有寄存器和存储单元均同等对待,所有指令可以使用所有寻址方式,减少特殊操作和例外情况。匀齐性:一种操作可支持各种数据类型。如算术指令可支持字节、字、双字、十进制数、浮点单精度数、浮点双精度数等。指令与数据格式的一致性:指令长度与数据长度有一定的关系,以便于存取和处理。4.兼容性系列机的各机种之间有基本相同的指令集。至少作到向后兼容,即先推出的机器上的程序可以在后推出的机器上运行。2023/2/5107不同的计算机所具有的指令系统也不同,但不管指令系统的繁简如何,所包含的指令的基本类型和功能是相似的。一台计算机最基本的、必不可少的指令是不多的,因为很多指令都可以用这些最基本的指令来实现。例如,乘、除运算指令,浮点运算指令,既可以直接用硬件实现,也可以用其它指令编制程序来实现,但两者在执行时间和编程的方便性差别很大。因此,指令系统中有相当一部分指令是为了提高程序的执行速度和便于用户编程而设计的。2023/2/5108一个完善的指令系统应包括的基本指令有:数据传送指令、算术逻辑运算指令、移位操作指令、堆栈操作指令、字符串处理指令、程序控制指令、输入/输出指令等。一些复杂指令的功能往往是一些基本指令功能的组合。
2023/2/51095.3.1数据传送指令数据传送指令用于完成数据传送功能。数据传送指令应解决的问题:①传送范围:从何处到何处。有R←→R、R←→M、M←→M②传送单位:一次传送的数据量。字节、字、双字、成组传送(如数组等)③寻址方式:源地址和目的地址的确定方法。数据传送时,数据从源地址传送到目的地址,源地址中的数据不变。有的机器设置通用的MOV指令;有的机器用LOAD、STORE指令访存,LOAD为读数指令,STORE为存数指令。2023/2/5110例:8086指令MOVAL,BL;AL←BLMOVAL,Disp(BX)(SI);AL←((BX)+(SI)
+Disp)2023/2/5111例:IBM370机的成组取指令:A1、A3:寄存器字段,指定16个通用寄存器中的某一个B2:基址寄存器D2:形式地址。源操作数的起始地址:E2=(B2)+D2。指令功能:从主存E2单元开始,顺序地取出多个数据,分别存放在从A1字段指定的寄存器到A3字段指定的寄存器的编号连续的多个寄存器中。例如,A1字段指定寄存器R6,A3字段指定寄存器R11。则指令完成的功能是:从E2单元开始顺序取出6个数据,分别存入R6到R11共6个寄存器中。成组取A1A3B2D22023/2/51125.3.2算术逻辑运算指令算术逻辑运算指令主要用于进行各种算术运算及逻辑运算。算术运算:包括定点、浮点的加、减、乘、除运算以及求反、求补、加1、减1、比较等指令。逻辑运算:主要是对布尔量进行运算,一般包括与、或、非、异或、测试等指令。逻辑运算指令多用于对数据字中某些位(一位或多位)进行操作。
2023/2/5113例:8086指令系统中的算术逻辑运算指令ADDAL,BL;AL←AL+BLMULBL;AX←AL×BLANDAL,0FEH;AL←AL∧FEH,即AL的最低位
;清0,其余位不变。ORAL,0F0H;AL←AL∨F0H,即AL的高4位置1
;其余位不变TESTAL,01H;AL∧00000001B
;AL0=0结果为0
;AL0=1结果不为02023/2/5114随着计算机的不断发展,硬件价格的不断下降,计算机的指令系统也在不断发展,特别在CISC计算机中,常把一些常用的子程序用一条指令代替,如乘方指令、开方指令等,例如VAX一11的计算多项式指令,一条指令可实现一个多项式的计算。在一些大型机、巨型机中,不仅支持标量运算,还设置向量运算指令。2023/2/51155.3.3移位指令移位指令用于实现对操作数的左、右移位。移位操作指令分为算术移位、逻辑移位和循环移位三种,可以实现对操作数左移或右移一位或几位。①算术移位:对带符号数的移位,移位过程中必须保持操作数的符号不变。若是左移,空出的最低位补0。若是右移,空出的最高位补符号位,操作数以补码表示。②逻辑移位:把移位的操作数当作无符号数,左移、右移的空出位都补0。2023/2/5116③循环移位:移出位又移入最高(最低)位。带进位循环(大循环):进位位C与数据部分一起循环。不带进位循环(小循环):进位位C不与数据部分一起循环。循环移位一般用于实现循环式控制、高低字节的互换或用于实现多倍字长数据的算术移位或逻辑移位。2023/2/5117算术和逻辑移位指令还可用于实现简单的乘除运算。移位指令的这个性质,对于没有乘除运算指令的计算机特别重要。移位指令的执行时间比乘除指令的执行时间短,因此采用移位指令实现简单的乘除运算可获得较高速度。2023/2/51185.3.4堆栈操作指令堆栈操作指令是一种特殊的数据传送指令。堆栈操作有两种:①压入(进栈)指令:把指定的操作数送入栈顶。SP←SP减量,(SP)←数据②弹出(退栈、出栈)指令:从栈顶弹出数据,送到指令指定的目的地址中。目的←(SP),SP←SP增量2023/2/5119例:8086的指令系统中进栈指令:PUSHAXSP←SP-1,(SP)←AH,SP←SP-1,(SP)←AL出栈指令:POPAXAL←(SP),SP←SP+1,AH←(SP),SP←SP+1低地址ALAH高地址SPSP-1SP-1低地址ALAH高地址SP+1SP+1SPALAH2023/2/5120在一般的计算机中,堆栈操作指令主要用来保存和恢复中断、子程序调用时的现场数据和断点指令地址,也用于子程序调用时的参数传递。为了支持这些功能的快速实现,有些机器还设有多数据的压入指令和弹出指令,可以用一条堆栈操作指令依次把多个数据压入或弹出堆栈。2023/2/51215.3.5字符串处理指令字符串处理指令是用于进行非数值数据处理的指令。一般包括字符串传送、字符串比较、字符串查找、字符串抽取、字符串转换等指令。字符串传送指令:将数据块从主存的某一区域传送到另一区域。字符串比较指令:把一个字符串与另一个字符串逐个字符进行比较。字符串查找指令:在一个字符串中查找指定的子串或字符。2023/2/5122字符串提取指令:从字符串中提取某一子串。字符串转换指令:从一种数据编码转换为另一种编码。例:8086指令MOVS;串传送指令LODS;串读入指令STOS;串存储指令字符串处理指令在需要对大量字符串进行各种处理的文字编辑和排版方面非常有用。2023/2/51235.3.6程序控制指令程序控制指令用于控制程序运行的顺序和选择程序的运行方向。程序控制指令使程序具有测试、分析与判断的能力。主要包括转移指令、循环控制指令及子程序调用与返回指令。2023/2/51241.转移指令转移指令用于控制程序转到指定地址继续执行。⑴无条件转移指令无条件转移指令又称必转指令、跳转指令。这类转移指令在执行时不受任何条件的约束,直接把控制转移到指令指定的转向地址。⑵条件转移指令条件转移指令的执行受到一定条件的约束。条件转移指令在执行时,只有在条件满足的情况下,才会执行转移操作,把控制转移到指令指定的转向地址;若条件不满足,则不执行转移操作,程序仍按原顺序继续执行。
2023/2/5125条件转移指令是最基本的转移指令,它的执行受一定条件的约束。条件转移指令使计算机具有很强的逻辑判断能力,这是计算机实现地址转移,能高度自动化工作的关键。条件转移指令转移的条件一般是前次运算的某些结果特征。在计算机CPU中通常设置一个状态寄存器(或条件码寄存器),用以记录所执行的算术逻辑运算指令、移位指令等的结果标志。这些标志主要包括:进位标志(C)、结果溢出标志(V)、结果为零标志(Z)、结果为负标志(N)及结果奇偶标志(P)等。这些标志的组合,可以产生十几种条件转移,如结果为零转、非零转、为负转、为正转、溢出转、非溢出转等。2023/2/5126转移指令的转移地址一般采用相对寻址或直接寻址。相对寻址:转移地址为当前PC内容与位移量之和。直接寻址:转移地址由指令中地址码直接给出。例:Inter8086指令系统中的转移指令JMPL1
;直接寻址的转移,无条件转移到L1处
JNZ50H
;相对寻址的转移。若操作结果不为
0,则转移到当前PC+50H处。设指
令地址为1000H,则当前PC=1002H,
转移地址为:
1002H+50H=1052H2023/2/5127JCABH
;相对寻址的转移。若操作结果有
进位,则转移到当前PC+ABH处。
设指令地址为1000H,则当前PC为:
PC=1002H,转移地址为:
1002H+FFABH=0FABH2023/2/5128循环控制指令用于支持循环程序的执行。循环控制指令实际上是一种增强型的条件转移指令。循环控制指令的功能包括循环控制变量的修改、测试判断和转移等。例:Intel8086指令系统中的循环控制指令。LOOPL1
;CX←CX-1,
;如果CX≠0,则转到L1处继续执行;
;如果CX=0,则结束循环。2.循环控制指令2023/2/5129子程序:一组可以公用的指令序列,只要给出子程序的入口地址就能从主程序转入子程序。在程序的执行过程中,当需要执行子程序时,可以在主程序中发出调用子程序的指令,给出子程序的入口地址,控制程序的执行序列从主程序转入子程序;而当子程序执行完毕后,可以利用返回主程序的指令,使程序重新返回主程序的发出子程序调用命令的地方继续顺序执行。
3.子程序调用与返回指令2023/2/5130子程序的入口地址:子程序第一条指令的地址。子程序调用指令(转子指令、过程调用指令):用于从主程序转向子程序的指令。返回指令:从子程序返回主程序的指令。在转子指令中要给出子程序的入口地址;为了执行返回指令时,能够正确返回主程序,转子指令应具有保护断点的功能。断点:主程序的返回地址。即转子指令的下一条指令的地址。2023/2/5131执行转子指令时,保存断点常用的方式:①存放在子程序第一条指令的前一个字单元。②保存在某一约定的寄存器中。③压入堆栈。将断点压入堆栈是保护断点的最好方法,它便于实现多重转子和递归调用,因而被很多指令系统所采用。Intel8086采用堆栈保存返回地址。它设置了子程序调用指令CALL和返回指令RET。CALL指令把下一条指令的地址(返回地址)压入堆栈,RET指令从堆栈中取出该地址并返回该地址继续执行。转子指令和返回指令也可以是带条件的,条件转子和条件返回其条件与转移指令的条件相类似。2023/2/5132KCALLAK+1…AMOVA+1…RETSP-2K+1LK+1HSP堆栈子程序主程序2023/2/5133转子指令与转移指令的区别转移指令的功能是转移到指令给出的转移地址处去执行指令,一般用于同一程序内的转移,转移后不需要返回原处,因此不需要保存返回地址。转子指令的功能是转去执行一段子程序,实现的是不同程序之间的转移。因为子程序执行完后必须返回主程序,所以转子指令必须以某种方式保存返回地址,以便返回时能正确返回到主程序原来的位置。
2023/2/51344.陷阱指令
陷阱:一种意外事故中断。设置陷阱的目的是为了通知CPU所出现的故障,并根据故障情况,转入相应的故障处理程序。计算机的陷阱指令一般作为隐指令(即指令系统中不提供的指令),不提供给用户直接使用,只有在出现意外故障时,由CPU自动产生并执行。也有计算机在指令系统中设置了用户可用的陷阱指令或“访管”指令,便于用户利用它来实现系统调用和程序请求。2023/2/5135例如,Intel8086的指令系统中提供了软件中断指令INTn(n是8位二进制常数,用于表示中断类型),INTn是直接提供给用户使用的陷阱指令,利用它可以实现系统调用和程序请求。
2023/2/51365.3.7输入/输出指令输入/输出指令是用于主机与外部设备之间进行各种信息交换的指令。主机与外部设备之间交换的信息包括:①输入/输出的数据②主机向外部设备发出各种控制命令③外部设备的各种工作状态2023/2/5137输入/输出指令的三种设置方式①外部设备采用单独编码的寻址方式并设置专用的I/O指令。由I/O指令的地址码部分给出被选设备的设备码(或端口地址),操作码指定所要求的I/O操作。这种方式将I/O指令与其他指令区别对待,编写程序清晰;但因为I/O指令通常较少,功能简单,如果需要对外设信息进行复杂处理,则需要较多的指令才能实现。2023/2/5138例:NOVA机的I/O指令格式:设备码:指定设备。控制字段:规定启动或关闭设备码指定的设备。OP:规定要求完成的I/O操作。011ACOP控制设备码例:8086的I/O指令INAL,80H;将80H号端口的内容读入ALOUT90H,AL;将AL的内容写入90H号端口2023/2/5139②
外设与主存统一编址,用通用的数据传送指令实现I/O操作。这种方式不用设置专用I/O指令,可以利用各类指令对外设信息进行进行处理;但由于外设与主存统一编址,占用了主存的地址空间;而且较难分清程序中的I/O操作和访存操作。③
通过I/O处理机执行I/O操作。在这种方式下,CPU只需执行几条简单的I/O指令,如启动I/O设备、停止I/O设备、测试I/O设备等,而对I/O系统的管理、I/O操作控制等工作都由I/O处理机完成。这种方式能提高主机的效率,但必须在I/O处理机支持下才能实现。
2023/2/51405.3.8其它指令完成某种控制功能的指令,如停机、等待、空操作、开中断、关中断、置条件码以及特权指令等。
特权指令是指只能用于操作系统或其它系统软件,而不提供给用户使用的指令。在多任务、多用户的计算机系统中,这种特权指令是不可缺少的。它主要用于系统资源分配与管理,包括改变系统工作方式、检测用户的访问权限、修改虚拟存储器管理的段表、页表以及完成进程的创建与切换等。2023/2/51415.4CISC机和RISC机指令风格
5.4.1复杂指令系统计算机CISC(ComplexInstructionSetComputer)复杂指令系统计算机:具备庞大且复杂的指令系统的计算机,简称CISC。
CISC的思想是靠增强指令的功能,增加指令系统的复杂程度来增强计算机的功能、提高计算机系统的性能。2023/2/5142CISC指令系统的特点:(1)指令系统复杂庞大,指令数目一般多达200~300条。(2)指令格式多,指令字长不固定,使用多种不同的寻址方式。(3)可访存指令不受限制。(4)各种指令的执行时间和使用频率相差很大。(5)大多数采用微程序控制器。2023/2/5143由于CISC指令系统复杂,导致所需的硬件结构复杂,这不仅增加了计算机的研制开发周期和成本,而且也难以保证系统的正确性,有时甚至可能降低系统的性能。2023/2/5144经过对CISC的各种指令在典型程序中使用频率的测试分析,发现只有占指令系统20%的指令是常用的,并且这20%的指令大多属于算/逻运算、数据传送、转移、子程序调用等简单指令,而占80%的指令在程序中出现的概率只有20%左右。这一结果说明花费了大量代价增加的复杂指令,只能有20%左右的使用率,这将造成硬件资源的大量浪费。2023/2/5145精简指令系统计算机RISC
(ReducedInstructionSetComputer)RISC技术希望用20%左右的简单指令来组合实现不常用的80%的指令,用一套精简的指令系统取代复杂的指令系统,使机器结构简化,以达到用简单指令提高机器性能和速度、提高机器的性能价格比的目的。
5.4.2精简指令系统计算机RISC
2023/2/5146一般CPU的执行速度受程序中的指令总数I、平均指令执行所需的时钟周期数CPI和每个时钟周期的时间T三个因素的影响。CPU执行程序所需的时间TCPU为:
TCPU=I×CPI×T显然,减小I、CPI和T就能有效地减少CPU的执行时间,提高程序执行的速度。RISC技术主要从简化指令系统,优化硬件设计的角度来提高系统的性能与速度。2023/2/5147RISC指令系统的主要特点(1)选取使用频率高的简单指令以及很有用但又不复杂的指令组成指令系统。(2)指令数目较少,指令长度固定,指令格式少,寻址方式种类少。(3)采用流水线技术,大多数指令可在一个时钟周期内完成;特别是在采用了超标量和超流水技术后,可使指令的平均执行时间小于一个时钟周期。
(4)使用较多的通用寄存器以减少访存。
2023/2/5148(5)以寄存器—寄存器方式工作,只有取数/存数(LOAD/STORE)指令访问存储器,其余指令的操作都在寄存器之间进行。(6)控制器以组合逻辑控制为主,不用或少用微程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年江苏省扬州市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年四川省乐山市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2023年江苏省宿迁市公开招聘警务辅助人员辅警笔试自考题1卷含答案
- 2022年云南省保山市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年吉林省辽源市公开招聘警务辅助人员辅警笔试自考题2卷含答案
- 2024年治疗用生物制品项目资金需求报告
- 2024年盘碟托盘项目投资申请报告代可行性研究报告
- 2024年SKI系列二甲苯异构化催化剂项目投资申请报告代可行性研究报告
- 《心理学课件》课件
- 2024版临时居住中介协议3篇
- 2022年山东师范大学自考英语(二)练习题(附答案解析)
- 医院工作流程图较全
- NB/T 11431-2023土地整治煤矸石回填技术规范
- 医疗器械集中采购文件(2024版)
- 上海市2024-2025学年高一语文下学期分科检测试题含解析
- 血液透析高钾血症的护理查房
- 佛山市2022-2023学年七年级上学期期末考试数学试题【带答案】
- 使用权资产实质性程序
- 保险公司增额终身寿主讲课件
- 手术室二氧化碳应急预案及流程
- 八年级上学期数学教学反思6篇
评论
0/150
提交评论