




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
An
Introduction
to
DatabaseSystem微型计算机原理及应用河北经贸大学信息技术学院河北经贸大学信息技术学院第三章
8086指令系统第三章8086/8088的指令系统8086的寻址方式指令的机器码表示方式8086的指令系统3.1
8086的寻址方式一、立即寻址
三、直接寻址五、变址寻址二、寄存器寻址四、寄存器间接寻址六、基址加变址寻址计算机的指令一般由操作码和操作数组成,操作码规定了指令的功能;而操作数则规定了指令操作的对象。操作数可以以立即数的形式存放在指令中,但在大多数情况下,操作数是以地址的形式存放在指令(指示操作数在哪儿)。用于说明操作数所在地址的方法称为寻址方式。在微机中,操作数存放在:1、在指令中;2、在CPU的某一内部寄存器中;3、在内存的数据区中;4、I/O端口。在8086CPU中,内存地址是由数据段地址和段内偏移量组成。而指令中规定的地址即为段内偏移量(逻辑地址)——有效地址EA,有效地址EA构成的方法不同,则为不同的寻址方式。8086的寻址方式操作数(8位或16的常数)直接包含在指令中,紧跟在操作码后面,与操作码一起放在代码段区域中。操作数im既可是8位的,也可是16位的。例:MOVMOVAX,imAL,26H一、立即寻址方式(Immediate
Addreing)操作码imLimH码段MAXAH
ALimHimL二、寄存器寻址AXDS(Register
Addreing)操作数放在指令规定的寄存器中。例:MOV
DS,AX操作数的有效地址EA是指令的一部分,它与操作码一起放在代码段区域中。操作数的物理地址为数据段寄存器DS加上16位地址偏移量。例:若(DS)=3000HMOV
AX,[2000H]指令中存储单元的地址也可用符号地址表示。例:AREA1
DW
0867H
MOV
AX,AREA1注意区分:AREA1MOVEQU
0867HAX,AREA1操作码00205030300003200032001码段数据段AHAL3050三、直接寻址方式(Direct
Addreing)操作数在存储单元中。操作数的有效地址EA在指令码所指定的寄存器中。可作为间址的寄存器有SI、DI、BX、BP,若:1、操作数在数据段DS中:则以寄存器BX、SI或DI间接寻址。2、操作数在堆栈段中:则以寄存器BP间接寻址。例:若(DS)=2000H,(SI)=1000HMOV
AX,[SI]操作码A050200002100021001AX码段数据段AHAL50A0四、寄存器间接寻址方式(Register Indirect
Addreing)四、寄存器间接寻址方式
(续)(Register Indirect
Addreing)3、指令中可以使用段超越前缀。如:MOV BX
,
DS:[BP]MOV AX
,
ES:[SI]操作码操作码00305030300003500035001AX码段数据段MOV
AX,COUNT
[SI]或
MOV AX,
[COUNT
+SI]操作数在存储单元中。操作数的有效地址是以指令指定的寄存器内容加上指令中给定的8位或16位位移量。若指令指定的寄存器是BX、SI或DI,段寄存器使用DS;若指令指定的寄存器是BP,则段寄存器使用SS。例:若(DS)=3000H,(SI)=2000H,COUNT=3000H3050物理地址=16×DS+SI+COUNT=30000H
H
H=35000H五、寄存器相对寻址方式(Register
Relative
Addreing)六、基址变址寻址方式(Based
Indexed
Addreing)操作数在存储单元中。操作数的有效地址是一个基址寄存器(BX或BP)和一个变址寄存器(SI或DI)的内容之和,两个寄存器均由指令指定。一般由基址寄存器决定所使用的段寄存器。若指令指定的寄存器是BX,段寄存器使用DS;物理地址=16×DS+BX+SI
或
=16×DS+BX+DI若指令指定的寄存器是BP,则段寄存器使用SS。物理地址=16×SS+BP+SI
或
=16×SS+BP+DI例:MOV AX
,[BX][SI]若DS=3000H,SI=2000H,BX=3000H,(35000H)=0ABCDH则:物理地址=16×DS+BX+SI=35000H
AX=0ABCDH七、相对基址变址寻址方式所使用的段寄存器。若指令指定的寄存器是BX,段寄存器使用DS;物理地址=16×DS+BX+SI+8位或16位位移量或
=16×DS+BX+DI
+8位或16位位移量若指令指定的寄存器是BP,则段寄存器使用SS物理地址=16×SS+BP+SI
+8位或16位位移量或=16×SS+BP+DI
+8位或16位位移量(Relative
Based
Indexed
Addreing)操作数在存储单元中。操作数的有效地址是基址寄存器(BX或BP)内容加上变址寄存器(SI或DI)的内容、再加上指令中指定的8位或16位位移量。一般由基址寄存器决定例:
MOV
AX,COUNT
[BX]
[SI]若:DS=3000H,SI=0300H,BX=1500H,COUNT
=0200H,(31A00H)=26BFH则:物理地址=16×DS+BX+SI+COUNT=
31A00H
AX=26BFH1、指令中使用方括号的地址表达式必须遵循下列规则:立即数可以出现在方括号内,表示直接地址;只有SI、BP、DI、BX可以出现在方括号内,它们可以单独出现,也可以相加后出现,或以寄存器与立即数相加的形式出现,但BX和BP或SI和DI不能同时出现在同一个[]内,SI和DI也不能同时出现;方括号有相加的含义,下面几种写法都是等价的:1200[BX][SI] [BX
][SI] [BX+
SI
]方括号内包含BP,则隐含使用SS提供基地址;其余情况均使用DS提供基地址。需说明的几个问题存储器操作的类型约定段允许超越段逻辑地址取指令CS无IP堆栈操作SS无SP通用数据读写DSCS、ES、SSEA源数据串DSCS、ES、SSSI目的数据串ES无DI用BP
作为基寄存器SSCS、DS、ESEA2、段超越:在8088系统中,数据通常在数据段中,但若需要,数据也可存放在码段,堆栈段以及附加段中,这种情况就是段超越。应用时,需在指令中加以说明。例:MOV
AX,ES:[0500H]ES表示数据在附加段中; :
是修改属性运算符。需说明的几个问题(续)3、其它寻址方式隐含寻址:指令中不指明操作数I/O端口寻址:8086有直接端口寻址和间接端口寻址两种方式,端口寻址范围分别为0-0FFH和0-FFFFH。转移类指令寻址一条指令有几种寻址方式需说明的几个问题(续)第三章8086/8088的指令系统8086的寻址方式指令的机器码表示方式8086的指令系统3.2
指令的机器码表示方式汇编语言(AssemblyLanguage)是面向机器的程序设计语言。在汇编语言中,用助记符(Memoni)代替操作码,用地址符号(Symbol)或标号(Label)代替地址码。这样用符号代替机器语言的二进制码。就把机器语音变成了汇编语言。于是汇编语言亦称为符号语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序,汇编程序是系统软件中语言处理系统软件。汇编语言把汇编程序翻译成机器语言的过程称为汇编。汇编语言比机器语言易于读写、易于调试和修改,同时也具有机器语言执行速度快,占内存空间少等优点,但在编写复杂程序时具有明显的局限性,汇编语言依赖于具体的机型,不能通用,也不能在不同机型之间移植。第三章8086/8088的指令系统8086的寻址方式指令的机器码表示方式8086的指令系统3.3 8086的指令系统8088的指令系统分为以下几个功能组:数据传送、二进制算数运算、十进制算
数运算、逻辑操作、移位和转移、程序控制、串操作、标志控制段寄存器和杂项。一、数据传送指令功能:将源操作数的一个字节(B)或一个字(W)传送到目的操作数所指的单元。说明:*指令中至少要有一项明确指出传送的是字节还是字;*
可用不同的寻址方式;*
不影响标志位;*
源操作数不变;*存储器之间,立即数与段寄存器,段寄存器之间不能用一条指令完成数据传送。1、
MOV
OPRD1,OPRD2源操作数目的操作数立即数存储器段寄存器DS、ES、SS通用指针变址寄存器MOV指令允许传送数据的途径如下图所示例
MOV AL
,
’B’将字符B的ASCⅡ码(42H)传送到AL例MOVAX,DATAMOVDS,AX数据段赋值,存储器之间,立即数与段寄存器,段寄存器之间不能用一条指令完成数据
传送。一、数据传送指令一、数据传送指令将立即数传送到存储器时,要使用修改属性运算符PTR,可以通过PTR指明存入字节还是字。例:MOV BYTE
PTR
[BX]
,
10H将10H传送到[BX]
,字节传送MOV WORD
PTR
[BX]
,
10H将0010H传送到[BX],字传送数据段说明举例:;数据段说明开始DATAAREA1AREA2ARRAYSEGMENTDB
14H,3BHDB 3
DUP(0)DW
3100H,01A6HSTRING
DB
‘GOOD’AREA1AREA1ARRAYSTRING143B0000000031A601‘G’‘O’‘O’‘D’一、数据传送指令DATA
ENDS
;数据段说明结束例:MOV AX
,
OFFSET
ARRAY其中OFFSET
为属性操作符该指令的功能是:ARRAY的值(0005H)送AX一、数据传送指令例:MOVAL
,
AREA1;(AREA1)→
ALMOVAREA2
,
AL;(AL)→AREA2
即0002H单元2、交换指令指令格式:XCHG
OPRD1,OPRD2功能:把一个字或一个字节的源操作数与目的操作数交换。交换可在寄存器之间、寄存器与存储器之间进行。但段寄存器不能作为操作数,也不能直接交换两个存储单元中的内容。一、数据传送指令执行指令前AX31B0H31801H31800H31801H31800H执行指令后AX19H95H31HB0H1995H2、交换指令(续)例:设AX=31B0H,DS=3000H,BX=1800H,(31800H)=1995H,执行指令
XCHG AX,
[BX]
的过程为:一、数据传送指令3、堆栈操作指令部.操通用堆栈是以“先进后出”的方式工作的一个存储区,进栈指令
PUSH
OPRD功能:将一个字的源操作数传送至由SP所指向的堆栈的顶操作:PUSH
操作时,先修改SP
的值,使
SP
-
2 SP
后,把源作数(字)压入堆栈中SP
指示的位置上。OPRD可以是16位的寄存器,段寄存器,存储器中的字。指令执行后AX=2A8CHSP2000:
0130H2000:
012EH例:PUSH AX
指令执行过程:指令执行前AX=2A8CHSP2000:
0130H2000:
0000H2000:
0000H2AH8CHSP一、数据传送指令(续)一、数据传送指令(续)3、堆栈操作指令②
出栈指令
POP
OPRD功能:把当前SP
所指向的堆栈顶部的一个字送到指定的目的操作数中。(CS不能作为目的操作数)操作:每执行一次出栈操作,SP+2
→SP
,指向新的栈顶。例:设SS=2000H,SP=0130H,(20130H)=396EH,BX=4FAEH,执行指令POP执行指令前BX=4FAEH2000:
0000H2000:
0000H2000:
0130HSP
→SP
→72H39H6EH72H39H6EHBX的过程如下图所示:执行指令后BX=396EHSP
→2000:
0132H2000:
0131H2000:
0130H一、数据传送指令(续)3、堆栈操作指令③
推入通用寄存器至堆栈
PUSHA功能:将所有通用寄存器、指针寄存器及变址寄存器推入堆栈。④
弹出堆栈至通用寄存器
POPA功能:将所有通用寄存器、指针寄存器及变址寄存器推入堆栈。一、数据传送指令4.
输入输出指令①输入指令IN指令格式:
IN
AL,n或
IN AX,n
;n为£
255
的端口地址INAL,DX或IN
AX,DX;端口地址放在DX中。第一种格式,端口地址n(00~FFH)直接包含在IN指令里,共允许寻址256个端口。当端口地址号大于FFH时,必须用第二种寻址方式,即先将端口号送入DX寄存器,再执行输入操作。功能:从8位端口读入一个字节到AL,或从16位端口读入一个字到AX。例:用IN指令从输入端口读取数据E3H端口9DHAL(1)
IN
AL,0E3H执行指令前22H执行指令后E3H端口9DHAL9DH(2)
IN
AX,80H执行指令前80H端口81H端口5BH17HAX3355H执行指令后80H端口81H端口5BH17HAX17
5BH一、数据传送指令4.
输入输出指令①输入指令IN
(续)一、数据传送指令指令格式:OUTn
,AL或OUTn
,AXOUTDX,AL或OUTDX,AX功能:将AL中的一个字节写到一个8位端口,或把AX中的一个字写到一个16位端口。4.
输入输出指令②输出指令OUT例:用OUT
指令对输出端口进行操作1)
OUT
84H,AX84H85H66H77H端口执行指令前AX
3F46H84H85H端口执行指令后AX
3F46H2)
MOVOUT执行指令前AL9AH端口300H
22HDX,300HDX,AL执行指令后AL9AH端口300H46H3FH一、数据传送指令②输出指令OUT4.
输入输出指令MOVAL,0BAH;被除数-38送ALMOVCH,03H;除数+3
送CHCBW;把字节扩展为字,使AX=0FFBAHIDIVCH;AL=0F4H=-12(商),AH=0FEH=-2(余数)指令执行后,不影响标志位5.
扩展指令①
把字转换成双字指令
CWD功能:把AX中字的符号位扩展送到DX寄存器的所有位中去。若(AX)
<
8000H
,
则(DX)
=
0000H
;若(AX)‡
8000H
,
则(DX)=
0FFFFH例:编程求-38/3的商和余数。一、数据传送指令5.
扩展指令②
把字节转换为字指令
CBW功能:把AL中字节的符号位扩展到AH的所有位。若(AL)
<80H,扩展后(AH)=00H,若(AL)‡80H,扩展后(AH)=0FFH。该指令执行后,不影响标志位。一、数据传送指令二、二进制算术运算指令8088指令系统提供了加、减、乘、除四种基本运算指令,可处理无符号或带符号的8位或16位二进制数的算术运算(带符号数是用补码表示)。还提供了各种调整操作指令,故可进行压缩的或非压缩的十进制数的算术运算。绝大部分算术运算指令都影响状态标志位。1.
加法指令①
ADD
OPRD1,OPRD2功能:将源和目的操作数相加,结果送到目的操作数中,即 OPRD1+OPRD2
→
OPRD1二、算术运算指令这两条指令的源操作数OPRD2可以是寄存器、存储器或立即数,目的操作数OPRD1只能用寄存器和存储单元。注意,源操作数和目的操作数不能同时为存储器,而且它们的类型必须一致,即都是字节或字。它们影响的标志位为:CF、OF、PF、SF、ZF和AF。二、算术运算指令1.
加法指令②
ADC
OPRD1,OPRD2功能:OPRD1+OPRD2+CF
→OPRD1二、算术运算指令执行指令ADDADCAX,CX;(AX)=5389H
,CF=1DX,BX;(DX)=1128H
,CF=0结果:(AX)=5389H
,(DX)=1128H,(BX)=1025H,
(CX)=0E024H标志位SF
=0,
ZF
=0,
CF
=0,
OF=0,
AF
=01.
加法指令例:设,(AX)= 7365H,
(BX)=1025H,(CX)=0E024H
(DX)=0102H二、算术运算指令2.
减法指令①
SUB
OPRD1,OPRD2功能:OPRD1-
OPRD2
→
OPRD1②
SBB
OPRD1,OPRD2功能:OPRD1-OPRD2
-CF→OPRD1这两条指令均影响AF、CF、OF、PF、SF和ZF二、算术运算指令3.
乘法指令①
无符号数乘法指令
MUL
src功能:完成将AL(字节)或AX(字)中的无符号数与源操作数相乘。双倍长度的乘积送回到AX或DX:AX。字节操作数:(AL)
·
(src)→AX字操作数:(AX)
·
(src)
→
DX:AX影响标志位CF、OF:若乘积的高半部分(在字节相乘时为AH,在字相乘时为DX)不为零,则标志CF=1,OF=1;否则CF=0,OF=0。例:设(AL)=90H,(BL)=04H。执行指令MUL BL后,(AX)=0240H,CF
=1,
OF
=1二、算术运算指令3.
乘法指令②带符号数乘法指令IMUL
src功能:完成两个带符号数相乘,操作以及对标志位的影响与MUL指令完全类似。二、算术运算指令功能:对两个无符号数进行除法运算。源操作数可以是字节或字。字节操作数:(AX)/(
src
)(字节)商→AL(最大为FFH),余数→AH字操作数:(DX:AX)/(
src
)(字)在字节操作中,若被除数只有8位,则必须将8位被除数送AL,并将AH清0,然后相除。在字操作中,若被除数只有16位,除数也是16位,则必须将16位被除数送AX,并将DX清0,然后相除。DIV指令执行后,所有标志位均无定义。商→AX(最大为FFFFH),余数→DX4.
除法指令①无符号数除法指令DIV
src二、算术运算指令IDIV
src功能:执行的操作与DIV相同,但操作数都必须是带符号数,商和余数也都是带符号数,而且规定余数的符号和被除数的相同,且所有标志位均无定义。对于IDIV指令,字节操作时要求被除数为16位,字操作时要求被除数为32位。如果被除数不满足这个条件,不能简单地将高位置0,而应该先用符号扩展指令(CWD、CBW)将被除数转换成除法指令所要求的格式,再执行除法指令。4.
除法指令②带符号数除法指令:5.
增量减量指令二、算术运算指令①
INC
OPRD增量指令(单操作数)功能:对目的操作数加1,结果送回目的操作数。即OPRD+1→
OPRD。目的操作数可以在通用寄存器或内存中。指令执行后影响AF、OF、PF、SF和ZF,但不影响CF。例:INCINCBL
例:对内存单元的内容加1必须说明该单元CX的类型INC
BYTE
PTR[BX]INCWORD
PTR[BX]执行后不影响CF影响AF、OF、PF、SF和ZF二、算术运算指令5.
增量减量指令②
DEC
OPRD
减量指令功能:OPRD
-1→OPRD6.
NEG
OPRD
取补指令功能:0
-
OPRD
→
OPRD如操作数为0,执行该指令后,结果仍为0,且CF=0,否则CF=1。若字节操作数为80H(-128),字操作数为8000H(-32768),执行NEG指令后操作数无变化,但OF
=1。二、算术运算指令指令执行后影响AF、CF、OF、PF、SF和ZF。7、比较指令
CMP
OPRD1,OPRD2功能:将目的操作数减去源操作数,但不送结果,仅将结果反映在标志位上,接着可用条件转移指令决定程序的流向。例2:已知(AL)=80H执行指令
CMP
AL
,
80H执行结果
(AL)=
80H
ZF=1二、算术运算指令比较指令主要用在希望比较两个数之间的关系,而又不破坏原操作数的场合。即两者是否相等,或两个中哪一个大。一般有下列几种情况:*
在比较指令之后,根据ZF标志即可判断两者是否相等。若两者相等,执行CMP指令后,ZF=1,否则为0。*
若是两个无符号数进行比较,则在比较指令之后,可根据CF的状态判断大小。*
若是判断两个带符号数的大小,可根据
SF和OF进行判断。在执行CMP
AX,BX后1、当无溢出(OF=0),若SF=0,则AX>BX;否则AX<BX。2、当产生溢出(OF=1),若SF=0,则AX<BX;否则AX>BX。即:OF“异或”SF=0,则AX>BX;OF“异或”SF=1,则AX<BX。比较指令的应用例:求两个多字节无符号数之和。加数在DATA1开始的单元中,被加数在DATA2开始的单元中,字节长度为5,和存放在DATA2中。设置循环计数器0送CF,0送SI结束取加数送AL被加数+加数送DATA2修改循环次数及指针加完YN程序框图:源程序段:MOV
CX,5MOV
SI,0CLCLOP:
MOVADCINCDECJNZAL,DATA1[SI]DATA2[SI],ALSICXLOPHLT例:在BLOCK开始的内存单元中有100个16位带符号数,请寻找出最大值并送MAX单元。MOV
BX,OFFSET
BLOCK;设置块指针AMOVAX,[BX];取一数送AXINCBX;修改指针INCBXMOVCX,99;设置比较次数GAIN:CMP
AX,[BX]
;比较JGNEXT;AX>[BX]转NEXTMOVAX,[BX];小于,则大数送AXNEXT:INCBX;修改指针INCBXDECCX;比较次数减一JNZAGAIN;未完,继续MOVHLTMAX,AX;完,则存大数例:实现两个组合十进制数加法运算。设AL
=28H,BL
=68HAL
=
90H,
CF
=
0,
AF
=
1;
AL+06H→AL,AL
=
96H执行
ADD
AL,BL;DAA结果AL
=
96H,
CF
=
0,
AF
=
01、DAA
组合BCD码加法调整指令功能:将两个组合BCD码相加后,存放在AL中的结果,调整为正确的组合BCD数。DAA指令要紧跟在ADD或ADC指令之后使用,以实现组合的十进制数加法运算。影响除OF以外的所有标志位。三、十进制算数指令2、DAS 组合BCD码减法调整指令功能:在两个组合十进制数用SUB或SBB相减后,结果已存放在AL中的情况下,用DAS对AL进行调整,在AL中得到正确的组合十进制
数。影响AF、CF、PF、SF、ZF。对OF未定义。三、十进制算数指令3、AAA
未组合BCD码加法调整指令功能:在用ADD或ADC指令对两个未组合BCD码作加法后,运算结果已存在AL中,用AAA指令对AL中的数据进行调整,产生一个未组合的十进制和放在AX中。例:实现两个未组合十进制数加法运算。设AL=08H,BL=07HADD
AL,BL;
AL
=
0FHAAA
;
AX
=
0105H未组合十进制数的和放在AX中三、十进制算数指令4、AAS
未组合BCD码减法调整指令功能:在用SUB或SBB指令对两个未组合十进制数进行相减后,对AL中所得结果进行调整,在AL中得到一个正确的未组合十进制数之差。如果有借位,则CF置1。影响AF、CF,对OF、PF、SF、ZF
未定义。三、十进制算数指令5、AAM功能:把在AX中的两个未组合十进制数相乘的结果进行十进制数的调整,使得在AX中得到正确的未组合十进制数的乘积。指令执行后影响标志位PF、SF、ZF,对AF、CF、OF
未定义。例:设(AL)=09H,(BL)=06H执行
BL;(AL)=
36H;调整得(AH)=05H,MULAAM(AL)=
04H即
(AX)=
0504H
为未组合十进制数09和06相乘的结果54三、十进制算数指令6、
未组合十进制数除法调整指令
AAD功能:能把AX中的两个未组合的十进制数,在两个数相除以前进行校正。这样在两个未组合的十进制数相除以后,可以得到正确的未组合十进制结果。例:设AX中存有两个未组合BCD数0307H,即十进制数37,BL中存有一个未组合十进制数05H,若要完成37/5的运算,可用以下两条指令:AAD
;(AH)·10+(AL)=37=25H
ALDIV
BL
;(AL)=7(商),(AH)=2(余数)注意:加法、减法和乘法的十进制调整指令都是紧跟在加法、减法和乘法运算指令之后,对运算结果进行调整。而除法的十进制调整指令AAD则不同,它是在除法运算之前进行调整。三、十进制算数指令四、逻辑运算指令8088/8086可以对字节或字操作数按位操作,包括逻辑与、或、非、异或及测试1、AND逻辑与指令格式:AND
OPRD1,OPRD2功能:对两个操作数进行按位“逻辑与”操作,结果送回目的操作数。主要用于使操作数的某些位保持不变(和
‘1’相与),而使某些位清0(和‘0’相与)例:设(AX)=3538H,执行指令
AND AX,0F0FH
后
;(AX)
=0508H四、逻辑运算指令2、TEST测试指令格式:TEST
OPRD1,OPRD2功能:对两个操作数进行“逻辑与”操作,但不回送结果,即指令执行后两操作数不变。该指令常用在要检测某些条件是否满足,但又不希望改变原有操作数的情况下。紧跟在这条指令后面的往往是一条件转移指令,根据测试结果产生分支,转向不同的处理程序。例如,要判断在BX寄存器中16位数的最高位是否为‘
1’,可用指令
TEST
BX,8000H若最高位为‘
1’,指令执行后,ZF
=
0,若不是‘
1’,则ZF
=
1(结果是0)四、逻辑运算指令3、OR“逻辑或”指令格式:OR
OPRD1,OPRD2功能:对两个操作数进行按位“逻辑或”操作,结果送回目的操作数。该指令主要用于使操作数的某些位保留
(和‘0’相或),而使某些位置1(和‘1’相或)。例如:AX中存放两个未组合BCD数0509H,要将它们分别转换成ASCII码,结果仍放在AX中,则可用如下指令实现:OR
AX,3030H
;(AX)
=
3539H四、逻辑运算指令4、XOR异或操作指令格式:XOR
OPRD1,OPRD2功能:对两个操作数进行按位逻辑异或运算,结果送回目的操作数。
主要用于使操作数的某些位保留(和‘0’相异或),而使某些位取反(和‘
1’相异或)。例如:欲使BH寄存器中的高4位取反,低4位保持不变,可执行指令XOR
BH,0F0H四、逻辑运算指令5、NOT逻辑非指令(取反指令)指令格式:NOT
srcsrc例:设(BX)=8DCFH,执行NOTBX
后,(BX)=7230H功能:将目的操作数求反后送回目的操作数,即src目的操作数可以是8位或16位寄存器或存储器。指令执行后对标志位没有影响四、逻辑运算指令1、移位指令格式:SAL
OPRD,CNT
SAL算术左移指令格式:SHL
OPRD,CNT
SHL
逻辑左移指令CF
‹
MSB
LSB
‹0
SHL/SAL
指令功能:以上两条指令的功能完全相同,均将寄存器或存储器中目的操作数的各位左移,每移一次,最低有效位LSB补0,而最高有效位MSB进入标志位CF。移动一次,相当于将目的操作数乘以2。指令中的计数值CNT决定所要移位的次数。若只需要移位一次,可直接将指令中的CNT置1,若移位次数大于1,应先将移位次数送进CL寄存器,再把CL放在指令的CNT位置上。例:MOVAH,06H;
06H→AHSALAH,1;(AH)左移一位,AH=0CHMOVCL,03H;03H→CL,设移位次数SHLDI,CL;(DI)左移三次SAL BYTE
PTR[BX],1
;将内存单元的内容左移一位五、移位和循环移位指令例:MOVAL,10000000B
;
-128→ALMOVCL,03H
;03H→CL,设移位次数SARAL,CL
;(AL)右移3次,AL=11110000B=-16用这种方法可以实现带符号数的除2(右移一次)、除4
(右移两次)、除8
(右移三次)等操作。五、移位和循环移位指令0
fi
MSB
LSB
fi
CF
SHR
指令功能:对目的操作数中的各位进行右移,每执行一次移位操作,操作数右移一位,最低位进入CF,最高位补0。右移次数由计数值决定,同SAL/SHL指令一样。若目的操作数是无符号数,每右移一次,使目的操作数除以2,例如,右移2次相当于除以4,右移3次相当于除以8等等。但用这种方法作除法时,余数将被丢掉。2.
SHR
逻辑右移指令指令格式:SHROPRD,CNT例:MOVAL,10000101B;
133→ALMOVCL,03H;03H→CL,设移位次数SHRAL,CL;(AL)右移3次,AL=00010000B用这种方法可以实现无符号数的除2(右移一次)、除4
(右移两次)、除8
(右移三次)等操作。五、移位和循环移位指令MSB
LSB
fi
CF
SAR
指令功能:它的功能与SHR相似,移位次数由CNT决定。每移位一次,OPRD各位右移一位,最低位进入CF,但最高位(即符号位)保持不变,而不是补0。每移一次,相当于对带符号数进行除2操作。指令格式:SAR
OPRD,CNT例:MOV
AL,
10000000B
;-128→ALMOV
CL, 03H
;03H→CL,设移位次数SAR
AL,
CL
;(AL)右移3次,AL=11110000B=-16用这种方法可以实现带符号数的除2(右移一次)、除4
(右移两次)、除8
(右移三次)等操作。指令执行后对标志位的影响:标志位CF
总是为目的操作数最后被移出的那一位的值。标志位OF(溢出标志):只有当CNT=1(移位次数)时才有效,用以表示移位前后符号位是否改变,若改变,OF=
1,否则OF=0。即对左移指令(SAL/SHL),若移位后最高有效位与标志位CF
不相等,则OF=1,否则OF=0。而对右移指令,若移位后,操作数的最高有效位与次高位不同,则OF=1,否则OF=0。3.SAR算术右移指令标志位ZF、SF根据指令执行后目的操作数的状态来决定,PF只有当目的操作数在AL中时才有效。标志位AF
未定义。例1:设(BL)=
5AH,
执行指令SHL BL,1
后(BL)=0B4H,标志位CF=0,OF=1例2:设(DS)=2800H,(DI)=180AH,(2980AH)=1256H执行MOV
CL,02HSAR [
DI],CL后(2980AH)=0495H,CF=1,ZF=0,SF=0五、移位和循环移位指令4.循环移位指令① ROL循环左移指令指令格式:ROLOPRD,CNT操作CFMSB
‹LSB② ROR循环右移指令指令格式:ROROPRD,CNTMSB
fi
LSB操作CF五、移位和循环移位指令操作MSB
‹
LSB‹
CF
‹④ RCR带进位循环右移指令指令格式:RCR
OPRD,CNT操作fi
CF
fi
MSB
fi
LSB4.循环移位指令(续)③RCL带进位循环左移指指令令格式:RCL
OPRD,CNT五、移位和循环移位指令循环移位指令(续)四条指令都按指令中CNT规定的移位次数进行循环移位,移位后的结果仍送回目的操作数。OPRD可以是8/16位的寄存器或内存操作数,移位次数可以是1,也可以由CL寄存器的值指定。标志位CF的值由最后一次被移出的值决定;OF位仅在
CNT为1时才有效,在移位后操作数的最高有效位(符号位)发生变化时,则OF=1,否则OF置0.例:设CF=1,(AL)=0B4H,若执行指令ROL AL,
1
;则(AL)
=
69H,
CF
=
1,
OF
=
1若执行指令RCR
AL
,
1
;
则(AL)
=
0DAH
,
CF
=0,
OF
=
0五、移位和循环移位指令六、控制转移指令通常,程序中的指令都是顺序地逐条执行的,指令的执行顺序由CS和IP决定,每取出一条指令,指令指针IP自动进行调整,指向下一条指令。当程序执行到某些特定位置,需要脱离程序的正常执行顺序,而把它转移到指定的目标时,可以利用控制转移指令来改变CS和IP的值,从而改变指令的执行顺序。这类指令可分为:无条件转移和过程调用、条件转移、循环控制及中断等几类。。1.
无条件转移指令JMP指令格式:JMP
DOPD指令功能:使程序无条件地转移到指令中指定的目的地址去执行。DOPD可以是立即数、通用寄存器或内存单元指令的执不影响标志位。分为三种不同类型的转移:①②③短转移(相对转移,相对下一条指令的偏移值,-128——127之内);近转移(相对转移,段内转移);远转移(绝对转移,段间转移)。六、控制转移指令1.
无条件转移指令JMP段内直接转移指令:指令码中直接给出转移的目的地址。格式1:JMP
SHORT 标号
;
直接短转移指令转移范围在-128
~
+127个字节之内。(IP)+8位偏移量→
IP格式2:JMP
NEAR
PTR 标号(或JMP 标号);直接近转移指令转移范围在-32768
~ 个字节之内。六、控制转移指令OPRD指令转向的16位有效地址放在16位寄存器或字存储单元中。例:若JMPBX指令执行前,(BX)=4500H,则指令执行时,将当前IP修改成4500H,程序转到代码段内偏移地址为4500H处执行。2、转移指令(续)段内间接转移指令:格式:JMP
WORD
PTR六、控制转移指令指令中用远标号直接给出了转向的段地址和偏移量。只要用指令中给出的偏移地址和段地址分别取代IP和CS的内容,就使程序从一个代码段转到另一代码段去执行。FAR
PTR
OPRD六、控制转移指令2、转移指令(续)段间直接转移指令:指令格式为:JMP目标地址事先放在存储器的4个连续单元中。转移指令中给出存放目标地址的存储单元的首地
址。地址低的字为偏移量,地址高的字为段地址。六、控制转移指令PTR
OPRD2、转移指令(续)段间间接转移指令指令格式为:
JMP
DWORD六、控制转移指令条件转移指令条件转移指令是根据上一条指令执行后,CPU设置的状态标志作为判别测试条件来决定是否转移。若满足指令所规定的条件,则程序转移到指定目标;若不满足条件,则程序顺序往下执行指令。2.
条件转移指令六、控制转移指令注意:所有条件转移指令的目标地址都是采用相对
寻址方式。即:以IP为基准的-128~+127个字节的范围之内。且指令执行后不影响标志位。OPRD条件转移指令可以分为以下两大类:1、根据单个标志位的条件转移指令2、组合条件的条件转移指令和JCXZ测试转移指令指令助记符
测试条件
指令功能
JCC
F
=
1有进位
转移
JN
CC
F
=
0无进位
转移
JZ
/JEZF
=
1结果为零/相等
转移
JN
Z
/JN
EZF
=
0结果非零/不等
转移
JSSF
=
1符号为负
转移
JN
SSF
=
0符号为正
转移
JOO
F
=
1溢出
转移
JN
OO
F
=
0无溢出
转移
JP
/JPEPF
=
1奇偶位为1/为偶
转移
JN
P
/
JPOPF
=
0奇偶位为0/为奇
转移
六、控制转移指令2.
条件转移指令①根据单个标志位的条件转移指令指令基本格式:JXX
目标类别
指令助记符
测试条件
含义
无符号
JA
/JN
B
ECF=
0
AN
D
Z
F=
0A>B数比较
测试
JA
E
/JN
BJB
/JN
A
EJB
E
/JN
ACF=
0
O
R
Z
F=
1CF=
1
AN
D
Z
F=
0CF=
1
O
R
Z
F=
1A
‡BA<BA
£B带符号
JG
/JN
LESF=O
F
A
N
D
Z
F=
0A>B数比较
测试
JG
E
/JN
LJL/JN
G
EJLE
/JN
GSF=O
F
O
R
Z
F=
1SF„OF
A
ND
Z
F=
0SF„OF
OR
Z
F=
1A
‡BA<BA
£B六、控制转移指令2.
条件转移指令②组合条件的条件转移指令例;某学生的英语成绩在AL中,若低于60分,则打印‘F’;若高于或等于85分,则打印‘G’;打印‘P’;试编程实现。FAIL:程序段:CMP
AL,60JB
FAILCMP
AL,85JAE
GOODMOV
AL,‘P’JMP
PRINTMOV
AL,‘F’JMP
PRINTAL,‘G’GOOD:
MOVPRINT:;与60分比较;小于60分,转FAIL;大于60分,与85分比较;大于等于85分,转GOOD;其它,‘P’送AL;转打印程序;‘F’送AL;转打印程序;‘G’送AL;打印AL中的字符3.
重复(循环)控制指令循环控制指令用来控制一个程序段的重复执行,重复次数由CX寄存器中的内容决定。转移的目标地址必须在控制指令的-128
~+127字节范围内。这类指令的执行均不影响
标志位。六、控制转移指令1、LOOP
OPRD功能:用于控制重复执行一系列指令。指令执行前必须先
将重复次数放在CX寄存器中,每执行一次LOOP指令,CX自动减1。若减1后CX„0,则转移到指令指定的目标地址处继续循环;若自动减1后CX=0,则结束循环,顺序执行
LOOP指令的下一条指令。指令LOOPAGAIN相当于DECCXJNZAGAIN六、控制转移指令例;将设有八种商品,其价格分别是83元、76元、、、58元(见OLD表);现将每种商品提价7元,编程计算提价后的商品价格程序段:OLD DB
83H,76H,65H,84HDB
71H,49H,62H,58HNEW
DB
8DUP(?)…MOV
CX,08HMOV
BX,0NEXT:
MOV
AL,OLD[BX
]ADD
AL,7DAAMOVINCNEW[BX
]
,ALBXLOOP
NEXT…2、LOOPE/LOOPZ
相等或结果为0且CX≠0时循环格式:LOOPE 标号LOOPZ
标号功能:用于控制重复执行一组指令。指令执行前,先将重复次数送到CX中,每执行一次指令,CX自动减1,减1后:若CX„0且ZF=1,则转到指令所指定的标号处重复执行;若CX=0或ZF=0,便退出循环,顺序执行下一条指令。例:设在BUF1开始的内存中有一个由50个字节组成的数组,现要对数组中的元素进行测试,直到找到第一个非0元素或查完了为止。LOOPEAG程序段:LEA
SI,BUF1DEC
SIMOV
CX,50AG:
INC
SICMP [
SI],0六、控制转移指令3、LOOPNE/LOOPNZ不相等或结果不为0循环格式:LOOPNELOOPNZ标号标号功能:用于控制重复执行一组指令。指令执行前,先将重复次数送到CX中,每执行一次指令,CX自动减1,若减1后CX„0且ZF=0,则转到指令所指定的标号处重复执行;若CX=0或ZF=1,便退出循环,顺序执行下一条指令。六、控制转移指令4、调用与返回指令①调用指令指令格式:CALL 过程名执行CALL指令时,首先保留断点于堆栈中,然后转移到目标单元。该指令的执行对标志寄存器无影响。过程调用有段内调用和段间调用两种类型。六、控制转移指令CALL指令和被调用的过程在同一代码段中。段内直接调用:CALL指令后面直接书写过程名的标号,即指令中给出了偏移量。执行的操作是:(SP)
-2 SP
,
IP
入栈;(IP)
+
偏移量
IP
(给出目标地址)段内调用:例:CALL PROG-N
:PROG-N是一个近标号,设调用前:CS=2000H,IP=1050H,SS=5000H,SP=0100H,PROG-N与CALL指令的字节距离(DISP)为1234H,则指令执行过程为:SP-2→ SP,SP=0100-2=00FEH六、控制转移指令段内间接调用:CALL指令中指定的16位通用寄存器或存储单元的内容为目标地址。段内调用:例:指令CALL
BX
设
(BX)
=
0200H解:该指令的操作数是BX寄存器,它包含了过程的16位偏移地址EA=0200H,执行CALL指令后,0200H→IP,即转到段内偏移地址为
0200H处执行程序。例:DS=1000H,BX=200H,SI=300H,(10500H)=3210H;执行指令
CALL WORD
PTR
[BX+SI]
后,IP=(
DS
*
16+BX+SI)=(10500H)=3210H六、控制转移指令段间调用:。CALL指令和被调用的过程不在同一代码段中段间直接调用指令:目标地址直接在CALL指令中,该指令操作为:SP减2,把现行的码段寄存器CS的内容入栈,CS由指令中包含的段字代替。SP又一次减2,
IP入栈,且IP由在指令中的地址偏移字代替。例:CALLFAR
PROG-F
:PROG-F是一个远标号,设调用前:CS=1000H,IP=205AH,SS=2500H,SP=0050H,PROG-F所在单元的地址指针CS=3000H,IP=0500H,则指令执行过程为:SP-2→SP,SP=0050H-2=004EH,CS=1000H入栈;SP-2→SP,SP=004EH-2=004CH,IP=205FH入栈;转子程序入口,3000H送CS,0500H送IP;实现调用六、控制转移指令段间间接调用指令:这类指令的操作数必须是存储单元,从该单元开始存放的双字表示过程的入口地址,其中前2个字节是偏移量,后两个字节为代码段基地址。指令中用
DWORD PTR说明是对存储单元进行双字操作。的CS:IP
分别为:(10200H)=IP(10202H)
=
CS即(IP)=31F4H(CS)=5200H段间调用:例:CALL
DWORD
PTR [
BX
]设执行
CALL
指令前, (DS)
=
1000H
, (BX)
=
0200H
,(10200H)
=
31F4H
, (10202H)
=
5200H
。执行指令时,先将返回地址的偏移量和段地址都入栈,再转向过程入口。指令中操作数的物理地址=DS·16+BX=10200H,从该单元开始取得的双字就是过程的入口地址。所以,入口地址六、控制转移指令4、调用与返回指令②
RET指令:该通常作为一个子程序的最后一条指令,它用以返回到调用这个子程序的断点处。段内返回指令是把SP所指的堆栈顶部的一个字的内容弹回到指令指针,且SP加2。若是段间返回指令,除了上述操作外,把新的SP所指的堆栈顶部的一个字的内容弹回到CS,SP再加2。
RET指令对标志位无影响。六、控制转移指令②RET
指令:(续)RET
n
(带立即数返回指令):这种指令允许返回地址出栈后,再从堆栈中弹出
n个字节的数据,也就是让SP再加上
n,n为0000~FFFFH范围内的任何一个偶数。例如,指令RET 8表示从堆栈中弹出地址后,再使SP
的值加上8。RET
n
指令可以让调用过程的主程序通过堆栈向过程传递参数。这些参数必须在调用过程前推入堆栈,过程在运行中可以通过堆栈指针找到它们。当过程返回时,这些参数已没有用处,应该把它们从堆栈中弹出。使用带立即数返回指令后,可以在过程返回主程序时,使SP自动增量,从而不需要用POP指令就能把这些参数从堆栈中弹出。六、控制转移指令4.
中断指令中断的概念所谓中断是指计算机在执行正常的程序的过程中,由于某些事件发生,需要暂时终止当前程序的运行,转到中断服
务程序去为临时发生的事件服务,中断服务程序执行完毕后,又返回正常程序继续运行,这个过程称为中断。六、控制转移指令4.
中断指令8088的中断源分为内部中断和外部中断内部中断包括:除法运算出错和溢出错误等,或是为便于对程序进行调试而设置的。此外,也可在程序中安排中断指令
INT
n
,产生内部中断。外部中断主要用以处理I/O设备与CPU之间的通信等。当
CPU响应中断时,需要保存IP当前值,保存标志位等,然后通过一个中断向量表,实现间接调用。六、控制转移指令4.
中断指令①
软件中断指令
INT
n
;n
=
0
~
255操作:CPU先将标志寄存器内容入栈保护,再把当前断点的段基地址CS和偏移地址IP入栈保护,并清除中断标志
IF和单步标志TF。然后将中断类型号n
乘以4,找到中断服务程序的入口地址表的表头地址,从中断向量表中获得中断服务程序的入口地址,将其置入CS和IP寄存器,
CPU就自动转到相应的中断服务程序中去执行。六、控制转移指令②INTO
溢出中断指令当带符号数进行算术运算时,如果溢出标志
OF=1,则可由INTO指令产生类型为4的中断,若OF=0,则INTO指令不产生中断,CPU继续往下执行指令。为此,在带符号数算术运算指
令之后,应安排一条INTO指令,一旦溢出就能
及时向CPU提出中断请求。六、控制转移指令③IRET
中断返回指令所有中断服务程序的最后一条指令必须是
IRET,用以退出中断过程,返回到断点处。该指令执行时,先从堆栈中依次弹出程序断点,送到
IP和CS寄存器中,接着弹出标志寄存器的内容,送回标志寄存器,然后按CS:IP的值使CPU返回断点,继续执行原来被中断的程序。六、控制转移指令JCXZOPRD测试转移指令功能:根据CX寄存器的内容是否为0,使程序产生分支,进入不同程序段。若(CX)=0,则转移。六、控制转移指令JCXZ
若CX为0
转移指令格式:JCXZ 标号功能:若CX寄存器为零,则转移到指令中标号所指定的地址处,否则将往下顺序执行,它不对CX寄存器进行自动减1的操作。这条指令主要用在循环程序开始处。为了要使程序跳过循环,只要事先把CX寄存器清零。六、控制转移指令七、串操作指令*
串操作指令是用于处理存放在存储器中的字或字节数据,字符串长度可达64K字节。*串操作指令共有五种基本指令,可以对字符串进行传送、比较、搜索及存和取操作。*在串操作指令前加重复前缀,指令就重复执行,直至CX寄存器中的操作次数满足为止,重复过程
可以被中断。*串操作指令的源串位于当前数据段中,以SI为指针,目的串必须位于当前附加段中,以DI为指针。每执行一次串操作指令,指针SI和DI会自动修改,标志位DF=0为递增方向,这时在每次操作后SI、DI增量,字节操作时加1,字操作时加2;DF=1为递减方向,这时在每次操作后SI、DI减量,字节操作时减1,字操作时减2。*要处理的字符串长度(字节或字数)放在CX寄存器中。七、串操作指令1、MOVS串传送指令(不影响标志位)格式:1)
MOVS
OPRD1,OPRD22)MOVSB
(字节传送指令)MOVSW
(字传送指令)功能:把由SI作指针的源串中的一个字节或一个字,传送到由DI作指针的目的串中,且自动修改指针SI和DI。可方便地实现在存储单元之间传送数据。若在指令前加前缀REP
则可执行至CX=0
。七、串操作指令例:编写程序段把数据段中以SRC为偏移地址,长度为
100个字节的字符串,传送到附加段中以LOC为偏移地址的存储区域中。SI,SRCDI,LOCCX,100;清除DF,地址增量程序段:LEALEAMOVCLDREP
MOVSBAGAIN:MOVSDECJNZLOC,SRCCXAGAIN指令REP
MOVSB也可用几条指令代替七、串操作指令2)CMPSB
(字节操作)CMPSW
(字操作)功能:将以SI为指针的源串中的一个字(或字节)与DI为指针的目的串中的一个字(或字节)相比较(相减),但不影响操作数,结果反映在标志位上,同时相应修改源串和目的串的指针,指向串中的下一个元素。标志位:AF、CF、OF、PF、ZF和SF反映两个串的相应元素之间的关系。2、CMPS串比较指令格式:1)
CMPS
OPRD1,OPRD2在CMPS指令前可以加重复前缀,即REPECMPS或REPZ CMPS
;其功能相同,若比较结果为CX≠0(指定的长度还未比较完)和ZF=1(两串相等),则重复比较,直至CX=0(比完了)或ZF=0(两串不相等)时才停止操作。也可改用重复前缀REPNE或REPNZ,它们表示:若
CX≠0(串没有结束)和串不等(ZF=0)则重复比较,直至CX=0或ZF=1时才停止比较。例:在自KA和KB单元开始各有一个由30个字符组成的字符串,检查这两个字符串是否相等,并在GG单元中建立一个标志(相等为00,不等为FFH)初始化(KA)和(KB)相应字符比较串相等否?0送GGFF送GG暂停YN程序段:LEA
SI,KALEA
DI,KBMOV
CX,30CLDREPE
CMPSBJNZ
L1MOV
GG,0JMP
L2L1:
MOV
GG,0FFHL2:
HLT初始化:KA指针送SIKB指针送DI串长送CX指针增量变化功能:
*
将AL(字节操作)或AX(字操作)的内容减去附加段中以DI为指针的目的串元素,结果反映在标志位上,但不改变目的串元素及累加器的内容。*操作后自动修改指针DI,使之指向下一个待搜索的串元素。3、SCAS串搜索指令格式:1)
SCAS
目的串2)
SCASB
或SCASW利用SCAS指令,可在内存中搜索所需要的数据(关键字)。指令执行前应先将关键字存放在累加器中。SCAS指令前也可加重复前缀REPE/REPZ,表示相等继续搜索,不等提前退出; REPNE/REPNZ表示不等继续搜索,相等提前退出。七、串操作指令例:内存中以BUF0单元开始的区域连续存放着一个长度为80的字符串(ASCII码串),查找字符串中是否有字符‘B’,若有,将关键字的地址送BX,若没有查到,则将BX寄存器清0。块首址送DI关键字送AL块长送CX增量调整指针搜索关键字搜索到否?块指针减一0送BX暂停YNDI送BX程序段:LEA
DI,BUF0MOV AL,‘
B’MOV
CX,80CLDREPNE
SCASBJZ
NEXTMOV
BX,0JMP
DONENEXT:
DEC
DIMOV
BX,DIDONE:
HLT功能:把数据段中以SI为指针的串元素,传送到AL(字节操作)或AX(字操作)中,同时修改SI,使它指向串中的下一个元素。
该指令一般不加重复前缀。4、LODS从串中取指令格式:1)
LODS
SRC2)LODSB或LODSW例:设
(DS)
=
7000H, (SI)
=0100H,(70100H)
=08H,
(70101H)
=12H,
DF=0,执行指令
LODSW
后,(AX)
=1208H,
(SI)
=
0102H
.七、串操作指令功能:把累加器AL或AX中的一个字节或字,传送到附加段中以DI为目标指针的目的串中,同时修改指针DI,以指向串中的下一个单元。STOS指令可与REP重复前缀连用,即执行指令REPSTOS,能方便地用累加器中的一个常数,对一个数据串进行初始化。5、STOS存入串指令格式:1)
STOS
OPRD2)STOSB
或STOSW例:设(DS)=2000H,(ES)=1000H,(DI)
=
0500H
,
(AL)
=20H
,
(CX)
=10
,
DF
=0执行指令REP STOSB
后,内存中10500H
~
10509H单元被置为20H,同时使
(DI)=050AH,(CX)=0。七、串操作指令例:在以BLOCK为起始地址的内存缓冲区中,有一个长度为100
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 乡村旅游与旅游教育:2025年文旅融合的人才培养模式报告
- 政策与技术双重驱动下的在线教育变革
- 企业内部员工健康监测的智能监控与反馈机制研究
- 互动式教育游戏的开发与实施
- 四川省乐山市高三下学期第三次调查研究考试政治试题-1
- 工艺员理论知识培训课件
- 中药热敷包创新创业项目商业计划书
- 传统养生服务推广创新创业项目商业计划书
- 动物属性测试题目及答案
- 2025届湖北省鄂州市鄂城区九上数学期末联考试题含解析
- 成都国资委采购管理办法
- 提高情商的培训课件
- JJG 597-2025交流电能表检定装置检定规程
- 2025年广州市中考物理试题(含答案)
- 2024年漳州市常山开发区招聘笔试真题
- (2025年)江西省景德镇市【辅警协警】笔试真题含答案
- 大型活动保安活动方案
- 礼仪培训ptt课件
- 服务外包合同服务外包协议
- 定额〔2025〕1号文-关于发布2018版电力建设工程概预算定额2024年度价格水平调整的通知
- 2024年反洗钱知识竞赛参考题库400题(含答案)
评论
0/150
提交评论