版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第六章单片机CPU指令集架构主要内容数据类型和端指令集中的符号规则单片机CPU寻址模式指令模式的选择单片机CPU指令类型和格式单片机CPU指令集架构
--数据类型和端MCS-251ISA寻址的数据类型注:16位的字或32位的双字可以保存在存储器中任何字节开始的地址,注意不需要在16位字(两字节)或32位双字(四字节)边界上对齐数据类型二进制位的个数位(bit)1字节(byte)8字(word)16双字(doubleword)32单片机CPU指令集架构
--数据类型和端在MCS-251ISA中,字和双字以大端形式保存在内存和寄存器文件中在将数据保存到存储器中时,字或双字的最高有效字节(MostSignificantByte,MSB)在指令中指定的存储器的字节中,其余字节保存在存储器高地址的位置,最低有效字节(LeastSignificantByte,LSB)保存在存储器最高地址的位置对于大端来说,满足高址低字节,低址高字节的规则。而小端正好相反,满足高址高字节,低址低字节的规则单片机CPU指令集架构
--数据类型和端下面将通过一个例子说明在大端模式下,存储器地址和寄存器不同字节之间的对应关系代码清单6-1在寄存器和存储器之间移动数据的汇编语言代码
MOVWR0,#A3B6HMOV00:0201H,WR0MOVDR4,#0000C4D7H单片机CPU指令集架构
--数据类型和端对于指令MOVWR0,#A3B6H来说,它将立即数0xA3B6加载到16位(字)寄存器WR0中对于指令MOV00:0201H,WR0来说,它将16位(字)寄存器的内容保存到数据存储器地址为00:0201H的位置对于指令MOVDR4,#0000C4D7H来说,它将零扩展的32位立即数0x0000C4D7加载到32位(双字)寄存器DR4中0xA30xB6数值位号158700xA30xB600:0201H00:0202H0x000x000xC40xD7数值位号3124231615870单片机CPU指令集架构
--指令集中的符号规则MCS-251的ISA兼容了MCS-51的ISA,也就是说在MCS-251的ISA中包含了全部MCS-51ISA中的指令本节介绍MCS-251ISA中对于指令中使用的各种符号的定义规则包括传统MCS-51ISA中的寄存器符号的表示、地址符号的表示,以及指令中操作数的符号表示规则指令集中的符号规则
--寄存器符号的表示当在MCS-251的ISA中使用MCS-51ISA中的指令时,会使用到MCS-51ISA中规定的寄存器符号,包括:A:表示MCS-51(简称8051)CPU核中的8位累加器ACCDPTR:表示16位的数据指针,指向外部数据空间或者代码存储空间PC:表示16位的程序计数器,指向下一条要执行指令的地址C:表示进位标志CYAB:表示A和B寄存器对,用于乘和除操作SP:表示堆栈指针DPS:数据指针选择寄存器R0~R7:8个8位的寄存器指令集中的符号规则
--操作数符号的表示规则在MCS-251ISA中,对于操作数的符号描述含义符号描述@Ri通过寄存器R1或R0间接寻址的地址,范围为00H~FFHRnnrrr当前寄存器组所选择的8位寄存器R0-R7,8位寄存器的编号n的范围为0~7,rrr为n对应的二进制编码RmRmdRmsm,md,msssssSSSSRm为寄存器文件中当前选择的8位(字节)寄存器,范围为R0~R15Rmd为8位(字节)目标寄存器Rms为8位(字节)源寄存器m、md和ms为8位(字节)寄存器的编号,范围为0~15ssss为寄存器编号m或md所对应的二进制编码SSSS为寄存器编号ms对应的二进制编码指令集中的符号规则
--操作数符号的表示规则WRj
WRjdWRjs@WRj
@WRj+dis16
j,jd,js
ttttTTTTWRj为当前寄存器文件所选择的16位(字)寄存器,包括WR0、WR2、…和WR30WRjd为16位(字)目标寄存器WRjs为16位(字)源寄存器@WRj表示通过16位(字)寄存器WR0~WR30进行间接寻址的地址,范围为00:0000~00:FFFFH@WRj+dis16表示通过16位(字)寄存器WR0~WR30指定的存储器地址加上由dis16指定的0~64Kbyte范围的偏移值所得到间接寻址的地址,范围为00:0000H~00:FFFFHj、jd和js为16位(字)寄存器的编号,取值范围为0~30之间的偶数(包括0),即0、2、4、6、8、…、28和30tttt为j/2或jd/2对应的二进制编码TTTT为js/2对应的二进制编码符号描述指令集中的符号规则
--操作数符号的表示规则DRk
DRkdDRks@DRk
@DRk+dis24
k,kd,ks
uuuuUUUUDRk为当前寄存器文件所选择的32位(双字)寄存器,包括DR0、DR4、…、DR28、DR56和DR60DRkd为32位(双字)目标寄存器DRks为32位(双字)源寄存器@DRk表示通过32位(双字)寄存器DR0~DR28、DR56或DR60进行间接寻址的地址,范围在00:0000H~FF:FFFFH@DRk+dis24为通过寄存器DR0-DR28、DR56或DR60指定的基地址加上由dis24所指定的0~64Kbyte范围的偏移值所的得到间接寻址的地址,范围为00:0000H~FF:FFFFHk、kd和ks为32位(双字)寄存器编号,k、kd和ks的取值为0、4、8、…、28、56和60uuuu为k/4或kd/4对应的二进制编码UUUU为ks/4对应的二进制编码符号描述指令集中的符号规则
--操作数符号的表示规则dir8dir为8位直接寻址的地址,地址范围为00:0000H~00:00FFH或地址范围为S:00H~S:FFH的SFR空间dir16dir16为直接寻址的16位地址,地址范围为00:0000H~00:FFFFH#data#data为8位立即数#data16#data为16位立即数#0data16#1data16#0data16和#1data16均表示32位立即数。其中,#0data16表示用16个二进制数“0”填充高16位,#1data16表示用16个二进制数“1”填充高16位#shortvv#short表示值为1或2或4的常数,它仍然是立即数vv为#short/2对应的二进制编码(其中,1/2=0=“00”,2/2=1=“01”,4/2=2=“10”)符号描述指令集中的符号规则
--操作数符号的表示规则bit
yyy可直接位寻址的地址。其范围为00:0020H~00:007FH或SFR内可位寻址的地址yyy为为位号(0~7)对应的二进制编码bit51bit51为可直接位寻址的地址,在存储空间或SFR中范围为00H~FFH。在内部存储器字节中,00H~7FH表示为地址20H~2FH的128个位。80H~FFH表示16个SFR中的128位。需要注意,SFR必须以0或8结尾relrel为8位相对寻址的符号。在机器码中使用补码表示,目标操作数的范围为-128~+127的字节,计算为相对下一条指令的第一个字节addr11addr11为11位目标地址,其目标地址在下一条指令所在的同一个2kB块内addr16addr16为16位目标地址,其目标地址在下一条指令所在的同一个64kB块内addr24addr24为24位目标地址,它是MCS-251ISA的所有可寻址的范围符号描述单片机CPU指令集架构
--单片机CPU寻址模式一条机器指令包含两部分,即:操作码和操作数操作码的目的是要对被操作对象进行处理典型的,对被操作对象实现逻辑与或非运算、加减乘除运算等在机器/汇编语言指令中,将操作对象称为操作数在STC增强型8051单片机和STC32G系列单片机中,这些被操作的对象(操作数)可以保存在CPU的内部寄存器、片内Flash程序存储器、片内基本RAM、片内扩展RAM或者片外扩展存储器中,也可能是仅是一个常数,它作为操作码的一部分存在单片机CPU指令集架构
--单片机CPU寻址模式因此,就需要预先确定一些规则,一方面使得操作数可以保存在这些区域内;另一方面,CPU可以找到它们在单片机中,将CPU寻找操作对象(操作数)所在存储位置的方式,称为寻址模式单片机CPU指令集架构
--单片机CPU寻址模式MCS-251的ISA支持下面的寻址模式(区分源和目的),包括:寄存器寻址在这种寻址模式中,指令中指定包含操作数的寄存器立即寻址在这种寻址模式中,指令中包含着操作数直接寻址在这种寻址模式中,指令包含操作数地址间接寻址在这种寻址模式中,指令指定包含操作数地址的寄存器单片机CPU指令集架构
--单片机CPU寻址模式位移寻址在这种寻址模式中,指令指定一个寄存器和一个偏移量。操作数地址是寄存器内容(基地址)和偏移量之和相对寻址在这种寻址模式中,指令包含从下一条指令到目标地址(控制转移的地址,例如跳转地址)的带符号偏移量位寻址在这种寻址模式中,指令包含位地址单片机CPU寻址模式
--立即数寻址模式MCS-51的ISA和MCS-251的ISA都支持立即寻址模式下面分别介绍MCS-51ISA和MCS-251ISA提供的立即数寻址模式
单片机CPU寻址模式
--立即数寻址模式MCS-251ISA在这种寻址模式中,在指令中就包含着立即数当执行8位(字节)操作时,使用8位立即数(#data)当执行16位(字)操作时,使用16位立即数(#data16)
当执行32位(双字)操作时,低16位(字)使用16位(字)立即数填充,高16位(字)使用16个二进制数“0”(由#0data16表示)或使用16个二进制数“1”(由#1data16表示)填充。将16位立即数数据放入双字寄存器(DRk)的MOVH指令,将数据放入高位字,同时保持低位字不变。递增/递减指令包含指定递增/递减量的立即数(#short取值为1、2或4)单片机CPU寻址模式
--立即数寻址模式MCS-51ISA
在这种寻址模式中,指令仅使用8位立即数(#data)注:立即数前面必须加上前缀符号‘#’进行标识【例6-1】下面的指令采用了立即数寻址模式,即MOVA,#3AH该指令将8位十六进制表示的立即数3A加载到累加器A中,即(A)=0x3A
【例6-2】下面的指令采用了立即数寻址模式,即MOVWR4,#1230H该指令将16位十六进制表示的立即数1230加载到字寄存器WR4中,即(WR4)=0x1230单片机CPU寻址模式
--直接寻址模式MCS-51的ISA和MCS-251的ISA都支持直接寻址模式下面分别介绍MCS-51ISA和MCS-251ISA提供的直接寻址模式
单片机CPU寻址模式
--直接寻址模式MCS-251ISA在这种寻址模式中,指令包含数据操作数的地址。其中:8位地址可寻址范围包括片上RAM地址范围为00:0000H~00:007FH的区域和SFR地址范围为S:080H~S:0FFH的区域,可以以字节(8位)、字(16位)和双字(32位)的形式访问这些区域16位地址可寻址范围为片上RAM地址范围为00:0000H~00:FFFFH的区域,可以以字节(8位)、字(16位)和双字(32位)形式访问这些区域在MCS-251ISA中,存储器的地址包括一个区域编号,即00:、01:、...、FF:这与传统MCS-51ISA的地址表示不同单片机CPU寻址模式
--直接寻址模式在MCS-251ISA中,在SFR区域内寻址的地址需要加入前缀符号‘S:’,以表示后面跟随的地址是SFR区域内的地址,即S:000H~S:1FFH区分存储器地址和SFR地址是必要的,这是因为指令可以使用直接寻址模式来寻址存储器地址范围为00:0000H~00:01FFH的空间以及SFR地址范围为S:000H~S:1FFH的空间单片机CPU寻址模式
--直接寻址模式下面的指令采用了直接寻址模式,即MOVDR0,EDATA0100H假设16位数据存储器地址为00:0100H的位置保存的数据信息0x120x340x560x7800:0100H00:0101H00:0102H00:0103H该指令将16位数据存储器地址为00:0100H的一个32位(双字)数据(连续四个字节的地址)0x12345678加载到32位寄存器DR0中0x120x340x560x78数值位号3124231615870注:当立即数去掉了前缀“#”时,该立即数就不是原来立即数的含义了,而是变成了直接寻址的地址值,这一点要特别注意!单片机CPU寻址模式
--直接寻址模式下面的指令采用了直接寻址模式,即MOVWR2,0x60假设8位数据存储器地址为0x60的位置保存的数据信息0xA50x5A00:0060H00:0061H该指令将8位数据存储器地址为0x60的一个16位(字)数据0xA55A加载到16位寄存器WR2中0xA0x50x50xA数值位片机CPU寻址模式
--间接寻址模式MCS-251ISA和MCS-51ISA通过不同的寄存器进行间接寻址MCS-251ISA通过8位(字节)、16位(字)和32位(双字)寄存器作为间接寻址的寄存器在寄存器中保存着寻址存储空间的地址单片机CPU寻址模式
--间接寻址模式8位(字节)寄存器(@Ri,i=0或1)在寄存器R0和R1中的8位地址可以访问数据存储器的地址范围为00:0000H~00:00FFH16位(字)寄存器(@WRj,j=0、2、4、...、30)在WRj中的16位地址可以访问的数据存储器的地址范围为00:0000H~00:FFFFH32位(双字)寄存器(@DRk,k=0、4、8、...、28、56、60)在DRk寄存器中的低24位(高8位必须为0)生成的有效地址可以访问整个16MB地址空间如果使用DR60作为通用数据指针,需要注意DR60是扩展堆栈指针寄存器SPX单片机CPU寻址模式
--间接寻址模式MCS-51ISA指令使用间接寻址来访问片上RAM、代码存储器和外部数据RAM8位(字节)寄存器(@Ri,i=0或1)在寄存器R0和R1中的8位地址可以访问片上存储器的地址范围为00H~FFH,以及外部数据RAM低256字节的区域16位(字)数据指针(@DPTR或@A+DPTR)MOVC和MOVX指令使用该间接寻址模式来访问代码(程序)存储器和外部数据RAM16位程序计数器(@A+PC)MOVC指令使用该间接模式来访问代码(程序)存储器单片机CPU寻址模式
--间接寻址模式【例6-5】下面的指令采用了间接寻址模式,即MOV@WR0,WR2假设在16位(字)寄存器WR2中保存的数据为0x8976,即(WR2)=0x8976;WR0寄存器中保存的地址为0xFFE,执行该指令后,将WR2寄存器中的数据,写到数据存储器地址为00:0FFEH的位置0x890x7600:0FFEH00:0FFFH单片机CPU寻址模式
--间接寻址模式【例6-6】下面的指令采用了间接寻址模式,即MOV@DR0,WR8假设在16位(字)寄存器WR8中保存的数据为0xABCD,即(WR8)=0xABCD;DR0寄存器中保存的地址为0x00010000,执行该指令后,将WR8寄存器中的16位(字)数据,写到数据存储器地址为01:0000H的位置注:01:表示XDATA区域,片内扩展RAM区域0xAB0xCD01:0000H01:0001H单片机CPU寻址模式
--寄存器寻址模式MCS-51和MCS-251ISA均支持寄存器寻址模式MCS-251ISA在寄存器寻址模式中,数据指令中的操作数保存在下面的寄存器中:8位(字节)寄存器R0~R1516位(字)寄存器WR0、WR2、...、WR3032位(双字)寄存器DR0、DR4、...、DR28、DR56、DR60MCS-51ISA在寄存器寻址模式中,指令仅寻址寄存器R0–R7单片机CPU寻址模式
--寄存器寻址模式当一条指令包含两个相同类型的寄存器(例如,指令MOVRmd,Rms)时Rmd中的符号“d”表示目的,为英文单词destination(目的)的缩写,即Rmd为目的操作数Rms中的索引“s”表示源,为英文单词Source(源)的缩写,即Rms为源操作数在一条具体的指令中,使用R0~R15中具体的一个寄存器符号来分别表示Rmd和Rms比如,MOVR2,R10单片机CPU寻址模式
--寄存器寻址模式【例6-7】下面的指令采用了寄存器寻址模式,即INCWR4,#2该指令将16位(字)寄存器WR4的内容加2,即(WR4)+2→(WR4)【例6-8】下面的指令采用了寄存器寻址模式,即INCDPTR该指令将16位(字)寄存器DPTR的内容加1,即(DPTR)+1→(DPTR)单片机CPU寻址模式
--位移寻址模式一些MOV指令使用位移寻址模式将8位(字节)或16位(字)从源移动到目标单片机CPU寻址模式
--位移寻址模式16位位移寻址(@WRj+dis16)间接访问存储器中最低的64KB空间在16位(字)寄存器WRj中保存着要寻址的存储器的基地址。将该基地址与16位带符号的偏移量dis16进行相加,生成访问存储器的最终16位有效地址如果基地址和偏移量之和超过0xFFFF,则计算出的地址会在区域00:内回卷例如,0xF000与0x2005之和为0x11005,取0x11005的低16位作为最终的地址值0x1005单片机CPU寻址模式
--位移寻址模式类似地,如果基地址和负偏移量之和小于零,则计算的地址将回卷到区域00:的顶部例如,0x2005与0xF000之和为0x11005,取0x11005的低16位作为最终的地址值为0x1005单片机CPU寻址模式
--位移寻址模式24位位移寻址(@DRk+dis24)间接访问存储器的整个16MB地址空间在32位(双字)寄存器DR0、DR4、...、DR24、DR28、DR56或DR60中保存着要寻址的存储器的24位基地址(寄存器的高8位必须为0,以保证始终提供的是24位有效基地址)将基地址该与16位带符号的偏移量dis24相加,生成访问存储器的最终24位有效地址单片机CPU寻址模式
--位移寻址模式【例6-9】下面的指令采用了位移寻址模式,即MOV@WR2+0x100,WR4假设在16位(字)寄存器WR2中保存着要访问数据存储器的16位基地址0x0000,在16位(字)寄存器WR4中保存着立即数0x5678该指令首先将WR2中保存的基地址和16位的偏移量0x100进行相加,得到访问数据存储器的有效地址0x0100,即00:0100H;然后将寄存器WR4的值0x5678保存到数据存储器地址为00:0100H的位置0x560x7800:0100H00:0101H单片机CPU寻址模式
--相对寻址模式相对寻址时将程序计数器(PC)中的当前值与指令中第二个字节给出的数相加,其结果作为转移指令的转移地址PC中的当前值为基地址,指令第二个字节给出的数作为偏移量。由于目的地址是相对于PC中的基地址而言,所以这种寻址方式称为相对寻址偏移量为带符号的数,取值范围为-128~+127。这种寻址方式主要用于跳转指令单片机CPU寻址模式
--相对寻址模式【例6-10】下面的一组指令中JC指令采用了相对寻址模式,即
代码清单6-1包含相对寻址指令JC的一组指令return:MOVR1,#0xA0;立即寻址模式MOVA,#0x60;立即寻址模式ADDA,R1;寄存器寻址模式JCreturn;相对寻址模式其中,JC指令后面跟随着标号return,该指令表示当进位标志CY为“1”时,跳转到程序代码中标号为return的位置单片机CPU寻址模式
--相对寻址模式程序存储器的地址(十六进制表示)标号汇编指令机器指令(十六进制表示)指令实现的功能
return:
FF:0251MOVR1,#0xA57E10A50xA0→(R1),(R1)=0xA5FF:0254MOVA,#0x6874680x60→(A),(A)=0x68FF:0256ADDA,R1A529(R1)+(A)→(A),(A)=0x0D,CY=”1”FF:0258JCreturn40F7CY=‘1’,跳转到标号为return的指令处,该标号处的指令为MOVR1,#0xA5FF:025A其他指令单片机CPU寻址模式
--相对寻址模式从上表可知,指令MOVR1,#0xA0保存在程序存储器地址空间为FF:0251H的位置,而跳转指令JCreturn保存在程序存储器地址空间为FF:0258的位置从表中可知,跳转指令JCreturn的下一条指令位于程序存储空间地址为FF:0x25A的位置。跳转目标地址指令和JCreturn的下一条指令之间的地址偏移量为0x251-0x25a=0xF7(取值范围为-128~+127),这个偏移量在机器指令的编码0x40F7中,就可以看出来因此,称这种寻址模式为相对寻址模式单片机CPU寻址模式
--位寻址模式在MCS-51ISA和MCS-251ISA中,可单独寻址的位位于片上数据RAM和SFR与MCS-51ISA中的指令相比,MCS-251ISA独有的位指令可以寻址更多的位指令集架构ISA位寻址的位置片上RAM特殊功能寄存器SFRMCS-2510x20~0x7F所有定义的SFR均可进行位寻址MCS-510x20~0x2F以0x0或0x8结束的SFR地址,比如0x80、0x88、0x90、0x98、...、0xF8单片机CPU寻址模式
--位寻址模式从表中可知,MCS-251和MCS-51ISA的位寻址模式存在差异在MCS51ISA中,一个由bit51表示位,可以根据其在某个寄存器中的位置来指定,也可以通过0x00~0x7F范围内的位地址来指定MCS-251ISA本身没有位地址。一个位可以通过名字或它在某个寄存器中的位置来寻址,但不能通过位地址来寻址【例6-11】下面的指令采用了位寻址模式,即SETBC该指令将设置PSW寄存器中的进位标志单片机CPU寻址模式
--位寻址模式【例6-12】下面的指令采用了位寻址模式,即SETB20H.0该指令将数据存储器EDATA空间地址为0x20H的第0位设置为“1”【例6-13】下面的指令采用了位寻址模式,即SETB7FH.7该指令将数据存储器EDATA空间地址为0x7FH的第7位设置为“1”第六章单片机CPU指令集架构单片机指令模式的选择基于MCS-251ISA的所有MCU都可以设置为两种模式包括源(Source)模式以及二进制(binary)模式单片机指令模式的选择源模式是MCS-251ISA默认的工作模式。在使用MCS-251ISA时,二进制模式用于兼容51架构的高效机器指令编码模式注:(1)二进制模式只是一个命名,并不表示该模式的机器码就是二进制形式表示,机器码依旧以16进制表示)(2)注:STC32G系列单片机只支持源模式,并不支持二进制模式,这一点要特别注意。单片机指令模式的选择在MCS-251ISA中为什么要存在两种模式?这需要从“A5H”指令前缀开始说起,这里需要强调“A5H”是只是一个机器指令码前缀“A5H”前缀会在编译器编译指令时,依据所设置的模式(源模式/二进制模式)自动生成下面通过一个例子来说明单片机指令模式的选择对于SUBBA,Rn指令,该指令是MCS-51ISA中就有的一条指令,在MCS-251ISA中仍然支持该指令在MCS-51ISA中,该指令的编码格式表中,rrr为寄存器编号对应的二进制编码,范围为“000”~“111”当具体的指令为SUBBA,R4时,该指令的编码格式为“10011100”,以十六进制数表示为0x9C位索引76543210字段值10011rrr单片机指令模式的选择指令SUBRmd,Rms为MCS-251ISA中新增加的指令在MCS-251ISA中,该指令的编码格式表中,ssss为寄存器编号md对应的二进制编码,SSSS为寄存器编号ms对应的二进制编码当具体的指令为SUBR4,R4时,该指令的编码格式为“1001110001000100”,以十六进制数表示为0x9C44位索引1514131211109876543210字段值10011100ssssSSSS单片机指令模式的选择因为MCS-51ISA和MCS-251ISA的指令长度是可变的,所以,如果不采取任何措施时,当MCU中的CPU取出这两条指令时,无法区分出这两条指令,导致CPU无法对指令进行”译码”在前面提到,二进制模式是兼容MCS-51ISA的模式,当在MCS-251ISA下,使用MCS-51ISA中的指令时,为了生成兼容MCS-51ISA的高效指令编码,则会保留MCS-51ISA原本的指令编码格式,也就是不对指令格式进行任何修改单片机指令模式的选择此时,为了在二进制模式下运行在MCS-251ISA中新增加的指令(比如指令SUBRmd,Rms),则会对新添加指令的格式进行修改即在指令编码的最前面添加一个字节的二进制序列“10100101”,用十六进制数表示为0xA5,由于0xA和0x5互为按位取反的关系,所以提高了指令的抗干扰能力当在源模式下,高效的运行MCS-251中新添加的指令,则保留指令的编码格式不变,而将MCS-251中原来MCS-51ISA中的指令前面添加一个字节的二进制序列“10100101”,用十六进制数表示为0xA5。单片机指令模式的选择对于指令SUBBA,R4和指令SUBRmd,Rms,在二进制模式和源模式下的指令操作码的编码指令操作码二进制模式源模式SUBBA,R49CHA59CHSUBR4,R4A59CH9CH单片机CPU指令类型和格式MCS-251ISA中包含了268条指令,而MCS-51ISA中只包含了111条指令,指令的规模为MCS-51ISA指令规模的近2.5倍按照所实现的功能,将STC15单片机内8051CPU指令集分为:算术运算指令逻辑指令数据传输指令位指令控制指令单片机CPU指令类型和格式注:(1)下面介绍的指令中,后面带星号的指令表示在MCS-51ISA就提供的指令,其他不带星号的指令表示在MCS-251ISA中新增加的指令。(2)机器码格式中的机器指令,使用[]括起来表示一个字节(8位二进制数),多个字节的指令使用多个[]符号。(3)下面介绍的指令中,机器码格式以二进制序列表示。(4)在汇编助记符指令中,(寄存器)表示寄存器中的内容,((寄存器))表示寄存器中的内容为存储器的地址。比如(R0)表示R0寄存器中的内容,((R0))表示R0中寄存器的内容为指向存储器的地址。加法指令在MCS-251ISA中,加法指令包括两种类型,即:ADD指令ADDC指令加法指令
--ADD指令将源操作数与目的操作数相加,目的操作数可以是寄存器或累加器,将结果保存在寄存器或累加器中CY标志的判断如果相加结果的第7位有进位,则将进位标志位CY设置为“1”AC标志的判断如果与字节变量相加,且相加结果的第3位有进位,则将标志位AC设置为“1”注:AC只对8位数据的相加运算有效,这一点要特别注意!!!加法指令溢出的判断对于无符号的整数加法,CY标志可用于指示相加的结果是否发生了溢出如果加法结果的第6位有进位但第7位没有进位,或者第7位有进位而第6位没有进位,则设置溢出标志OV。对于有符号整数相加,当两个正数相加结果为负数,或者两个负数相加结果为正数时,表示计算结果的溢出,此时将溢出OV标志设置为“1”加法指令零标志的判断当两个数相加的结果为0时,将零标志Z设置为“1”;当两个数相加的结果不为0时,将零标志Z设置为”0”符号标志的判断当两个数相加结果的第7位为“1”时,将符号标志N设置为“1”;当两个数相加结果的第7位为“0”时,将符号标志设置为“0”注:上面提到的第6位和第7位指的是操作数最高有效字节中(8位、16位或32位)的第6位和第7位。这是因为MCS-251ISA中的加法指令支持8位、16位和32位操作。加法指令
--ADD指令ADDA,Rn(*)
该指令执行的操作和机器指令格式在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节机器码中的rrr为寄存器编号对应的二进制序列(范围为“000“~”111“),对应的寄存器编号为R0~R7操作机器码格式字节数时钟数(A)←(A)+(Rn)[00101rrr]12加法指令
--ADD指令ADDA,dir8(*)该指令执行的操作和机器指令格式机器码中的直接地址为汇编指令中的dir8,范围为0~255操作机器码格式字节数时钟数(A)←(A)+(dir8)[00100101][直接地址]21加法指令
--ADD指令ADDA,@Ri(*)该指令执行的操作和机器指令格式在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节。机器码中的i为“0“或”1”,因此可用的寄存器为R0/R1操作机器码字节数时钟数(A)←(A)+((Ri))[0010011i]12加法指令
--ADD指令ADDA,#data(*)
该指令执行的操作和机器指令格式操作机器码字节数时钟数(A)←(A)+#data[00100100][8位立即数]21加法指令
--ADD指令ADDRmd,Rms该指令执行的操作和机器指令格式ssss与SSSS分别为目标寄存器Rmd编号和源寄存器编号Rms所对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(Rmd)←(Rmd)+(Rms)[00101100][ssssSSSS]21加法指令
--ADD指令【例6-14】下面的指令执行两个8位数的加法运算,即ADDR1,R0在执行该指令之前,R1寄存器中的内容(R1)=“11000011”,R0寄存器中内容(R0)=“10101010”。在执行该指令后,R1寄存器的内容(R1)=“01101101”,(AC)=”0”,(CY)=”1”以及(OV)=”1”加法指令
--ADD指令ADDWRjd,WRjs该指令执行的操作和机器指令格式tttt为目标寄存器WRjd编号jd/2后对应的二进制数,TTTT为源寄存器WRjs编号js/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(WRjd)←(WRjd)+(WRjs)[00101101][ttttTTTT]21加法指令
--ADD指令ADDDRkd,DRks
该指令执行的操作和机器指令格式uuuu为目标寄存器DRkd编号kd/4后对应的二进制数,UUUU为源寄存器DRks编号ks/4以后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(DRkd)←(DRkd)+(DRks)[00101111][uuuuUUUU]21加法指令
--ADD指令ADDRm,#data该指令执行的操作和机器指令格式ssss为目标寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)+#data[00101110][ssss0000][8位立即数]31加法指令
--ADD指令ADDWRj,#data16
该指令执行的操作和机器指令格式tttt为目标寄存器WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(WRj)←(WRj)+#data16[00101110][tttt0100][立即数高位][立即数低位]41加法指令
--ADD指令ADDDRk,#0data16
该指令执行的操作和机器指令格式uuuu为目标寄存器DRk编号k/4后的对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(DRk)←(DRk)+#data16[00101110][uuuu1000][立即数高位][立即数低位]41加法指令
--ADD指令ADDRm,dir8
该指令执行的操作和机器指令格式dir8为直接地址,ssss为目标寄存器Rm编号对应的二进制数。在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节。操作机器码字节数时钟数(Rm)←(Rm)+(dir8)[00101110][ssss0001][直接地址]31加法指令
--ADD指令ADDWRj,dir8该指令执行的操作和机器指令格式dir8为直接地址,tttt为目标寄存器WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(WRj)←(WRj)+(dir8)[00101110][tttt0101][直接地址]31加法指令
--ADD指令ADDRm,dir16该指令执行的操作和机器指令格式ssss为目标寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(Rm)←(Rm)+(dir16)[00101110][ssss0011][直接地址高8位][直接地址低8位]41加法指令
--ADD指令ADDWRj,dir16该指令执行的操作和机器指令格式dir16为16位地址,tttt为目标寄存器WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(WRj)←(WRj)+(dir16)[00101110][tttt0111][直接地址高8位][直接地址低8位]41加法指令
--ADD指令ADDRm,@WRj
该指令执行的操作和机器指令格式ssss为目标寄存器Rm编号对应的二进制数,tttt为源寄存器WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)+((WRj))[00101110][tttt1001][ssss0000]31加法指令
--ADD指令ADDRm,@DRk
该指令执行的操作和机器指令格式ssss为目标寄存器Rm编号对应的二进制数,uuuu为源寄存器DRk编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)+((WRj))[00101110][uuuu1011][ssss0000]31加法指令
--ADDC指令该指令实现带进位标志的加法。同时将指定的字节变量、CY标志和累加器内容相加,将结果留在累加器中如果第7位有进位,则置位CY标志位如果第3位有进位,则置位AC标志位溢出标志的判断当无符号整数相加时,CY标志表示发生溢出如果第6位进位第7位没有进位,或第7位进位但第6位没有进位,则置位OV标志位。当有符号整数相加时,OV标志表示两个正数相加结果为负数,或两个负数相加结果为正数。第6位和第7位指的是操作数的最高有效字节(8、16或32位)的第6位和第7位加法指令
--ADDC指令该指令对进位标志CY、辅助进位标志AC、溢出标志OV、符号标志N和零标志Z具有影响加法指令
--ADDC指令ADDCA,Rn(*)
该指令执行的操作和机器指令格式rrr为源寄存器Rn编号对应的二进制数在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(A)←(A)+(CY)+(Rn)[00111rrr]12加法指令
--ADDC指令下面的指令执行两个带进位的8位数加法运算,即ADDCA,R0在执行该指令之前,累加器A中的内容(A)=“11000011”,寄存器R0的内容(R0)=“10101010”,并且(CY)=1运行该指令后,累加器A中的内容(A)=”01101110”,标志位(AC)=”0”,(CY)=”1”和(OV)=”1”加法指令
--ADDC指令ADDCA,dir8(*)该指令执行的操作和机器指令格式表中,dir8为8位的直接地址操作机器码字节数时钟数(A)←(A)+(CY)+(dir8)[00110101][直接地址]21加法指令
--ADDC指令ADDCA,@Ri(*)该指令执行的操作和机器指令格式i为“0”或“1”,这就意味着在该指令中可用的寄存器为R0或R1在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(A)←(A)+(CY)+((Ri))[0011011i]12加法指令
--ADDC指令ADDCA,#data(*)该指令执行的操作和机器指令格式表中,#data为8为立即数操作机器码字节数时钟数(A)←(A)+(CY)+#data[00110100][8位立即数]21减法指令
--SUB指令
该指令用于从目标操作数中减去指定的变量,将结果留在目标操作数中如果第7位需要借位,则SUB指令设置CY标志位。否则,CY位清零当减去有符号整数时,OV标志表示当从正数中减去负数时产生了负数,或者当从负数中减去正数时产生了正数。这里的第7位指的是操作数的最高有效字节(8、16或32位)中的第7位
该指令影响进位标志CY、溢出标志OV、符号标志N和零标志Z注:仅对于8位操作数来说,才会影响辅助进位标志AC。对于字和双字寄存器,不会影响AC标志位减法指令
--SUB指令SUBRmd,Rms
该指令执行的操作和机器指令格式ssss与SSSS分别为目的寄存器Rmd编号和源寄存器Rms编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(Rmd)←(Rmd)–(Rms)[10011100][ssssSSSS]21减法指令
--SUB指令【例6-16】下面的指令执行两个8位数的减法运算,即SUBR1,R0在执行该指令之前,R1寄存器中的内容(R1)=“11001001”,寄存器R0的内容(R0)=“01010100”运行该指令后,R1寄存器中的内容(R1)=”01110101”,标志位(CY)=”0”,(AC)=”0”和(OV)=”1”减法指令
--SUB指令SUBWRjd,WRjs该指令执行的操作和机器指令格式tttt为目的寄存器WRjd的编号jd/2后对应的二进制数,TTTT为源寄存器WRjs的编号js/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(WRjd)←(WRjd)–(WRjs)[10011101][ttttTTTT]21减法指令
--SUB指令SUBDRkd,DRks该指令执行的操作和机器指令格式uuuu为目的寄存器DRKd编号kd/4后对应的二进制数,UUUU为源寄存器DRks编号ks/4后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(DRkd)←(DRkd)–(DRks)[10011111][uuuuUUUU]21减法指令
--SUB指令SUBRm,#data该指令执行的操作和机器指令格式ssss为目的寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)–#data[10011110][ssss0000][8位立即数]31减法指令
--SUB指令SUBWRj,#data16该指令执行的操作和机器指令格式tttt为目的寄存器编号WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(WRj)←(WRj)–#data16[10011110][tttt0100][立即数高字节][立即数低字节]41减法指令
--SUB指令SUBDRk,#0data16该指令执行的操作和机器指令格式uuuu为目的寄存器DRk编号k/4后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(DRk)←(DRk)–#data16[10011110][uuuu1000][立即数高字节][立即数低字节]41减法指令
--SUB指令SUBRm,dir8该指令执行的操作和机器指令格式ssss为目的寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)–(dir8)[10011110][ssss0001][直接地址]31减法指令
--SUB指令SUBWRj,dir8该指令执行的操作和机器指令格式tttt为目的寄存器WRj编号j/2后对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(WRj)←(WRj)–(dir8)[10011110][tttt0101][直接地址]31减法指令
--SUB指令SUBRm,dir16该指令执行的操作和机器指令格式ssss为目的寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成5个字节操作机器码字节数时钟数(Rm)←(Rm)–(dir16)[10011110][ssss0011][直接地址高字节][直接地址低字节]41减法指令
--SUB指令SUBWRj,dir16该指令执行的操作和机器指令格式tttt为目的寄存器编号除以2后的二进制表示法在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(WRj)←(WRj)–(dir16)[10011110][tttt0111][直接地址高字节][直接地址低字节]41减法指令
--SUB指令SUBRm,@WRj该指令执行的操作和机器指令格式tttt为源寄存器WRj编号j/2后对应的二进制数,ssss为目的寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)–((WRj))[10011110][tttt1001][ssss0000]31减法指令
--SUB指令SUBRm,@DRk该指令执行的操作和机器指令格式uuuu为源寄存器DRk编号k/4后对应的二进制数,ssss为目的寄存器Rm编号对应的二进制数在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成4个字节操作机器码字节数时钟数(Rm)←(Rm)–((DRk))[10011110][uuuu1011][ssss0000]31减法指令
--SUBB指令实现带借位的减法SUBB指令从累加器A中减去指定的变量和CY标志,将结果保存到累加器A中进位标志的判断如果第7位需要借位,则设置CY(借位)标志位,否则清除CY标志位。如果在执行SUBB指令之前已经设置了CY标志位,这表明在减法的上一步需要借位,因此从累加器A中减去CY标志位和源操作数辅助进位标志的判断如果第3位向第4位借位,则设置AC标志位,否则清除AC标志减法指令
--SUBB指令溢出标志的判断如果需要借位到第6位且第7位无借位,或者第7位借位且第6位无借位,则设置OV标志位。当减去有符号整数时,OV标志指示从正数中减去负数时产生负数,或从负数中减去正数时产生正数注:此处,第6位和第7位指的是操作数的最高有效字节(8、16或32位)该指令影响的标志位包括进位标志CY、溢出标志OV、符号标志N和零标志Z。对于字和双字寄存器,不会影响AC标志减法指令
--SUBB指令SUBBA,Rn(*)
该指令执行的操作和机器指令格式ssss为源寄存器Rn编号对应的二进制数在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(A)←(A)–(CY)–(Rn)[10011rrr]12减法指令
--SUBB指令下面的指令执行带借位的两个8位数减法运算,即SUBBA,R2在执行该指令之前,累加器A中的内容(A)=“11001001”,寄存器R2的内容(R2)=“01010100”,并且(CY)=”1”运行该指令后,累加器A中的内容(A)=”01110100”,标志位(CY)=”0”,(AC)=”0”和(OV)=”1”减法指令
--SUBB指令SUBBA,dir8(*)该指令执行的操作和机器指令格式dir8为8位的直接地址操作机器码字节数时钟数(A)←(A)–(CY)–(dir8)[10010101][直接地址]21减法指令
--SUBB指令SUBBA,@Ri(*)
该指令执行的操作和机器指令格式i为“0”或“1”,这意味着在该指令中可用的寄存器为R0或R1在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(A)←(A)–(CY)–((Ri))[1001011i]12减法指令
--SUBB指令SUBBA,#data(*)
该指令执行的操作和机器指令格式操作机器码字节数时钟数(A)←(A)–(CY)–#data[10010100][8位立即数]21算术指令
--递增指令
对于递增指令来说,当0xFF溢出到0x00时,只影响N和Z标志位INCA(*)该指令执行的操作和机器指令格式操作机器码字节数时钟数(A)←(A)+1[00000100]11算术指令
--递增指令INCRn(*)该指令执行的操作和机器指令格式rrr为寄存器Rn编号对应的二进制数在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(Rn)←(Rn)+1[00001rrr]12算术指令
--递增指令INCdir8(*)该指令执行的操作和机器指令格式该指令中,dir8为8位的直接地址操作机器码字节数时钟数(dir8)←(dir8)+1[00000101][直接地址]21算术指令
--递增指令INC@Ri(*)该指令执行的操作和机器指令格式i的值为“0”或“1”,这意味着该指令中可用的寄存器为R0或R1在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数((Ri)←((Ri))+1[0000011i]12算术指令
--递增指令【例6-18】下面的指令执行递增运算,即INC@R0INCR0INC@R0在执行指令之前,寄存器R0的内容(R0)=”01111110”,片上数据存储器地址0x7E和0x7F的位置保存着两个数0xFF和0x40,即(0x7E)=0xFF和(0x7F)=0x40在执行完指令后,寄存器R0的内容(R0)=”01111111”,片上数据存储器地址0x7E的位置保存着数据为0x00,即(0x7E)=0x00;片上数据存储器地址0x7F的位置保存着数据为0x41,即(0x7F)=0x41算术指令
--递增指令INCRm,#short该指令执行的操作和机器指令格式ssss为源寄存器Rm编号对应的二进制数;#short的取值为1、2或4,其对应的两位二进制编码vv的值分别为“00”、“01”、“10”在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(Rm)←(Rm)+#short[00001011][ssss00vv]21算术指令
--递增指令INCWRj,#short该指令执行的操作和机器指令格式tttt为目的寄存器WRj编号j/2后对应的二进制数;#short的取值为1、2或4,其对应的两位二进制编码vv的值分别为“00“、”01“、”10“在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(WRj)←(WRj)+#short[00001011][tttt01vv]21算术指令
--递增指令INCDRk,#short该指令执行的操作和机器指令格式uuuu为目的寄存器DRk编号k/4后对应的二进制,#short的取值为1、2或4,其对应的两位二进制编码vv的值分别为“00“、”01“、”10“在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(DRk)←(DRk)+#short[00001011][uuuu11vv]21算术指令
--递增指令
操作机器码字节数时钟数(DPTR)←(DPTR)+1[10100011]11算术指令
--递减指令如果变量原来的值为0x00,递减后下溢到0xFF。该指令仅影响符号标志N和零标志ZDECA(*)该指令执行的操作和机器指令格式操作机器码字节数时钟数(A)←(A)–1[00010100]11算术指令
--递减指令DECRn(*)该指令执行的操作和机器指令格式rrr为寄存器Rn编号对应的二进制数在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数(Rn)←(Rn)–1[00011rrr]12算术指令
--递减指令DECdir8(*)
该指令执行的操作和机器指令格式指令中dir8为8位直接地址操作机器码字节数时钟数(dir8)←(dir8)–1[00010101][直接地址]21算术指令
--递减指令DEC@Ri(*)
该指令执行的操作和机器指令格式i的取值”0”或“1”,这意味着该指令可以使用的寄存器为R0或R1在源模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成2个字节操作机器码字节数时钟数((Ri))←((Ri))–1[0001011i]12算术指令
--递减指令【例6-18】下面的指令执行递减运算,即DEC@R0DECR0DEC@R0执行该指令之前,寄存器R0的内容(R0)=”01111111”,片上数据存储器地址为0x7E的位置保存着数据0x00,即(0x7E)=0x00;片上数据存储器地址为0x7F的位置保存着数据0x40,即(0x7F)=0x40当执行完上面的指令后,寄存器R0的内容(R0)=”01111110”,片上数据存储器地址为0x7E的位置保存着数据0xFF,即(0x7E)=0xFF;片上数据存储器地址为0x7F的位置保存着数据0x3F,即(0x7F)=0x3F算术指令
--递减指令DECRm,#short该指令执行的操作和机器指令格式ssss为目的寄存器Rm编号所对应的二进制数。#short的取值为1、2或4,其对应的两位二进制编码vv的值分别为“00“、”01“、”10“在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(Rm)←(Rm)–#short[00011011][ssss00vv]21算术指令
--递减指令DECWRj,#short该指令执行的操作和机器指令格式tttt为目的寄存器WRj编号j/2后对应的二进制数。#short取值为1、2或4,其对应的两位二进制编码vv的值分别为“00”、“01”、“10”在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(WRj)←(WRj)-#short[00011011][tttt01vv]21算术指令
--递减指令DECDRk,#short该指令执行的操作和机器指令格式uuuu为目的寄存器DRk编号k/4后所对应的二进制数。#short取值为1、2或4,其对应的两位二进制编码vv的值分别为“00”、“01”、“10”在二进制模式下,需要在机器码前面添加前缀0xA5,此时指令长度变成3个字节操作机器码字节数时钟数(DRk)←(DRk)-#short[00011011][uuuu11vv]21算术指令
--乘法指令乘法指令将源寄存器中的无符号
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 生物电化学系统:煤化工废水典型污染物的高效去除与机制解析
- 生物炭基固体碱催化剂的构筑及其在生物柴油转化中的效能与机制探究
- 2026湖北省长江新材有限公司社会招聘9人备考题库含答案详解(精练)
- 生物柴油副产品在土壤氮素流失防控中的应用与机制探究
- 2026年延安老年大学教师招聘备考题库含答案详解(模拟题)
- 生物发酵智能控制系统:设计原理、关键技术与应用创新
- 2026湖北省肿瘤医院常年招聘高层次人才备考题库含答案详解(模拟题)
- 2026四川自贡汇东发展股份有限公司招聘1人备考题库及答案详解(考点梳理)
- 2026陕西西安莲湖区枣园社区卫生服务中心招聘备考题库附答案详解(达标题)
- 生成模型赋能:大规模网络广义社区发现的创新路径与实践
- 2026年江苏省英语听力口语考试-话题简述12篇
- (正式版)DB50∕T 1896-2025 《建设项目占用湿地、湿地公园生态影响评价专题报告编制规范》
- 公路道路施工组织设计方案范本(完整版)
- 《交易心理分析》中文
- 建材的合作合同范本
- 浙江湖州市城市投资发展集团招聘笔试题库2025年附答案
- 全国大学生职业规划大赛《车辆工程》专业生涯发展展示【获省级一等奖】
- 2025凤凰出版传媒集团秋季招聘笔试历年参考题库附带答案详解
- 审计盘点流程总结
- 马字演变过程课件
- 三布五油防腐施工方案(3篇)
评论
0/150
提交评论