汇编语言入门教程-第八章输入与输出程序设计课件

PPT
  • 阅读 71 次
  • 下载 0 次
  • 页数 46 页
  • 大小 562.501 KB
  • 2022-11-24 上传
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
此文档由【小橙橙】提供上传,收益归文档提供者,本网站只提供存储服务。若此文档侵犯了您的版权,欢迎进行违规举报版权认领
汇编语言入门教程-第八章输入与输出程序设计课件
可在后台配置第一页与第二页中间广告代码
汇编语言入门教程-第八章输入与输出程序设计课件
可在后台配置第二页与第三页中间广告代码
汇编语言入门教程-第八章输入与输出程序设计课件
可在后台配置第三页与第四页中间广告代码
汇编语言入门教程-第八章输入与输出程序设计课件
汇编语言入门教程-第八章输入与输出程序设计课件
还剩10页未读,继续阅读
【这是免费文档,您可以免费阅读】
/ 46
  • 收藏
  • 违规举报
  • © 版权认领
下载文档25.00 元 加入VIP免费下载
文本内容

【文档说明】汇编语言入门教程-第八章输入与输出程序设计课件.ppt,共(46)页,562.501 KB,由小橙橙上传

转载请保留链接:https://www.ichengzhen.cn/view-44800.html

以下为本文档部分文字说明:

第一章基础知识第八章输入与输出程序设计第八章输入与输出程序设计第一章基础知识第八章输入与输出程序设计第一章基础知识第八章输入与输出程序设计第一节:I/O设备的数据传送方式输入输出设备都通过一个硬件接口或控制器和CPU相连。例如软磁盘通过软盘控制器和CPU连接起来;终端显示器通过数据接口和CPU

连接起来。这些接口和控制器都能支持输入输出IN、OUT与外部设备交换信息。这些信息包括控制、状态和数据三种不同性质的信息,它们必须按不同的端口地址分别传送。控制信息输出到I/O接口:告诉接口和设备要做什么工作状态信息的读取:表示I/O设备当前的状态数据

信息的传输:是I/O设备和CPU真正要交换的信息。常用的输入/输出方式:1、查询输入输出;2、中断输入输出;3、DMA方式DMA方式:也称为成组数据传送方式。主要适用于—些高速的I/O设备,如磁带、磁盘、模数转换器等设备。DMA方式能使I/O设备直接和存储器进行成批数据的快速传送。

每个字节一到达端口,就直接从接口送到存储器,同样,接口和它的DMA控制器也能直接从存储器取出字节并把它送到I/O设备中去。第一章基础知识第八章输入与输出程序设计第一章基础知识第八章输入与输出程序设计第二节:程序直接控制I/O方式I/O

端口的地址编码:计算机的外部设备和大容量存储设备都是通过接口连接到系统上,每个端口由一组寄存器组成,这些寄存器都分配有一个地址编码,该编码称为I/O端口的地址编码。计算机的CPU和内存就是通过这些端口和外部设备进行通讯的。I/O接口中有用作数据缓冲的数据寄存器,有用做保存设备和

接口的状态信息,供CPU对外设进行测试的状态寄存器;还有用来保存CPU发出的命令以控制接口和设备的操作的命令寄存器。它们都分配有各自的端口号,CPU就是通过不同的端口号来选择外部设备的第一章基础知识第八章输入与输出程序设计端口数

量:在IBMPC中,1M空间的低16位地址线有效,因此这个I/O空间允许设置64K(65536)个8位端口或32K(32768)个16位端口。PC机的部分端口地址(16进制)第一章基础知识第八章输入与输出程序设计一、I/

O指令PC机的I/O指令IN和OUT,这两条指令既可以传送字节也可以传送字,并且都有直接端口寻址和间接端口寻址两种方式。如下所示:直接端口寻址方式:端口地址PORT是一个8位的立即数,其范围是0一255。间接寻址方式:端口地址在DX中,其范围为0一655

35。另外要注意的是,I/O指令中使用的寄存器必须是AL或AX。第一章基础知识第八章输入与输出程序设计用IN指令可以从一个数据寄存器输入数据或从状态寄存器输入接口和外没的状态。例如下面两条指令能把一个字从端口地址0028和0029传送

到存储器的DATA_WORD单元中。例测试某状态寄存器(端口地址为27H)的第2位是否为1,若为1,则转移到ERROR进行处理。OUT指令用来输出数据或给一个指定的I/O端口传送命令信息。例某接口的命令寄存器(端口地址为126H)的第7位控

制成组数据传送。注意:DOS功能调用或BIOS例行程序,其例行程序本身也是用IN和OUT指令与外部设备进行数据交换的。第一章基础知识第八章输入与输出程序设计二、I/O直接数据传输举例例SOUND程序(发声程序)基本原理:程序通过

I/O指令使设备控制寄存器(I/O端口地址为61H)的第1位交替为0和l,而端口6lH的第1位和扬声器的脉冲门相连,当第1位由0变为1,延迟一会又由0变为1时,脉冲门就先打开后关闭,产生了一个脉冲电流

。这个脉冲电流被放大后送到扬声器使之发出了声音。61H端口的第0位和一个振荡器(2号定时器)相连,现在不用振荡器产生声音,所以把第0位置零。第一章基础知识第八章输入与输出程序设计程序:soundprogramsegmentassumecs:soundprogrammainprocfa

rstart:movbx,0f350hmovdx,2300hinal,61hmovah,alandal,11111100b;关断定时器通道2的门控sound:xoral,2;触发61H端口第1位out61h,almovcx,d

x;(dx)=控制脉宽的计数值wait1:loopwait1;延时循环decbx;(bx)=脉冲持续的时间jnzsoundmoval,ahout61h,al;恢复61H端口movax,4c00hint21hmainendpsoundprogramendsendstart第一章基础知识第

八章输入与输出程序设计例COMM程序基本原理这是一个关于INS8250串行通讯口I/O的例子。它的数据寄存器的端口地址是03F8H,状态寄存器的端口地址是03FDH。其中0位是输入数据准备位,5位是输出数据准备位。下列是串行口输入输出程序。

输出子过程:读取子过程:第一章基础知识第八章输入与输出程序设计以上CPU与外部设备交换信息的方式称为查询方式或等待方式。造成CPU必须查询等待的主要原因是许多外设的工作速度比较低.如磁盘、打印机等,它们通过按键或打印头的机械动作输入或

输出一个数据,其速度是很慢的,而OUT执行指令的速度是它的几千倍乃至上万倍,所以则在接收或发送数据之前必须要了解外设的状态,看外设是否已经准备好。当外没还没有准备好以前,CPU就要等待,不能做别的操作。为了提高

CPU的工作效率,我们可采用中断方式传送数据。关于中断,我们将在下一节中做详细介绍。第一章基础知识第八章输入与输出程序设计第三节:中断传送方式什么是中断:中断是一种使CPU中止正在执行的程序而转去处理特殊事件的操作。什么是中断源:引起中断的事件。中断的优点:避免因反

复查询外部设备的状态而浪费时问,从而提高了CPU的效率。外中断:由外设控制器或协处理器(8087/80287)引起的中断一般称为外中断。内中断:中断指令INT产生的中断,或由CPU的某些错误结果产生的中断称为内中断8086/8088的中断源

如下图所示:第一章基础知识第八章输入与输出程序设计第一章基础知识第八章输入与输出程序设计非屏蔽中断:是为电源错、内存或I/O总线的奇偶错等异常事件的中断保留的。外部设备的中断是通过Inter8259A可编程中断控制器(PIC)连到主机上。CPU

通过一组I/O端口控制8259A,而8259A则通过INTR管脚给CPU传送中断信号。这种外中断类型的分配由硬件连线实现.中断20H到3FH用于调用DOS功能例行程序,其它中断号小于20H或大于3FH的中断,用于

调用IBMPCROMBIOS或一些应用软件一、中断向量表我们给每种中断都安排一个中断类型号。IBMPC中断系统能处理256种类型的中断,类型号为0—0FFH。每种类型的中断都由相应的中断处理程序来处理,中断向量表就是各中断类型的处理程序的地址表。如左图所示:第一章基础知识第八章输入与

输出程序设计存储器的低1.5K字节,地址从0到5FFH为系统占用,其中最低1K字节,地址从0到3FFH存放中断向量。中断向量表中的256项中断向量对应256种中断类型,每项占用四个字节,其中两个字节存放中断处理程序的段地址(16位),另两个字节存放偏

移地址(16位)。因为各处理程序的段地址和偏移地址在中断向量表中按中断类型号顺序存放,所以每类中断向量的地址可由中断类型乘以4计算出来。例如,报警中断的中断类型为4AH,它的中断向量地址为4AH×4=128H,即128H,

129H两字节存放的是报警中断处理程序的偏移地址.12AH,l2BH两字节存放的是报警中断处理程序的段地址,取出段地址和偏移地址。CPU就可转入中断处理程序。中断操作的5个步骤:(1)取中断类型号(2)计算中断向量地址(3)取中断向量,偏移地址送IP.段地址

送CS(4)转入中断处理程序(5)中断返回到INT指令的下一条指令第一章基础知识第八章输入与输出程序设计第一章基础知识第八章输入与输出程序设计二、设量中断向量下表列出了IBMPC各类中断的地址分配:用户

可以利用保留的中断类型号扩充自己需要的中断功能,对新增加的中断功能要在中断向量表中建立相应的中断向量。第一章基础知识第八章输入与输出程序设计指令来为中断类型N设置中断向量:;段地址为0;设置偏移地址;要设置的中断子过程;设置新中断向量(地址)注意:如果新的中断功能只供自己使用,

或用自己编写的中断处理程序代替系统中的中断处理功能时,要注意保存原中断向量,在设置自己的中断向量时,应先保存原中断向量再设置新的中断向量,在程序结束之前恢复原中断向量。第一章基础知识第八章输入与输出程序设计在实际编程过程中,在检查或设置任何中断向量时,

总是避免直接使用中断向量的绝对地址,而是使用DOS功能调用(21H)存取中断向量。第一章基础知识第八章输入与输出程序设计三、中断过程当今断发生时,由硬件自动完成下列动作:1.取中断类型号N2.标志寄存器(PSW)内容入栈3.当前代码段寄存器(cs)内容入栈4

.当前指令计数器(IP)内容入栈5.禁止外部中断和单步中断(IF=0,TF=0)6.从中断向量表中取4×N的字节内容送IP,取4×N+2的字节内容送CS。转中断处理程序中断发生的过程很象我们所熟悉的子程序调用,不同的

是在保护中断现场时,除了保存返回地址CS:IP之外,还保存了标志寄存器PSW的内容。因为标志寄存器记录了中断发生时,程序指令运行的结果特征。当CPU处理完中断请求返回原程序时,要保证原程序工作的连续性和正确性。所以中断发生时,PSW的内容也要保存起来,另一个不同点是,在中断发生时,C

PU还自动清除了IF位和TF位,这样设计的目的是使CPU转入中断处理程序后,不允许再产生新的中断,如果在执行中断处理程序的过程中,还允许外部的中断,可以通过STI指令再把IF设置为1。第一章基础知识第八章输入与输出程序设计编写中断处理程序和编写子程序一样,所使用的汇编语言指令没有

特殊限制,只是中断处理程序返回时使用IRET指令。这条指令的工作步骤相中断发生时的工作步骤正好相反。它首先把IP、CS和PWS的内容出栈,然后返回到中断发生时紧接着的下一条指令。第一章基础知识第八章输入与输出程序设计四、内部过程第一章基础知识第八章输入与

输出程序设计五、外过程外部中断主要有两种来源,一种是非屏蔽中断(NMl),另一种是来自各种外部设备的中断,由外部设备的请求引起的中断也称为可屏蔽中断。但是从外设发出中断请求到CPU响应中断,有两个控制条

件是起决定作用,一是该外设的中断请求是否屏蔽,一个是CPU是否允许响应中断。这两个条件分别由8259A的中断屏蔽寄存器(IMR)和标志寄存器(PSW)中的中断允许位IF控制。中断屏蔽寄存器的I/O端口地址是21H,

它的8位对应控制8个外部设备,如左图所示:通过设置这个寄存器的某位为0或为1来允许或禁止某外部设备的中断。某位为0表示允许某种外设中断请求,某位为1表示某种外设的中断请求被屏蔽(禁止)。第一章基础知识第八章输入与输出程序设计例如,只允许键盘中断,可设置如下中

断屏蔽字:如果系统中要新增设键盘中断,则可用下列指令实现:注意:在编写中断程序时,应在主程序的初始化部分设置好中断屏蔽寄存器,以确定允许用中断方式工作的外部设备。外部设备向CPU发出中断请求,CPU是否响应还与标志寄存器中的中

断标志位IF有关。如果IF=0,CPU就禁止响应任何外设的中断。如果IF=1测允许CPU响应外设的中断请求,有两条指令能设置或清除IF位。允许CPU响应外设的中断请求(IF=1)也叫做开中断,反之叫做

关中断(1F=0)。第一章基础知识第八章输入与输出程序设计当任何类型的中断发生时,当前的PSW要保存入栈,然后清除IF位进入中断处理程序。如果允许在一个中断处理程序的执行过程中发生外中断,则必须用一条STI指令开中断。当执行到中断返回指

令IRET,又取出PSW先前的值,其中IF为1,CPU将允许外中断再次发生。有一种特殊的外部中断和IF标志位无关,这就是非屏蔽中断,非屏蔽中断的类型号为2,CPU不能禁止非屏蔽中断,如果系统使用了这种类型的中断,那么CPU总会响应的,所以非屏蔽中断主要用于一些紧急的故障处理,如电源掉电等。另

外计算机内部的实时钟希望能不停地计时,所以也可以把非屏蔽中断提供给实时钟。。。在一次外中断处理结束之前,还应给8259A可编程中断控制器的中断命令寄存器发出中断结束命令(EOI)。中断命令寄存器的I/O端口地址为20H,如下图所示。它的各控制位可动态地控制中断处理过程,其中L2-L

0三位指定IR0—IR7中具有最低优先级的中断请求。6位和7位控制IR0一IR7的中断优先级的顺序。5位(EOI)是中断结束位。当EOI位为1时.当前正在处理的中断请求就被清除,所以在中断处理完成后,必须把中断结束位置为1,否则以后将屏蔽掉对同级中断或低级中断的处理

。当然在必要的时候,在中断处理程序中也可利用EOI命令清除当前的中断请求,使得在中断处理的过程中又能响应同级或低级中断。结束外中断用下面的指令:第一章基础知识第八章输入与输出程序设计六、中断优先级和中断嵌套中断源事先

安排一个中断优先级次序,当多个中断源同时申请中断时,CPU先比较它们的优先级,然后从优先级高到低的次序来依次处理各个中断源的中断请求。IBMPC规定中断的优先级次序为:可屏蔽中断的优先权又分为八级,在正常的优先级方式

下,优先级次序是8259A的中断命令寄存器的6位和7位能控制各中断请求端的优先级次序。在发出一个EOI命令时,7位(R)和6位(SL)有四种组合,其含义如下:第一章基础知识第八章输入与输出程序设计外中断的优先级次序一般在正常优先级方式下(R=0,SL=0),但在必要的情况下,设置中

断命令寄存器能改变IR0—IR7的优先级次序。例如,IR0—IR7原为正常的优先级次序,现在要使IR4成为最低级的中断请求,则给端口21H送命令码:11100100.即R=l,SL=1,EOI=1.L2L1L0=100,这样,各中断优先级就依次右循环到I

R4为最低优先级的位置上:如果再送一个命令码:10100000,则优先级次序再向左循环一个位置,成为正在运行的中断处理程序,又被其它中断源中断,这种情况叫做中断嵌套。IBMPC机没有规定中断嵌套的深度(中断程序又被

中断的层次),但在实际使用时,多重的中断嵌套要受到堆栈容量的限制,所以在编写中断程序时,一定要考虑有足够的堆栈单元来保存多次中断的断点及各寄存器的内容。第一章基础知识第八章输入与输出程序设计注意:一个正在执行的中断处理程序,在开中

断(IF=1)的情况下,能被优先级高于它的中断源中断,但如果要被同级或低级的中断源中断,则必须发出EOI命令,清除正在执行的中断请求,才能响应同级或低级的中断。假定在主程序的执行过程中,IR2和IR4的中断请求

同时发生,而后IR1的中断请求又到达,最后IR3的中断请求也到达。中断执行次序如下:首先,CPU响应优先级高的IR2.转去执行IR2的中断处理程序。进入IR2处理程序后,IF被置为1。当IRl的中断请求到达后,因IRl的优先级高于IR2,CPU就立即中断IR2的程序,

转去执行IRl的处理程序。在IR1处理程序中CPU指令发出了EOI命令,结束了IR1的中断请求。返回IR2处理程序后,同样由于发出EOI命令清除了IR2的中断请求,所以在较低级的中断请求ER4到达后,即转向处理IR4的中断请求。在IR4处理程序的执行过程中,IR3的中断请求到达,当判断I

F已被置为1,则又中断了IR4的程序,转去执行IR3的程序。在IR3程序中,也发出了开中断指令(STI)和中断结束命令(EOI),最后IRET指令使其返回到IR4程序,IR4在返回IR2之前也发出了EOI命令,结束了IR4的中断请求。IR2中断请求在前面已被清除,所以IR4

执行完后,IR2继续执行直到返回主程序。第一章基础知识第八章输入与输出程序设计七、中断处理程序对于外部中断过程,主程序为中断所做的准备工作和硬件(包括CPU和外设接口)自动完成的动作:对一般指令,只要一条指令的执行周期结束即可响应中断。对以下指令特殊控制:1、对加重复

前缀的串指令(如REPMOVSB)要作为一条指令处理,但不是把串操作全部重复执行完,而是执行一次重复后,串指令即可响应中断。2、对于MOV指令和POP指令,如果处理对象为段寄存器时,那么本指令执行完后,执行完下一条执行才能响应中断请求。3、对于开中断指令STI和中断返回指令,

也要在这些指令执行完后,再执行一条指令才响应中断。第一章基础知识第八章输入与输出程序设计中断处理子程序的步骤:(1)保存寄存器内容(2)如允许中断嵌套,则开中断(STI)(3)处理中断(4)关中断(5)送中断结束命令(EOI)给中断命令寄存器(6)恢复寄存器内容(7)返回被中断的程序

(IRET)八、中断处理程序举例例编写一个中断处理程序,要求在主程序运行的过程中,每隔10秒钟响铃一次,同时在屏幕上显示出信息“Thebellisring”,连续响5次退出。原理:在系统定时器(中断类型为8

)的中断处理程序中,有一条中断指令INT1CH,时钟中断每发生一次(约每秒中断l8.2次),都要调用一次中断类型1CH的处理程序。在ROMBIOS中,1CH的处理程序只有一条IRET指令,实际上它并没有做任何工作,只是为用户提供了一个中断类型号。如果用户有某种定时周期性的工作需要完

成,就可利用系统定时器的中断间隔,用自己设计的处理程序来代替原有的1C程序。第一章基础知识第八章输入与输出程序设计程序:dsegsegmentcountdw5;控制连续响铃5次messdb'thebellisring',0dh,0ah,'$';在屏幕上显示的字符串dsegendscsegsegme

ntassumecs:cseg,ds:dsegmainprocfarstart:movax,dsegmovds,axmoval,1ch;保存1Ch原中断向量进入堆栈中movah,35hint21hpushespushbxpushds;把响铃过程设置为

1Ch中断向量movdx,offsetringmovax,segringmovds,axmoval,1chmovah,25hint21hpopds第一章基础知识第八章输入与输出程序设计inal,21h;允许定时器中断anda

l,11111110bout21h,alsti;允许CPU响应中断movdi,20000;主过程的时间延迟,以便在该时间延迟内进行定时中断处理delay1:movsi,30000delay2:decsijnzdelay2cm

pdi,0jzexitdecdijnzdelay1popdx;恢复原来的中断向量popdsmoval,1chmovah,25hint21hmovax,4c00hint21hmainendp第一章基础知

识第八章输入与输出程序设计ringprocnearpushds;保存寄存器内容pushaxpushcxpushdxmovax,dsegmovds,axsti;允许CPU响应中断cmpcount,0jzexitdeccountmov

dx,offsetmess;显示字符串信息,字符串必须以’$’结束movah,09hint21hmovdx,100;发声控制inal,61handal,11111100bsound:xoral,02hout61h,al第一章基础知识第

八章输入与输出程序设计movcx,1400wait1:loopwait1decdxjnzsoundexit:clipopdxpopcxpopaxpopdsiretringendpcsegendsendstartIBMPC系列计算机的键盘是一个智能键盘,键盘内有一片Intel

8048(或8049)单片机(处理器),负责对整个键盘上的字符键、功能键、控制键和组合键进行管理。键盘I/O敲键8048向8259A发出IRQ1中断请求将所敲键的扫描码送825560H端口(IF=1)主机响应IRQ1调用

09中断类型服务程序,从825560H端口接收扫描码并转换为ASCII码键盘缓冲区键盘中断响应流程用户程序利用DOS功能调用BIOS中断调用当在键盘上“按下”或“放开”一个键时,如果这时允许键盘发出中断请求并且IF=1,就会产生09H类型的硬件中断,CPU将执行INT

09H指令,转入BIOS键盘中断服务程序处理用户的键盘输入。扫描码和ASCII码60H输入端口:D7=1按键已放开,称为断码D7=0键已按下,称为通码,D6-D0位是按键的扫描码。键盘上的每一个键都对应惟一的扫描码,扫描码与键盘按键对应关系如表5-5所

示。BIOS和DOS键盘中断功能BIOS中断调用(INT16H)和DOS系统调用(INT21H)都提供了键盘中断功能,从键盘缓冲区获取键入字符的扫描码或ASCII码返回给用户应用程序。第一章基础知识第八章输入与输出程序设计例要求改变键盘中断向量,实现

下列目的:(1)从键盘上接收扫描码,并在屏幕上显示扫描码的十六进制;(2)将扫描码存入缓冲区内,在有限时间内,当缓冲区满时,给出bufferoverflow信息,当缓冲区不满时,给出buffernotoverflow信息.(3

)缓冲区的大小为16字节。dsegsegmentaddr_pointdw?countdw?bufferdb0fhdup('')promptdb'pleaseenterthecharacter:'db0dh

,0ah,'$'messagedb'bufferoverflow',0dh,0ah,'$'messagebdb'buffernotoverflow',0dh,0ah,'$'save_ip9dw?save_cs9dw

?dsegendscsegsegmentassumecs:cseg,ds:dseg第一章基础知识第八章输入与输出程序设计mainprocfarstart:movax,dsegmovds,axmovax,offsetbuf

fer;初始化缓冲区地址和缓冲区字符数量movaddr_point,axmovcount,0;********moval,09h;保存9h的中断向量movah,35hint21hmovsave_ip9,bxmovsave_cs9,esmovdx,offs

etkbint;把过程kbint地址设置成09h的中断向量pushdsmovax,segkbintmovds,axmoval,09hmovah,25hint21hpopds第一章基础知识第八章输入与输出程序设

计inal,21h;允许键盘中断andal,0fdhout21h,almovah,09h;屏幕上显示提示信息leadx,promptint21h;*******sti;允许CPU响应外部中断;*******movdi,0f000h;主过程等待键盘的

输入和打印机的输出mainp:movsi,0f000hmainp1:decsijnzmainp1decdijnzmainp;******movah,02h;屏幕上显示字符$表示主程序结束movdl,'$'int21h第一章基础知识第八章输入与输出程序设计;

******cli;禁止许CPU响应外部中;******pushds;恢复09h中断向量movdx,save_ip9movax,save_cs9movds,axmoval,09hmovah,25hint21hpopdscmpcount,

16jnzovmovah,09h;屏幕上显示提示信息leadx,messageint21hjmpenddov:movah,09h;屏幕上显示提示信息leadx,messagebint21h第一章基础知识第八章输入与输出程序设计endd:inal,21h;允许键盘中断andal,0fdhout21h

,al;******sti;允许CPU响应外部中movax,4c00hint21hmainendp;--------------------------------------------------------------kbintprocnearpushaxpushbxinal,60

htestal,80h;测试按键还是释放键,参见课本p231页jnzcontcmpcount,16jzcont第一章基础知识第八章输入与输出程序设计movbx,addr_pointmov[bx],alcalldis

pincbxinccountmovaddr_point,bxcont:climoval,20h;结束外中断out20h,alpopaxpopbxiretkbintendp;---------------------------

----------------------------dispprocnearpushaxpushbxpushdx第一章基础知识第八章输入与输出程序设计movch,2movcl,4nestb:rolal,clpushaxmovdl,alanddl,0

fhordl,30hcmpdl,3ahjldispitadddl,7hdispit:movah,2int21hpopaxdecchjnznestbmovah,2movdl,','int21hpopdxpopbxpopaxretdispendp;-

--------------------------------------------------------csegendsendstart

小橙橙
小橙橙
文档分享,欢迎浏览!
  • 文档 25747
  • 被下载 7
  • 被收藏 0
相关资源
广告代码123
若发现您的权益受到侵害,请立即联系客服,我们会尽快为您处理。侵权客服QQ:395972555 (支持时间:9:00-21:00) 公众号
Powered by 太赞文库
×
确认删除?