汇编语言8086的指令系统方案课件_第1页
汇编语言8086的指令系统方案课件_第2页
汇编语言8086的指令系统方案课件_第3页
汇编语言8086的指令系统方案课件_第4页
汇编语言8086的指令系统方案课件_第5页
已阅读5页,还剩173页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第二章8088指令系统第二章教学重点重点掌握常用指令功能及应用常用传送指令加减法指令逻辑运算和移位指令控制转移指令字符(串)输入输出功能调用教学重点重点掌握常用指令功能及应用本节主要指令系统①数据传送类指令:

MOV/XCHG、PUSH/POP、LEA②算术运算类指令:

ADD/ADC/INC、SUB/SBB/DEC/CMP/NEG、

MUL/IMUL、DIV/IDIV③位操作类指令:

AND/OR/XOR/NOT/TEST④控制转移类指令:

JMP/Jcc/LOOP、CALL/RET、INTn⑤处理机控制类指令NOP本节主要指令系统①数据传送类指令:MOV/XCHG、PU什么是指令系统计算机的指令系统就是指该计算机能够执行的全部指令的集合每种计算机都有它支持的指令集合16位8086指令系统是Intel80x86系列微处理器指令系统的基础Intel80x86系列微处理器指令系统:整数指令浮点指令多媒体指令什么是指令系统计算机的指令系统就是指该计算机能够执行的全部指8086指令系统概述Intel8086指令系统共有117条基本指令可分成6个功能组①数据传送类指令②算术运算类指令③位操作类指令④串操作类指令⑤控制转移类指令⑥处理机控制类指令如何学习8086指令系统概述Intel8086指令系统共有117条学习指令的注意事项指令的功能——该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或其缩写形式指令支持的寻址方式——该指令中的操作数可以采用何种寻址方式指令对标志的影响——该指令执行后是否对各个标志位有影响,以及如何影响其他方面——该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等学习指令的注意事项指令的功能——该指令能够实现何种操作。通常汇编语言指令格式由4部分组成:标号:指令助记符目的操作数,源操作数;注释

标号表示该指令在主存中的逻辑地址

每个指令助记符就代表一种指令

目的和源操作数表示参与操作的对象

注释是对该指令或程序段功能的说明汇编语言指令格式由4部分组成:标号表示该指令在主存中的逻辑教学提示全面而准确地理解每条指令的功能和应用,是编写汇编语言程序的关键逐个展开指令教学提示全面而准确地理解每条指令的功能和应用,是编写汇编语言2.1数据传送类指令数据传送是计算机中最基本、最重要的一种操作传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位置除标志寄存器传送指令外,均不影响标志位重点掌握MOVXCHGPUSHPOPLEA2.1数据传送类指令数据传送是计算机中最基本、最重要的一2.1.1通用数据传送指令提供方便灵活的通用传送操作有3条指令MOVXCHGXLATMOVXCHGXLAT2.1.1通用数据传送指令提供方便灵活的通用传送操作MO1.传送指令MOV(move)把一个字节或字的操作数从源地址传送至目的地址MOVreg/mem,imm;立即数送寄存器或主存例题2.1MOVreg/mem/seg,reg;寄存器送(段)寄存器或主存例题2.2MOVreg/seg,mem;主存送(段)寄存器例题2.3MOVreg/mem,seg;段寄存器送寄存器或主存例题2.51.传送指令MOV(move)把一个字节或字的操作数从源地例2.1:立即数传送moval,4 ;al←4,字节传送movcx,0ffh ;cx←00ffh,字传送movsi,200h ;si←0200h,字传送movbyteptr[si],0ah;byteptr属性修饰符,说明是操作数为字节movwordptr[si+2],0bh;wordptr说明是字操作

注意立即数是字节量还是字量明确指令是字节操作还是字操作MOV例2.1:立即数传送moval,4 ;al←4,字节传送例2.2:寄存器传送movax,bx ;ax←bx,字传送movah,al ;ah←al,字节传送movds,ax ;ds←ax,字传送mov[bx],al ;[bx]←al,字节传送MOV例2.2:寄存器传送movax,bx ;ax←bx,字传送例2.3:存储器传送moval,[bx]movdx,[bp] ;dx←ss:[bp]moves,[si] ;es←ds:[si]

不存在存储器向存储器的传送指令MOV例2.3:存储器传送moval,[bx]不存在存储器向存例2.5:段寄存器传送mov[si],dsmovax,es ;ax←esmovds,ax ;ds←ax←es

对段寄存器的操作有一些限制MOV例2.5:段寄存器传送mov[si],ds对段寄存器的操MOV指令传送功能MOV并非任意传送立即数段寄存器CSDSESSS通用寄存器AXBXCXDXBPSPSIDI存储器MOV指令传送功能MOV并非任意传送立即数段寄存器通用寄存器非法传送种种两个操作数的类型不一致例如源操作数是字节,而目的操作数是字;或相反两个操作数不能都是存储器传送指令很灵活,但主存之间的直接传送却不允许段寄存器的操作有一些限制段寄存器属专用寄存器,对他们的操作能力有限示例示例示例非法传送种种两个操作数的类型不一致示例示例示例两个操作数的类型要一致绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令MOVAL,050AH;非法指令:050Ah为字,而AL为字节寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byteptr指示字节类型,wordptr指示字类型第2章两个操作数的类型要一致绝大多数双操作数指令,除非特别说明,目两个操作数不能都是存储器8086指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通过寄存器间接实现movax,buffer1;ax←buffer1(将buffer1内容送ax)movbuffer2,ax;buffer2←ax;这里buffer1和buffer2是两个字变量;实际表示直接寻址方式第2章两个操作数不能都是存储器8086指令系统不允许两个操作数都是要小心段寄存器的操作不允许立即数传送给段寄存器MOVDS,100H;非法指令:立即数不能传送段寄存器不允许直接改变CS值MOVCS,[SI]

;不允许使用的指令不允许段寄存器之间的直接数据传送MOVDS,ES;非法指令:不允许段寄存器间传送第2章要小心段寄存器的操作不允许立即数传送给段寄存器第2章2.交换指令XCHG(exchange)把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHGreg,reg/mem;reg

reg/mem例题2.7例题2.62.交换指令XCHG(exchange)把两个地方的数据进例2.6:寄存器间交换movax,1234h

;ax=1234hmovbx,5678h ;bx=5678hxchgax,bx;ax=5678h,bx=1234hxchgah,al ;ax=7856hXCHG例2.6:寄存器间交换movax,1234h ;ax=12例2.7:寄存器与存储器交换xchgax,[2000h]

;字交换;等同于

xchg[2000h],axxchgal,[2000h]

;字节交换;等同于

xchg[2000h],al

XCHG例2.7:寄存器与存储器交换xchgax,[2000h] 2.1.2堆栈操作指令什么是堆栈?堆栈是主存当中的一块连续的存储区域。有关堆栈的内容主要包括:堆栈的初始化数据的进栈数据的出栈2.1.2堆栈操作指令什么是堆栈?堆栈的初始化数据的进栈2.1.2堆栈操作指令堆栈的初始化堆栈如同一个倒置的水桶。◆正置水桶的情况水桶起始位置水面上沿水桶结束位置水桶起始位置水面上沿水桶结束位置(A)不装水(B)装水2.1.2堆栈操作指令堆栈的初始化堆栈如同一个倒置的水桶2.1.2堆栈操作指令◆倒置水桶的情况水桶开始位置水面上沿水桶结束位置水桶开始位置水面上沿水桶结束位置(A)不装水(B)装水说明:装水前和装水后比较水桶开始位置不变,水面结束位置不变,水面上沿变化2.1.2堆栈操作指令◆倒置水桶的情况水桶开始位置水面上2.1.2堆栈操作指令堆栈的情况与倒置水桶类似堆栈初始化的情况如下:主存高地址低地址①设置堆栈段寄存器(设置倒置的水桶开始位置)SSXXXXH②设置堆栈指针寄存器设置水桶的结束位置和水面上沿SPYYYYHSS:00SS:SP共SP个存储单元2.1.2堆栈操作指令堆栈的情况与倒置水桶类似堆栈初始化2.1.2堆栈操作指令高地址低地址SS:00SS:SP0(初设值)堆栈压入数据前后的比较SS:00SS:SP0SS:SP0-234H12H未装入数据装入3412H后2.1.2堆栈操作指令高地址低地址SS:00SS:SP02.1.2堆栈操作指令三个名词(水桶的三个位置)堆栈起始地址:堆栈存储区域开始的地址,即SS:00。(如果不重新初始化堆栈,它是不变的)栈底:初始化时的SS:SP。(如果不重新初始化堆栈,它是不变的)栈顶:当前的SS:SP。由于SP值会随着压入数据,或者弹出数据而改变,因此栈顶位置是变化的。更确切的说:栈顶实际上是堆栈中存储的数据的顶部2.1.2堆栈操作指令三个名词(水桶的三个位置)堆栈起始堆栈的操作堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POPWord1Word2Word3Word4Word5StackPUSHPOPPUSH

;进栈指令先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部POP

;出栈指令把栈顶的一个字传送至指定的目的操作数,然后堆栈指针SP加2高低堆栈的操作堆栈只有两种基本操作:进栈和出栈,Word1Wo1.进栈指令PUSHpushaxpush[2000h]PUSHr16/m16/seg操作过程:①SP←SP-2②SS:[SP]←r16/m16/seg12StackPUSHSP-2AX内容:34执行PUSHAX过程1.进栈指令PUSHpushaxPUSHr16/m162.出栈指令POPpopaxpop[2000h]POPr16/m16/seg;r16/m16/seg←SS:[SP];SP←SP+212StackPOPSP+234AX内容:执行POPAX过程2.出栈指令POPpopaxPOPr16/m16/se堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据堆栈常用来临时存放数据传递参数保存和恢复寄存器例题2.11堆栈的特点堆栈操作的单位是字,进栈和出栈只对字量例题2.11例2.11:现场保护恢复pushax ;进入子程序后pushbxpushds...popds ;返回主程序前popbxpopax例2.11:现场保护恢复pushax ;进入子程序后堆栈和队列堆栈:按照后进先出(LIFO)的原则组织的存储器空间(栈)队列:按照先进先出(FIFO)的原则组织的存储器空间(堆)LIFOFIFO堆栈和队列堆栈:按照后进先出(LIFO)的原则组织的存储器空2.1.3.标志位操作标志位操作指令直接对CF、DF、IF标志进行复位或置位,常用于特定的情况对标志位进行设置的指令CLCSTCCMCCLDSTDCLISTI2.1.3.标志位操作标志位操作指令直接对CF、DF、IF进位标志操作指令用于任意设置进位标志CLC

;复位进位标志:CF←0STC

;置位进位标志:CF←1CMC

;求反进位标志:CF←~CF参考动画进位标志操作指令用于任意设置进位标志参考动画中断标志操作指令在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止CLI

;复位中断标志:DF←0STI ;置位中断标志:DF←1中断标志操作指令在编写中断服务程序时,需要控制可屏蔽中断的允2.1.4地址传送指令地址传送指令将存储器单元的逻辑地址送至指定的寄存器有效地址传送指令LEA注意不是获取存储器单元的内容2.1.4地址传送指令地址传送指令将存储器单元的逻辑地址有效地址传送指令LEA(loadEA)将存储器操作数的有效地址传送至指定的16位寄存器中例题2.13LEAr16,mem;r16←mem的有效地址EA

获得主存单元的有效地址;不是物理地址,也不是该单元的内容可以实现计算功能有效地址传送指令LEA(loadEA)将存储器操作数的有效例2.13:获取有效地址使用时要注意它与MOV指令的区别,MOV指令传送的一般是源操作数中的内容而不是地址。例1假设:SI=1000H,DS=5000H,(51000H)=1234H执行指令LEABX,[SI]后,BX=1000H执行指令MOVBX,[SI]后,BX=1234HLEA例2.13:获取有效地址使用时要注意它与MOV指令的区别,M2.1.5输入输出指令(IN、OUT)CPU通过输入输出指令与外设(外部设备)进行数据交换;8086CPU只能通过输入输出指令与外设进行数据交换CPU与外设进行数据交换的途径: 通过访问端口(Port)或者叫I/O地址 来访问外设几点说明CPU端口外设2.1.5输入输出指令(IN、OUT)CPU通过输入输出2.1.5输入输出指令(IN、OUT)端口地址范围8086用于寻址外设端口的地址线为16条,端口最多为216=65536(64K)个;端口号为0000H~FFFFH每个端口的宽度可以从(向)每个端口读出(写入)一个字节的外设数据2.1.5输入输出指令(IN、OUT)端口地址范围输入输出寻址方式8086的端口有64K个,无需分段,设计有两种寻址方式直接寻址:只用于寻址00H~FFH前256个端口,操作数i8表示端口号DX间接寻址:可用于寻址全部64K个端口,DX寄存器的值就是端口号大于FFH的端口只能采用间接寻址方式输入输出寻址方式8086的端口有64K个,无需分段,设计有两外设数据的存放位置CPU与外设进行数据交换时,读出或写入的数据存放的位置只能是:AL(读取8位数据时)AX(读取16位数据时) 由内部电路结构决定外设数据的存放位置CPU与外设进行数据交换时,读出或写入的数IN和OUT左操作数是目的,右操作数是源。IN的左操作数被限制为AX或AL,OUT的右操作数被限制为AX或AL.IN和OUT左操作数是目的,右操作数是源。IN的左操作数被限输入指令IN将外设数据传送给CPU内的AL/AXINAL,i8;字节输入:AL←I/O端口(i8直接寻址)INAL,DX;字节输入:AL←I/O端口(DX间接寻址)INAX,i8;字输入:AX←I/O端口(i8直接寻址)INAX,DX;字输入:AX←I/O端口(DX间接寻址)例题2.15输入指令IN将外设数据传送给CPU内的AL/AXINAL,例2.15:输入字量;直接寻址,字节量输入inal,21hmovah,alinal,20h;直接寻址,字量输入inax,20h;间接寻址,字量输入movdx,20hinax,dxIN例2.15:输入字量;直接寻址,字节量输入IN输出指令OUT将CPU内的AL/AX数据传送给外设OUTi8,AL;字节输出:I/O端口←AL(i8直接寻址)OUTDX,AL;字节输出:I/O端口←AL(DX间接寻址)OUTi8,AX;字输出:I/O端口←AX(i8直接寻址)OUTDX,AX;字输出:I/O端口←AX(DX间接寻址)例题2.16输出指令OUT将CPU内的AL/AX数据传送给外设OUTi例2.16:输出字节量;间接寻址,字节量输出movdx,3fchmoval,80houtdx,alOUT例2.16:输出字节量;间接寻址,字节量输出OUT习题1.堆栈的操作原则是_____________。

A

先进先出

B

后进先出

C

后进后出

D

循环

2.“MOV

SP,

3210H”和“PUSH

AX”指令执行后,SP寄存器的值是_____________。

A

3211H

B

320EH

C

320FH

D

3212H

3.设SP初值为2000H,执行指令“push

ax”后,SP的值是_____

A

1FFFH

B

1998H

C

2002H

D

1FFEH

4.8086/8088系统中,堆栈的操作可以是字节或字操作。

1.B2.B3.D4.错。8086/8088系统中,堆栈的操作是字操作。

习题1.堆栈的操作原则是_____________。

A习题21假设当前SP=700H,执行pop

ax指令后,SP内容变为______

A

6FEH

B

6FFH

C

701H

D

702H2.已知字变量buffer等于1234h,它所在的偏移地址为5678h,执行下列指令后Ax=?

mov

ax,buffer

lea

ax,buffer

A

1234h

B

5678h

C

3412h

D

7856h3.用一条指令实现将AX←BX+SI的方法是______

A

xchg

ax,[bx][si]

B

mov

ax,[bx][si]

C

mov

ax,[bx+si]

D

lea

ax,[bx][si]

4.指令“lea

ax,[bx+di+50]”的功能是什么?1.D2.B3.D4.指令“lea

ax,[bx+di+50]”可以实现AX←BX+DI+50的功能。

习题21假设当前SP=700H,执行pop

ax指令后,SP习题31、假设SS=2000H,SP=0100H,AX=2021H,执行命令PUSHAX,存放数据21H的堆栈区的物理地址是()A、20102HB、20101HC、200FFHD、200FEH2、假定DS=4000HDI=0100H[40100H]=55H[40101H]=AAH,执行”LEABX,[DI]”后,BX=()A、AA55HB、55AAHC、0100HD、4100H1D2C习题31、假设SS=2000H,SP=0100H,AX=202.2算术运算类指令四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的四则运算请注意算术运算类指令对标志的影响掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMP熟悉:MUL/IMUL、DIV/IDIV理解:CBW/CWD、DAA/DAS、AAA/AAS/AAM/AAD2.2算术运算类指令四则运算是计算机经常进行的一种操作。加法指令ADD功能:ADD指令将源与目的操作数相加,结果送到目的操作数对状态标志的影响:ADD指令按状态标志的定义相应设置状态标志ADDreg,imm/reg/mem

;reg←reg+imm/reg/memADDmem,imm/reg

;mem←mem+imm/reg例题2.17a加法指令ADD功能:ADDreg,imm/reg/mem例例2.17a:加法运算moval,0fbh ;al=0fbhaddal,07h

;al=02hmovwordptr[200h],4652h;[200h]=4652hmovbx,1feh

;bx=1fehaddal,bl ;al=00haddwordptr[bx+2],0f0f0h;[200h]=3742hADD例2.17a:加法运算moval,0fbh ;al=0fb带进位加法指令ADCADC指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数ADC指令按状态标志的定义相应设置状态标志ADC指令主要与ADD配合,实现多精度加法运算ADCreg,imm/reg/mem

;reg←reg+imm/reg/mem+CFADCmem,imm/reg

;mem←mem+imm/reg+CF例题2.17b带进位加法指令ADCADC指令将源与目的操作数相加,再加上进例2.17b:双字加法movax,4652h ;ax=4652haddax,0f0f0h ;ax=3742h,CF=1movdx,0234h ;dx=0234hadcdx,0f0f0h ;dx=f325h,CF=0;DX.AX=02344652H

+F0F0F0F0H

=F3253742HADC例2.17b:双字加法movax,4652h ;ax=46增量指令INC(increment)INC指令对操作数加1(增量)INC指令不影响进位CF标志,按定义设置其他状态标志INCreg/mem;reg/mem←reg/mem+1incbxincbyteptr[bx]增量指令INC(increment)INC指令对操作数加1(减法指令SUB(subtract)SUB指令将目的操作数减去源操作数,结果送到目的操作数SUB指令按照定义相应设置状态标志SUBreg,imm/reg/mem

;reg←reg-imm/reg/memSUBmem,imm/reg

;mem←mem-imm/reg例题2.18a减法指令SUB(subtract)SUB指令将目的操作数减去例2.18a:减法运算moval,0fbh ;al=0fbhsubal,07h

;al=0f4h,CF=0movwordptr[200h],4652h;[200h]=4652hmovbx,1feh

;bx=1fehsubal,bl ;al=0f6hsubwordptr[bx+2],0f0f0h;[200h]=5562h,CF=1SUB例2.18a:减法运算moval,0fbh ;al=0fb带借位减法指令SBBSBB指令将目的操作数减去源操作数,再减去借位CF(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志SBB指令主要与SUB配合,实现多精度减法运算SBBreg,imm/reg/mem

;reg←reg-imm/reg/mem-CFSBBmem,imm/reg

;mem←mem-imm/reg-CF例题2.18b带借位减法指令SBBSBB指令将目的操作数减去源操作数,再减例2.18b:双字减法movax,4652h ;ax=4652hsubax,0f0f0h ;ax=5562h,CF=1movdx,0234h ;dx=0234hsbbdx,0f0f0h ;dx=1143h,CF=1;DX.AX=02344652H

-F0F0F0F0H

=11435562HSBB例2.18b:双字减法movax,4652h ;ax=46减量指令DEC(decrement)DEC指令对操作数减1(减量)DEC指令不影响进位CF标志,按定义设置其他状态标志DECreg/mem;reg/mem←reg/mem-1deccxdecwordptr[si]INC指令和DEC指令都是单操作数指令主要用于对计数器和地址指针的调整减量指令DEC(decrement)DEC指令对操作数减1(求补指令NEG(negative)NEG指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位取反后加1NEG指令对标志的影响与用零作减法的SUB指令一样NEGreg/mem;reg/mem←0-reg/mem例题2.19求补指令NEG(negative)NEG指令对操作数执行求补例2.19:求补运算movax,0ff64hnegal;ax=ff9ch,OF=0、SF=1、ZF=0、PF=1、CF=1subal,9dh;ax=ffffh,OF=0、SF=1、ZF=0、PF=1、CF=1negax;ax=0001h,OF=0、SF=0、ZF=0、PF=0、CF=1decal;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=1negax;ax=0000h,OF=0、SF=0、ZF=1、PF=1、CF=0NEG例2.19:求补运算movax,0ff64hNEG比较指令CMP(compare)CMP指令将目的操作数减去源操作数,按照定义相应设置状态标志CMP指令执行的功能与SUB指令,但结果不回送目的操作数CMPreg,imm/reg/mem

;reg-imm/reg/memCMPmem,imm/reg

;mem-imm/reg例题2.20比较指令CMP(compare)CMP指令将目的操作数减去源例2.20:比较AL与100

cmpal,100

;al-100

jbbelow

;al<100,跳转到below执行

subal,100

;al≥100,al←al-100

incah

;ah←ah+1below: ...

执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等CMP例2.20:比较AL与100 cmpal,100 ;al-2.2.3乘法指令MULr8/m8;无符号字节乘法;AX←AL×r8/m8MULr16/m16;无符号字乘法;DX.AX←AX×r16/m16IMULr8/m8;有符号字节乘法;AX←AL×r8/m8IMULr16/m16;有符号字乘法;DX.AX←AX×r16/m162.2.3乘法指令MULr8/m8IMULr8/m8乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,隐含使用另一个操作数AX和DX字节量相乘:AL与r8/m8相乘,得到16位的结果,存入AX字量相乘:AX与r16/m16相乘,得到32位的结果,其高字存入DX,低字存入AX2.2.3乘法指令乘法指令分无符号和有符号乘法指令2.2.3乘法指令无符号和有符号乘法指令在功能上的区别无符号乘法,将两个操作数看成是无符号数。计算完成后,将两个操作数乘积存入相应寄存器有符号乘法,将两个操作数看成是有符号数补码。计算完成后,将两个操作数乘积存入相应寄存器例题无符号和有符号乘法指令在功能上的区别无符号乘法,将两个操作数例2.21:乘法运算moval,0b4h ;al=b4h=180movbl,11h ;bl=11h=17mulbl

;ax=Obf4h=3060;OF=CF=1,AX高8位不为0moval,0b4h ;al=b4h=-76movbl,11h ;bl=11h=17imulbl ;ax=faf4h=-1292;OF=CF=1,AX高8位含有效数字例2.21:乘法运算moval,0b4h ;al=b4h=乘法指令利用OF和CF判断乘积的高一半是否具有有效数值乘法指令利用OF和CF判断乘积的高一半是否具有有效数值乘法指令对标志的影响乘法指令如下影响OF和CF标志:MUL指令——若乘积的高一半(AH或DX)为0,则OF=CF=0;否则OF=CF=1IMUL指令——若乘积的高一半是低一半的符号扩展,则OF=CF=0;否则均为1乘法指令对其他状态标志没有定义

对标志没有定义:指令执行后这些标志是任意的、不可预测(就是谁也不知道是0还是1)对标志没有影响:指令执行不改变标志状态第2章乘法指令对标志的影响乘法指令如下影响OF和CF标志:对标志2.2.4除法指令DIVr8/m8

;无符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数DIVr16/m16 ;无符号字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余数IDIVr8/m8 ;有符号字节除法:AL←AX÷r8/m8的商,Ah←AX÷r8/m8的余数IDIVr16/m16

;有符号字除法:;AX←DX.AX÷r16/m16的商,DX←DX.AX÷r16/m16的余数例题2.22说明2.2.4除法指令DIVr8/m8 ;无符号字节除法:除法指令的功能除法指令分无符号和有符号除法指令除法指令的除数显式给出,隐含使用另一个操作数AX和DX作为被除数字节量除法:AX除以r8/m8,8位商存入AL,8位余数存入AH字量除法:DX.AX除以r16/m16,16位商存入AX,16位余数存入DX除法指令对标志没有定义除法指令会产生结果溢出第2章除法指令的功能除法指令分无符号和有符号除法指令第2章除法错中断当被除数远大于除数时,所得的商就有可能超出它所能表达的范围。如果存放商的寄存器AL/AX不能表达,便产生溢出,8086CPU中就产生编号为0的内部中断——除法错中断对DIV指令,除数为0,或者在字节除时商超过8位,或者在字除时商超过16位对IDIV指令,除数为0,或者在字节除时商不在-128~127范围内,或者在字除时商不在-32768~32767范围内第2章除法错中断当被除数远大于除数时,所得的商就有可能超出它所能表例2.22:除法运算movax,0400h ;ax=400h=1024movbl,0b4h ;bl=b4h=180divbl

;商al=05h=5

;余数ah=7ch=124movax,0400h ;ax=400h=1024movbl,0b4h ;bl=b4h=-76idivbl

;商al=f3h=-13

;余数ah=24h=36例2.22:除法运算movax,0400h ;ax=4002.2.5符号扩展指令CBW ;AL的符号扩展至AH;如AL的最高有效位是0,则AH=00;AL的最高有效位为1,则AH=FFH。AL不变CWD

;AX的符号扩展至DX;如AX的最高有效位是0,则DX=00;AX的最高有效位为1,则DX=FFFFH。AX不变什么是符号扩展符号扩展指令常用于获得倍长的数据例题2.23例题2.242.2.5符号扩展指令CBW ;AL的符号扩展至AHC符号扩展的概念符号扩展是指用一个操作数的符号位(即最高位)形成另一个操作数,后一个操作数的各位是全0(正数)或全1(负数)。符号扩展不改变数据大小对于数据64H(表示数据100),其最高位D7为0,符号扩展后高8位都是0,成为0064H(仍表示数据100)对于数据FF00H(表示有符号数-256),其最高位D15为1,符号扩展后高16位都是1,成为FFFFFF00H(仍表示有符号数-256)第2章符号扩展的概念符号扩展是指用一个操作数的符号位(即最高位)形例2.23:符号扩展moval,80h

;al=80hcbw

;ax=ff80haddal,255 ;al=7fhcbw

;ax=007fh例2.23:符号扩展moval,80h ;al=80h例2.24:AX÷BXcwd

;DX.AX←AXidivbx ;AX←DX.AX÷BX

对有符号数除法,可以利用符号扩展指令得到倍长于除数的被除数对无符号数除法,采用直接使高8位或高16位清0,获得倍长的被除数。这就是零位扩展例2.24:AX÷BXcwd ;DX.AX←AX对有符号数习题2.9设X、Y、Z、V均为16位带符号数,分别存放在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处?VZYX65F3020024E00500习题2.9设X、Y、Z、V均为16位带符号数,分别存放在X、习题2.9:算术运算1movax,XimulY

;DX.AX=X×Ymovcx,axmovbx,dx

;BX.CX=X×Ymovax,Zcwdaddcx,axadcbx,dx

;BX.CX=X×Y+Z习题2.9:算术运算1movax,X习题2.9:算术运算2subcx,540sbbbx,0;BX.CX=X×Y+Z-540movax,Vcwdsubax,cxsbbdx,bx;DX.AX=V-(X×Y+Z-540)idivX;DX.AX=(V-(X×Y+Z-540))÷X习题2.9:算术运算2subcx,540习题11.假设DS=1000H,阅读下列程序段,将注释内容补充完整.MOVAL,0FBHADDAL,07H;AL=(),OF=(),SF=(),ZF=(),CF=()MOVwordptr[0200H],4652HMOVBX,1FEHADDAL,BL;AL=(),OF=(),SF=(),ZF=(),CF=()ADDwordptr

[BX+2],0F0F0H;[10200H]=(),OF=(),SF=(),ZF=(),CF=()习题11.假设DS=1000H,阅读下列程序段,将注释内容补解答:02H,0001;00H,0011;3742H,0001分析:何种情况必须加类型说明符?只有将立即数传送到内存时即MOVmem,i8/i16时才需要在存储器寻址方式前加类型说明符,以便确定是字操作还是字节操作MOVAL,0FBHADDAL,07H以上两条指令完成加法运算中,字节相加的操作。ALAL+07H,即0FBH+07H=102H。取低8位,将右数第9位送到进位标志CF,加法指令对6个状态标志均有影响。所以:;AL=(),OF=(),SF=(),ZF=(),CF=()MOVwordptr[0200H],4652H此条语句是为实现字相加运算做准备,可移动到最后一句前面。MOVBX,1FEHADDAL,BL以上两句也是实现字节相加,不过寻址方式发生了变化,采用的都是寄存器寻址,加法运算同时影响标志寄存器的六个标志,AL<-AL+BL,即02H+FEH=100H,取低8位送入AL,注意BL中的内容不变,仍为FEH。按状态标志的定义即可得到:;AL=(),OF=(),SF=(),ZF=(),CF=()ADDwordptr

[BX+2],0F0F0H第三行语句为此为作准备工作,可移到此名之前也可。此名的目的是为了示范字相加运算,其中的目的地址为[BX+2],也即[0200H],此语名功能[0200H]<-[0200H]+F0F0H,4652H+F0F0H=13742H,取低16位,最高位送CF。;[10200H]=(),OF=(),SF=(),ZF=(),CF=()解答:02H,0001;00H,0011;3742H,02.编写一段程序,完成32位无符号数运算79582390H+53701178H和79582390H-53701178H将运算得到的32位结果中的高16位存放在DX寄存器中,低16位存放在AX寄存器中。3.将下列程序段中的注释部分补充完整。MOVAL,0F0HADDAL,10H;AL=(),CF=(),ZF=()INCAL;AL=(),CF=(),ZF=()2.编写一段程序,完成32位无符号数运算解答:加法MOVAX,2390HADDAX,1178H;先加低16位,将前一个加数的低16位,与后一个加数的低16位相加。相加完成后结果送入AX,如果有进位,则CF标志会被置1,否则CF=0,为下一次高16位相加时使用ADC命令作准备。MOVDX,7958HADCDX,5370H;完成高16位相加,并考虑低16位是否有进位,将结果存入DX寄存器减法MOVAX,2390HSUBAX,1178H;先减低16位,将前被减数的低16位,与减数的低16位相减。相减完成后结果送入AX,如果有借位,则CF标志会被置1,否则CF=0,为下一次高16位相减速时使用SBB命令作准备。MOVDX,7958HSBBDX,5370H;完成高16位相减,并考虑低16位是否有借位,将结果存入DX寄存器解答:加法解答:MOVAL,0F0HADDAL,10H以上指令完成字节加法运算F0H+10H=100H,取低8位送入AL,则AL=00H,另外对标志的影响,由于结果是00H,故ZF=1,有进位,故CF=1;AL=(00H),CF=(1),ZF=(1)INCALINC指令为自加1指令。在所有的加法和减法指令中(ADD/SUB,ADC/SBB,INC/DEC,CMP,NEG),只有INC/DEC,自加1/自减1指令对5个标志有影响(CF标志没有影响),其它指令对六个状态标志均有影响。本条指令中执行操作AL<-AL+1,即00H+1=01H,因CF不受影响,故;AL=(01H),CF=(1),ZF=(0)解答:4.执行如下指令后,MOVAX,5678HNEGAL寄存器AX=(),状态标志CF=(),ZF=()5.指出CMP指令和SUB指令在功能上的相同和不同之处4.执行如下指令后,解答:4.MOVAX,5678H

AH=56H,AL=78H即01111000NEGALAH=56H,AL=10000111+1=10001000即88H,NEG指令正常影响6个状态标志位;AX=5688H,CF=0,ZF=05.相同:都是将目的操作数与源操作数相减操作执行完成以后,都会影响六个状态标志不同:SUB指令在将两个操作数相减后,结果存入目的操作数.CMP指令在将两个操作数相减后,结果不送回目的操作数为什么要有CMP指令?在编程时,有时有必要知道一个寄存器或者存储器中的内容比一个常量大还是小,执行CMP指令可以将这个内容与常量相减而不改变寄存器或者是存储器中的内容,而影响CFZF标志,下一步我们就可以根据CFZF的值来判断大小关系.解答:6.指出执行下列程序段后,DX,AX寄存器中的内容(假设初始状态DX=1234H)MOVAX,02B4HMOVBX,1111HMULBL;DX=(),AX=()7指出执行下列程序段后,DX,AX寄存器中的内容(假设初始状态DX=1234H)MOVAX,02B4HMOVBX,1111HMULBX;DX=(),AX=()6.指出执行下列程序段后,DX,AX寄存器中的内容解答:6.MOVAX,02B4HMOVBX,1111H准备工作,设置AX,BXMULBL操作数是BL寄存器,说明是字节相乘,无符号数字节相乘隐含的另一个操作数是AL.即AX

AL*BL。AL=B4H,BL=11H,B4*11=BF4。故AX=0BF4H,DX不变;DX=(1234H),AX=(0BF4H)相关知识:MULR8/M8无符号字节相乘AXAL*R8/M8解答:解答:7.MOVAX,02B4HMOVBX,1111H准备工作,设置AX,BXMULBX操作数是BX寄存器,说明是字相乘,无符号数字相乘隐含的另一个操作数是AX.即DXAX

AX*BX。AX=02B4H,BX=1111H,02B4*1111=2E21F4。故AX=21F4H,DX=002EH;DX=(002EH),AX=(21F4H)相关知识:MULR16/M16无符号字相乘DX.AXAX*R16/M16解答:8.DS=8200H,SI=3942H,指令INCBYTEPTR[SI].操作数的物理地址是()A85B92HB95942HCBB420HD12142H9.执行DEC指令不影响的状态标志是()ACFBZFCOFDSF10.执行下列指令序列MOVAL,81HADDAL,ALADCAL,ALAL=()A04HB05HC204HD205H8B9A10B8.DS=8200H,SI=3942H,指令INCBYT10.若AX=2891H,则执行NEGAX后,CF和SF标志位的状态分别是()A00B01C10D1111.当执行ADDAX,BX指令后,奇偶标志PF=1,则下列叙述正确的是()A结果中含1的个数为偶数或0B结果中含1的个数为奇数C结果中含1的个数为偶数D结果中低8位含1的个数为偶数或010B11D10.若AX=2891H,则执行NEGAX后,CF和12.设AX=1000H,BX=2340H,在执行CMPAX,BX之后,AX=(),CF=(),ZF=()13。指令()不改变CF的内容A、DECALB、ADDAX,CXC、SUB[BX],CLD、SUBAL,DL14。若DS=1000H,BX=2000H,[12000H]=56H,[12001H]=78H,AX=1000H,执行ADDAX,[BX]指令后,AX=()A、8856HB、6678HC、8800HD、6600H解答:12。1000H,1,013。A14、A12.设AX=1000H,BX=2340H,在执行解答:122.3位操作类指令位操作类指令以二进制位为基本单位进行数据的操作这是一类常用的指令,功能简单、都应该掌握注意这些指令对标志位的影响1、逻辑运算指令ANDORXORNOTTEST与、或、异或、非、测试2、移位指令SHLSHRSALSAR逻辑左移、逻辑右移、算术左移、算术右移3、循环移位指令ROLRORRCLRCR左循环移位、右循环移位、带进位左循环移位、带进位右循环移位2.3位操作类指令位操作类指令以二进制位为基本单位进行数逻辑运算指令---AND功能:对两个操作数执行逻辑与运算,结果送到目的操作数对标志的影响:AND指令设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义。注意:所有的双操作数逻辑指令均设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义。包括:ANDORXORTEST而NOT是单操作数,它不影响任何标志。ANDdest,src ;des←des∧src例如:MOVAX,FF00HMOVBX,F0F0HANDAX,BXAX=F000H将AX和BX中的内容对齐后,只有上下都是1结果才是1AND逻辑运算指令---AND功能:对两个操作数执行逻辑与运算,结逻辑运算指令---OR对两个操作数执行逻辑或运算,结果送到目的操作数对标志的影响:OR指令双操作数,设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义ORdest,src ;dest←dest∨src例如:MOVAX,FF00HMOVBX,F0F0HORAX,BXAX=FFF0H将AX和BX中的内容对齐后,只有上下有一个是1结果就是1逻辑运算指令---OR对两个操作数执行逻辑或运算,结果送到逻辑运算指令---XOR对两个操作数执行逻辑异或运算,结果送到目的操作数对标志的影响:XOR指令双操作数,设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义XORdest,src ;dest←dest⊕src

只有相“异或”的两位不相同,结果才是1;否则,结果为0,可记为“异1”即相异为1,否则为0例如:MOVAX,FF00HMOVBX,F0F0HXORAX,BXAX=0FF0H逻辑运算指令---XOR对两个操作数执行逻辑异或运算,结果逻辑运算指令---NOT对一个操作数执行逻辑非运算NOT指令是一个单操作数指令NOT指令不影响标志位NOTreg/mem ;reg/mem←~reg/mem

按位取反,原来是“0”的位变为“1”;原来是“1”的位变为“0”例如:MOVAX,FF00HNOTAXAX=00FFHNOT与NEG区别逻辑运算指令---NOT对一个操作数执行逻辑非运算NOT指例题:逻辑运算各指令功能演示指令AND功能moval,45h ;逻辑与al=01handal,31h

;CF=OF=0,SF=0、ZF=0、PF=0指令OR功能moval,45h

;逻辑或al=75horal,31h

;CF=OF=0,SF=0、ZF=0、PF=0指令XOR功能moval,45h

;逻辑异或al=74hxoral,31h

;CF=OF=0,SF=0、ZF=0、PF=1指令NOT功能moval,45h

;逻辑非al=0bahnotal

;标志不变例题:逻辑运算各指令功能演示指令AND功能例题:逻辑指令应用;AND指令可用于复位某些位(同0相与),不影响其他位:将BL中D3和D0位清0,其他位不变andbl,11110110B;OR指令可用于置位某些位(同1相或),不影响其他位:将BL中D3和D0位置1,其他位不变orbl,00001001B;XOR指令可用于求反某些位(同1相异或),不影响其他位:将BL中D3和D0位求反,其他不变xorbl,00001001B例题:逻辑指令应用;AND指令可用于复位某些位(同0相与),逻辑运算指令---TEST对两个操作数执行逻辑与运算,结果不回送到目的操作数TEST指令设置CF=OF=0,根据结果设置SF、ZF和PF状态,而对AF未定义TESTdest,src

;dest∧src只有相“与”的两位都是1,结果才是1;否则,“与”的结果为0MOVAX,FF00HMOVBX,F0F0HTESTAX,BXAX=FF00H,ZF=0,SF=1,PF=1逻辑运算指令---TEST对两个操作数执行逻辑与运算,结果例2.32:测试为0或1testal,01h

;测试AL的最低位D0如果AL=XXXXXXX0,则其与01H相与后,结果为00H如果AL=XXXXXXX1,则其与01H相与后,结果为01Hjnzthere

;标志ZF=0,即D0=1

;则程序转移到there...

;否则ZF=1,即D0=0,顺序执行there:...TEST指令通常用于检测一些条件是否满足,但又不希望改变原操作数的情况TEST例2.32:测试为0或1testal,01h ;测试AL的1、将寄存器DX的内容乘以2的正确指令是A、SHRDX,1B、SHLDX,1C、RORDX,1D、ROLDX,12、下列指令执行后,将改变AL的内容的指令是A、TESTAL,80HB、ORAL,ALC、ADDAL,80HD、CMPAL,80H3、编写分支程序,在进行条件判断以前,可用指令构成条件,其中不能形成条件的指令是A、CMPB、SUBC、ANDD、MOV4、下列指令中,不影响标志位CF的指令是A、CLCB、ANDAL,ALC、SALAL,1D、INCAL解答:1B2C3D4D1、将寄存器DX的内容乘以2的正确指令是解答:1B2C3D5、下列指令执行后,总是使CF=OF=0的是A、ANDB、NEGC、NOTD、INC6、设AX=0012H,BX=0034H,那么下述程序段MOVCL,8ROLAX,CLORAX,BX执行后,AX=()A、1234HB、3412HC、0046HD、0034H7、设AX=1000H,执行NEGAXNOTAX指令后,AX=()A、1001HB、0FFFHC、1000HD、0111H5A6A7B5、下列指令执行后,总是使CF=OF=0的是5A6A7B8、要完成将累加器AL清零,并使进位标志CF清零,下列指令中错误的是()A、MOVAL,0B、ANDAL,0C、XORAL,ALD、SUBAL,AL9、AX=0211H,执行指令ANDAX,0FFH后,AX=()A、0211HB、02FFHC、0011HD、00FFH10、若AL=10101101b,为使AL的内容变成01010010B,下列()指令可完成此操作。A、NOTALB、ORAL,ALC、ANDAL,ALD、XORAL,AL11、执行下列指令,MOVAX,1234HMOVCL,2SHLAX,CL后AX=()A、1230HB、48C0HC、2468HD、5678H解答:8A9C10A11C8、要完成将累加器AL清零,并使进位标志CF清零,下列指令12、指令SAR可用来对()数除以2,指令SHR可用来对()数除以2,MULBX指令的结果存放在()和()寄存器中。13、AX=A33AH,DX=F0F0H,执行下述指令

ANDAH,DLXORAL,DHNEGAHNOTAL后,AH=()AL=()14、现有下列程序段,MOVAX,6540HMOVDX,3210HMOVCL,4SHLDX,CLMOVBL,AHSHLAL,CLSHRBL,CLORDL,BL上述程序运行后,AX=()BL=()DX=()12、有符号数,无符号数,DX,AX13、60H35H14、6500H06H2100H12、指令SAR可用来对()数除以2,指令SHR可用来对(15、分析下列程序段MOVAL,200SARAL,1MOVBL,ALMOVCL,2SARAL,CLADDAL,BL程序段执行后,AL=()BL=()AL=DDHBL=F9H15、分析下列程序段AL=DDHBL=F9H2.4控制转移类指令控制转移类指令用于实现分支、循环、过程等程序结构,是仅次于传送指令的常用指令重点掌握:JMP/Jcc/LOOPCALL/RETINTn/IRET常用系统功能调用一般了解: LOOPZ/LOOPNZINTO2.4控制转移类指令控制转移类指令用于实现分支、循环、过2.4.1无条件转移指令只要执行无条件转移指令JMP,不需要任何条件,就使程序转到指定的目标地址处,从目标地址处开始执行指令操作数label是要转移到的目标地址(也叫目的地址、转移地址)JMPlabel

;程序转向label标号指定的地址(标号要在程序其它位置标出)2.4.1无条件转移指令只要执行无条件转移指令JMP,不转移的原理:1、程序的执行地址,是由段寄存器CS和指令指针IP,共同确定的.即当前指令的地址为CS:IP2、程序的跳转是通过修改CS和IP的值来实现的转移的原理:段内转移:在一个代码段内进行跳转近转移(near)和短转移(short)

1、近转移(near):在当前代码段64KB范围内转移

2、短转移(short):转移范围可以用一个字节表达,在段内-128~+127范围的转移3、段内转移不需要更改CS段地址,只要改变IP偏移地址代码段代码段转移的类型----段内转移段内转移:在一个代码段内进行跳转代码段代码段转移的类型---转移的类型----段间转移段间转移:在不同的代码段之间跳转更改CS段地址和IP偏移地址目标地址必须用一个32位数表达,叫做32位远指针,它就是逻辑地址代码段代码段

跳转类型虽然复杂,但实际编程时,MASM汇编程序会根据目标地址的距离,自动处理成短转移、近转移或远转移程序员可用操作符short、nearptr或farptr强制转移的类型----段间转移段间转移:在不同的代码段之间跳转代目标地址的给出方式直接寻址方式跳转的目的地址由标号label给出。间接寻址方式转移地址由寄存器或主存单元中的内容给出。Label实际上是一个逻辑地址,其中有逻辑地址:偏移地址目标地址的给出方式直接寻址方式Label实际上是一个逻辑地址段内转移(1)直接寻址方式转移地址由LABEL给出。具体形式:JMPlabel

;IP←IP+位移量位移量=目标指令的偏移地址-紧接着JMP指令后的那条指令的偏移地址。这样当前IP就指向了label所在的位置。当向地址增大方向转移时,位移量为正;向地址减小方向转移时,位移量为负again:

deccx

;标号again的指令

……

jmp

again

;转移到again处继续执行

……

jmp

output

;转向output

……output:

movresult,al

;标号output的指令段内转移(1)直接寻址方式转移地址由LABEL给出。具体形式2.4.2条件转移指令指定的条件cc如果成立,程序转移到由标号label指定的目标地址去执行指令;条件不成立,则程序将顺序执行下一条指令操作数label是短转移标号要跳转的地址必须距当前IP地址-128~+127个单元的范围之内Jcclabel

;条件满足,发生转移:IP←IP+8位位移量;条件不满足,顺序执行2.4.2条件转移指令指定的条件cc如果成立,程序转移到Jcc指令的分类Jcc指令不影响标志,但要利用标志(表2.2)。根据利用的标志位不同,16条指令分成3种情况:1.判断单个标志位状态2.比较无符号数高低3.比较有符号数大小Jcc指令的分类Jcc指令不影响标志,但要利用标志(表2.2转移条件cc:单个标志状态JZ/JE

ZF=1 JumpifZero/EqualJNZ/JNE

ZF=0 JumpifNotZero/NotEqualJS

SF=1 JumpifSignJNS

SF=0 JumpifNotSignJP/JPE

PF=1 JumpifParity/ParityEvenJNP/JPO

PF=0 JumpifNotParity/ParityOddJO

OF=1 JumpifOverflowJNO

OF=0 JumpifNotOverflowJC

CF=1 JumpifCarryJNC

CF=0 JumpifNotCarry第2章

采用多个助记符,只是为了方便记忆和使用转移条件cc:单个标志状态JZ/JE ZF=1 Jumpi转移条件cc:两数大小关系JB/JNAE

CF=1

低于或不高于等于JNB/JAE

CF=0

不低于或高于等于JBE/JNA

CF=1或ZF=1

低于等于或不高于JNBE/JA

CF=0且ZF=0

不低于等于或高于JL/JNGE

SF≠OF

小于或不大于等于JNL/JGE

SF=OF

不小于或大于等于JLE/JNG

ZF≠OF或ZF=1

小于等于或不大于JNLE/JG

SF=OF且ZF=0

不小于等于,或大于第2章转移条件cc:两数大小关系JB/JNAE CF=1第2章判断单个标志位状态这组指令单独判断5个状态标志之一⑴JZ/JE和JNZ/JNE:利用零标志ZF,判断结果是否为零(或相等)⑵JS和JN

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论