资源目录
压缩包内文档预览:(预览前20页/共114页)
编号:21836146
类型:共享资源
大小:11.91MB
格式:ZIP
上传时间:2019-09-06
上传人:QQ24****1780
认证信息
个人认证
王**(实名认证)
浙江
IP属地:浙江
25
积分
- 关 键 词:
-
大学
汇编
语言程序设计
相伟
课件
ppt
- 资源描述:
-
大学汇编语言程序设计-相伟-课件PPT,大学,汇编,语言程序设计,相伟,课件,ppt
- 内容简介:
-
21世纪高等院校规划教材,汇编语言程序设计,相 伟 主编 徐小平 李珍香 副主编,中国水利水电出版社,第二章 程序设计基础,本章学习目标,通过本章学习,读者应该掌握以下内容: 汇编语言源程序结构及基本概念 各种寻址方式 常用伪指令的格式、 功能 常用I/O功能调用的用法,2.1 汇编语言源程序结构,2.1.1 汇编语言源程序结构及分析 初学程序设计最有效的方法是阅读源程序并上机调试。通过阅读程序可以掌握程序的一般结构,学习实现程序功能的经典算法。通过对程序进行上机调试,逐渐掌握指令的语法格式、功能,避免编写源程序时出现常见的语法错误,同时训练调试技巧。,例2-1 显示信息“How do you do ?”,DATA SEGMENT STR DB “How do you do ?$” DATA ENDS STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,STR MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START,例2-2 将内存缓冲区中以BUFA开始的一组字数据传送到BUFB开始的内存区。,DATA SEGMENT BUFA DW 367BH,2845H,0A78H,9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (? DATA ENDS STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX,LEA SI,BUFA LEA DI,BUFB MOV CX,COUNT LOP: MOV AX,SI MOV DI,AX INC SI INC SI INC DI INC DI DEC CX JNZ LOP MOV AH,4CH INT 21H CODE ENDS END START,2.1.2 机器指令简介,8086/8088指令系统提供的机器指令从功能上可分为7种类型: 数据传送指令 算术运算指令 位运算指令 程序控制指令 串操作指令 处理器控制指令 输入/输出指令,所有机器指令从格式上看,有3种指令格式:, 无操作数指令 格式: 助记符 例如: STC CLC CMC, 单操作数指令 格式: 助记符 操作数 例如: PUSH AX POP BX, 双操作数指令 格式: 助记符 目的操作数,源操作数 例如:MOV CX,DX,2.1.3 常量、变量、标号及表达式,1常量 常量是指汇编语言源程序中以数值常数、字符串常数和符号常数的形式存在的量。 注意:当数值常量的值是十六进制形式,并且第一个字符是大写字母AF或小写字母af时,需要在数值前面加一个0,如:0A64DH。,例如:在下面的汇编源程序中,带下画线的量就是常量 DATA SEGMENT STR DB “How do you do ?$” DATA ENDS STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK,CS:CODE START: MOV AX,DATA MOV DS,AX LEA DX,STR MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START,例如:在下面的数据段中,带下画线的是一个符号常数,它是使用EQU伪指令定义的。 DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS 定义符号常数使用EQU伪指令、“”伪指令。,2变量,变量是指数据存储单元地址的符号表示,变量的值在程序运行过程中可以改变。,(1)变量的定义,定义变量使用伪指令DB、DW、DD、DQ、DT。 DB用来定义字节变量,字节变量占1个存储单元,可存储一个字节数据。 DW用来定义字变量,字变量占2个存储单元,可存储一个字数据。 DD用来定义双字变量,双字变量占4个存储单元,可存储一个双字数据。 DQ用来定义四字类型变量,四字类型变量占8个存储单元,可存储8字节数据。 DT用来定义十字节类型变量,十字节类型变量占10个存储单元,可存储10字节数据。,例如:在数据段DATA中定义字节变量STR。 DATA SEGMENT STR DB “How do you do ?$” DATA ENDS,例如:在数据段DATA中定义了字变量BUFA和BUFB。 DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS,(2)变量的属性,变量有三个属性,即段属性、偏移地址属性、类型属性。 段属性:指变量所在段的段地址。 偏移地址属性:指变量所定义的单元到变量所在段的开始位置之间的字节距离。 类型属性:由定义变量使用的伪指令确定。DB定义的变量的类型属性为字节类型(BYTE),DW定义的变量的类型属性为字类型(WORD),DD定义的变量的类型属性为双字类型(DWORD),DT定义的变量的类型属性为四字类型, DQ定义的变量的类型属性为十字节类型。,3标号,标号是指机器指令存储单元地址的符号表示。,(1)标号的定义,LOP: MOV AX,SI MOV DI,AX INC SI INC SI INC DI INC DI DEC CX JNZ LOP,(2)标号的属性,标号与变量一样,也具有三个属性,即段属性、偏移地址属性、类型属性。 段属性:指标号所在段的段地址。 偏移地址属性:指标号所定义的单元到标号所在段的开始位置之间的字节距离。 类型属性:标号的类型属性分为近类型NEAR和远类型FAR。NEAR类型的标号称为近标号,近标号只能用于段内转移。FAR类型的标号称为远标号,远标号既可用于段内转移,也可用于段间转移。,4表达式,由常量、变量、标号、运算符和括号组成的有意义的式子称为表达式。其中运算符又可分为算术运算符、逻辑运算符、关系运算符及其他运算符。表达式的计算结果是一个常数,该常数可以作为指令的操作数使用。,(1)算术运算符,例如:算术表达式的计算 219/731 86.4/2.633 219 MOD 7的结果为2,(2)关系运算符,例如:假设NUM的值为60H。则: NUM GT 80H NUM EQ 60H, 逻辑运算符,例如: 假设NUM的值为6BH 则: NUM AND 87H ;表达式的值是03H NUM OR 87H ;表达式的值是0EFH NUM XOR 87H ;表达式的值是0ECH NOT 87H ;表达式的值是78H NUM SHR 2 ;表达式的值是1AH NUM SHL 2 ;表达式的值是0ACH, 其他运算符,属性分离运算符(SEG、OFFSET、TYPE、LENGTH、SIZE) 属性定义运算符(PTR、THIS、SHORT、HIGH、LOW、“:”) 以及( )、 、MASK、WIDTH。, SEG,SEG 返回其后变量或标号所在段的段地址。, OFFSET,OFFSET返回其后变量或标号的偏移地址。,DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS MOV AX,SEG BUFA MOV DS,AX MOV SI,OFFSET BUFA MOV DI,OFFSET BUFB, TYPE 返回其后变量或标号的类型。,例如:在下面的数据段中。 DATA SEGMENT A DB 87H,45H,92H B DW 34D6H,0F67H C DD ? DATA ENDS 若在代码段中有如下指令: MOV AH,TYPE A MOV AL,TYPE B MOV CH,TYPE C 则将被汇编成: MOV AH,1 MOV AL,2 MOV CH,4, LENGTH,例如:在下面的数据段中。 DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS 若在代码段中有如下两条指令 MOV CX,LENGTH BUFA MOV DX,LENGTH BUFB 则将被汇编成: MOV CX,1 MOV DX,6, SIZE,例如:在下面的数据段中。 DATA SEGMENT BUFA DW 367BH,2845H,0A78H,9DE3H, 0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS 若在代码段中有如下两条指令 MOV CX,SIZE BUFA MOV DX,SIZE BUFB 则将被汇编成: MOV CX,2 MOV DX,12, PTR 和THIS,PTR用来指明某个变量、标号或地址的类型属性,使它临时具有与原定义所不同的类型属性,但保持他们原来的段属性和偏移属性不变。 PTR 的使用格式为:类型 PTR 表达式 其中,表达式的类型可以是BYTE、WORD、DWORD、NEAR、FAR等。,例如,DATA SEGMENT A DB 87H,45H,92H B DW 34D6H,0F67H C DD ? DATA ENDS MOV AX,WORD PTR A MOV BL,BYTE PTR B,例如:MOV SI ,30H,若将上述指令的操作数改为字操作数,则指令为: MOV WORD PTR SI ,30H 或者: MOV SI ,WORD PTR 30H 若将上述指令的操作数改为字节操作数,则指令为: MOV BYTE PTR SI ,30H 或者: MOV SI ,BYTE PTR 30H, SHORT,SHORT表示转移指令的目标地址属性是短转移,即目标地址与本指令之间的字节距离在-128127之间。 例如: JMP SHORT LOP2, HIGH 和LOW,HIGH选取表达式计算结果的高8位。 LOW选取表达式计算结果的低8位。 例如: HIGH 0F25AH的值是0F2H LOW 0F25AH的值是5AH, 段前缀运算符 :,运算符“:”用于临时给变量、标号或地址指定一个段属性,且只在所出现的语句中有效,“:”并不改变地址的偏移地址属性和类型属性。 例如: MOV SI ,AX 指令的功能是将AX寄存器的值存放到数据段DS中偏移地址为(SI)的字单元中,假如需要将将AX寄存器的值存放到附加数据段ES中偏移地址为(SI)的字单元中,则要在SI的前面加段前缀ES。指令改为:MOV ES: SI ,AX,运算符的优先级如表2-5所示。,2.2 寻址方式,在指令中,指定操作数或操作数地址的方法称为寻址方式。操作数的各种寻址方式是汇编语言进行程序设计的基础,必须熟练掌握。,2.2.1 立即寻址,立即寻址是指操作数作为指令的一部分而直接写在指令中,这种操作数称为立即数,立即数紧跟在操作码之后,与操作码一起存放在代码段中。如果立即数为16位,则立即数的存放规则是高字节存放在高地址,低字节存放在低地址。 立即数寻址方式通常用于给寄存器或内存单元赋初值。,例如:阅读以下各条指令,掌握立即寻址方式的用法。 MOV AL, 80H MOV BX, 0A683H MOV X, 20H ;X是字节变量 MOV Y, 3456H ;Y是字变量,实际上,在汇编语言程序设计中,还经常使用符号常数作为立即操作数。比如,假设COUNT是在程序中定义的一个符号常数,它代表一组数据的个数,则将该组数据的个数送入CX寄存器的指令如下: MOV AX,COUNT 上述指令中的源操作数COUNT是立即寻址方式。,汇编语言规定:在单操作数指令中,立即数不能作为指令中的操作数。在双操作数指令中,立即数只能作为源操作数,不能作为目的操作数。,2.2.2 寄存器寻址,寄存器寻址是指指令所需要的操作数存放在某一个寄存器中。 指令中使用的寄存器可以是8位寄存器,也可以是16位寄存器。8位寄存器有:AH、AL、BH、BL、CH、CL、DH和DL。16位寄存器有:AX、BX、CX、DX、SI、DI、SP、BP和段寄存器等。 指令中指定的寄存器即可以做为源操作数,也可以做为目的操作数,或同时出现在源操作数和目的操作数的位置上。,例如:阅读以下各条指令的功能,掌握寄存器寻址方式的用法。 MOV BH, 80h MOV AX, 6AB4H MOV MAX, AX ;MAX是字变量 MOV CX,COUNT ;COUNT是符号常数 MOV AX,BX MOV DL, BL,说明:在双操作数指令中,如果源操作数和目的操作数都是寄存器寻址,则它们必须同时是8位寄存器,或同时是16位寄存器。 例如,下面的指令是错误的。 MOV AX, BL,2.2.3 存储器寻址,存储器寻址是指指令所需要的操作数存放在内存中,在指令中给出操作数地址的方式。存储器寻址根据指令中给出的操作数地址的形式不同又分为直接寻址、寄存器间接寻址、变址寻址、基址加变址寻址、相对基址加变址寻址。, 直接寻址,直接寻址方式是指操作数的偏移地址在指令中直接给出。 例如:MOV AX,200H 假设数据段的段地址DS1500H,(15200H)字单元的值是876AH,问执行指令后,相关寄存器及存储单元的值是什么? 答: EA200H。 PA(DS)*16EA15000H200H15200H。,指令的执行过程如图2-2所示。,2寄存器间接寻址,寄存器间接寻址是指操作数的偏移地址在BX、BP、SI和DI四个寄存器之一。 (1)当以BX、SI或DI寄存器进行间接寻址时,操作数的物理地址由DS中的段地址与BX、SI或DI中的偏移地址构成。 (2)当以BP寄存器进行间接寻址时,操作数物理地址由SS中的段地址与BP中的偏移地址构成 。,例如:MOV AX,BX,假设该指令执行之前,DS2000H,AX54C8H,BX0300H,存储单元20300H的内容是6A9BH。问执行指令后,相关寄存器及存储单元的值是什么? 源操作数的地址为: EA(BX) 0300H PA(DS)*16EA2000H*160300H20300H。,指令的执行过程如图2-3所示。,3变址寻址,变址寻址是指操作数的偏移地址是BX、BP、SI、DI之一的值和一个8位或16位偏移量之和。 指令中给出的8位或16位偏移量用补码表示。在计算操作数的偏移地址时,如果偏移量是8位,则进行符号扩展成16位。 (1)当以BX、SI或DI寄存器进行间接寻址时,操作数物理地址由DS中的段地址与BX、SI或DI中的偏移地址构成 (2)当以BP寄存器进行间接寻址时,操作数物理地址由SS中的段地址与BP中的偏移地址构成 。,例如:MOV BX, SI200H,假设该指令执行之前,DS2000H,BX6874H,SI1000H,存储单元21200H的内容是1B43H。问执行指令后,相关寄存器及存储单元的值是什么? 指令中的源操作数是变址寻址,源操作数的地址为: EA (SI)200H 1000H200H1200H PA(DS)*16EA2000H*161200H 21200H。,指令的执行过程如图2-4所示。,4基址加变址寻址,基址加变址寻址是指操作数的偏移地址是一个基址寄存器BX、BP的值和一个变址寄存器SI、DI的值之和。 (1)当以BX作为基址寄存器时,操作数物理地址由DS中的段地址与SI或DI中的偏移地址构成。 (2)当以BP作为基址寄存器时,操作数物理地址由SS中的段地址与SI或DI中的偏移地址构成。,例如:MOV AX, BXSI,假设该指令执行之前,DS2000H,AX6528H,BX0500H,SI0300H,存储单元20800H的内容是7B46H。问执行指令后,相关寄存器及存储单元的值是什么? 由于指令中的源操作数是基址加变址寻址,故源操作数的地址为: EA(BX)(SI) 0500H0300H0800H PA(DS)*16EA2000H*160800H 20800H。,指令的执行过程如图2-5所示。,5相对基址加变址寻址,相对基址加变址寻址是指操作数的偏移地址是一个基址寄存器BX、BP的值加上一个变址寄存器SI、DI的值,再加上指令中的一个8位、16位偏移量之和。 指令中给出的8位或16位偏移量用补码表示。在计算有效地址时,如果偏移量是8位,则进行符号扩展成16位。 (1)当以BX作为基址寄存器时,操作数物理地址由DS中的段地址与SI或DI中的偏移地址构成。 (2)当以BP作为基址寄存器时,操作数物理地址由SS中的段地址与SI或DI中的偏移地址构成。,例如: MOV AX, BXSI1000 H,假设该指令执行之前,DS2000H,AX6528H,BX0500H,SI0300H,存储单元21800H的内容是0B874H。问执行指令后,相关寄存器及存储单元的值是什么? 源操作数的地址为: EA (BX)(SI)1000 H 0500H0300H1000 H 1800H PA(DS)*16EA2000H*161800H 21800H。,指令的执行过程如图2-6所示。,例2-3 将内存缓冲区中以BUFA开始的一组字数据传送到BUFB开始的内存区。,DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 BUFB DW COUNT DUP (?) DATA ENDS STACK SEGMENT STACK DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,SS:STACK, CS:CODE START: MOV AX,DATA MOV DS,AX,MOV SI,0 MOV DI,0 MOV CX,COUNT LOP: MOV AX,BUFASI MOV BUFBDI,AX INC SI INC SI INC DI INC DI DEC CX JNZ LOP MOV AH,4CH INT 21H CODE ENDS END START,关于寻址方式的几点说明:, 对于单操作数指令,操作数可以使用除立即寻址方式之外的各种寻址方式。对于双操作数指令,源操作数可以使用各种寻址方式,目的操作数可以使用除立即寻址方式之外的各种寻址方式,但源操作数和目的操作数不能同时采用存储器寻址方式。, 立即寻址和直接寻址在表现形式上的区别是是否带有 ,寄存器寻址和寄存器间接寻址在表现形式上的区别也是是否带有 。带有 的操作数属于存储器操作数, 内的值表示存储器操作数的偏移地址。, 存储器寻址方式有多种等价的书写形式,如表2-6所示。, 在存储器寻址方式中,通常根据寄存器BX、BP、SI、DI使用隐含规定的段寄存器,其中使用BX、SI、DI寄存器时段寄存器是DS,使用BP寄存器时段寄存器是SS。,实际上,操作数也可以存放在其他段中,比如:附加的数据段、堆栈段、代码段。如果操作数存放在其他段,如附加的数据段ES,则计算物理地址时,段寄存器就不能使用DS,而应该使用ES,并通过使用段前缀的方式在指令中给出。 例如: MOV ES:SUM,AX,2.3 常用伪指令,数据定义伪指令:DB、DW、DD、DQ、DT 符号定义伪指令:EQU、LABEL 段定义伪指令:SEGMENTENDS、ASSUME、END 过程定义伪指令:PROCENDP 宏定义伪指令:MACROENDM等 条件汇编伪指令:IFENDIF等 模块通信伪指令:PUBLIC、EXTRN 结构定义伪指令:STRUCENDS 记录定义伪指令:RECORD 其他伪指令: NAME、TITLE、ORG、EVEN等,伪指令语句的一般格式: 名字 伪指令助记符 操作数1,操作数2, ;注释,2.3.1 数据定义伪指令,数据定义伪指令可以是:DB、DW、DD、DQ、DT。 DB:用来定义字节类型的变量,DB定义的每个操作数都占用1个字节单元。 DW:用来定义字类型的变量,DW定义的每个操作数都占用1个字单元。 DD:用来定义双字类型的变量,DD定义的每个操作数都占用2个字单元。 DQ:用来定义八个字节类型的变量,DQ定义的每个操作数都占用8个字节单元。 DT:用来定义十个字节类型的变量,DT定义的每个操作数都占用10个字节单元。,例如:定义数值常数和字符串常数,DATA SEGMENT CON1 DB 56H,89H,0A3H,0BCH CON2 DW 7865H,0B34DH CON3 DD 897632BDH CON4 DB please input: DATA ENDS,2.3.2 符号定义伪指令,符号定义伪指令可用来给汇编语言程序中的常数、表达式、变量、标号、指令助记符或寄存器等重新定义一个名字,或者改变变量、标号的属性,从而给程序设计带来更大的灵活性。符号定义伪指令主要有EQU、LABEL。,1定义符号常数,(1)EQU 格式:符号常数 EQU 表达式 (2) 格式:符号常数 表达式 说明:EQU 定义的符号常数不能重复定义,而用“”定义的符号常数可以重复定义。,例如: A EQU 20 B EQU A*25 COUNT EQU ($-BUFA)/2 例如: A20 AA*25,2定义变量或标号,(1)定义变量 格式:变量 LABEL 变量类型 说明:格式中的变量类型常用BYTE、WORD、DWORD,分别表示字节类型、字类型、双字类型。,(2)定义标号 格式:标号 LABEL 标号类型 说明:格式中的标号类型使用NEAR、FAR,分别表示近类型、远类型。 功能:给跟在LABEL伪指令后面的指令存储单元定义一个标号,该标号的类型属性在格式中指定,标号的段地址和偏移地址属性与指令存储单元的段地址和偏移地址相同。,2.3.3 段定义伪指令,为了实现程序的分段设计,宏汇编程序MASM提供了按段组织程序的一组伪指令,它们是SEGMENT ENDS、ASSUME、END等。,1 SEGMENT和ENDS、,段定义伪指令的格式为: 段名 SEGMENT 定位属性 组合属性 类别 段名 ENDS 功能:定义程序中的一个逻辑段。,2ASSUME,格式:ASSUME 段寄存器:段名, 功能:用来设定段寄存器与逻辑段之间的对应关系。程序中使用ASSUME后,宏汇编程序就将与段寄存器对应的逻辑段作为当前段。ASSUME一般出现在代码段的开始。,3END伪指令,格式:END 标号 功能:结束汇编。,2.3.3其他常用的伪指令 1NAME伪指令,格式:NAME 程序名 功能:将程序名作为源程序目标模块的名字。 NAME伪指令通常放在源程序的开始,在输出汇编语言源程序的列表文件中,在每一页的开头输出该程序名。若源程序中省略NAME伪指令,则汇编程序将源文件名作为目标模块的名字。,2TITLE伪指令,格式:TITLE 标题名 功能:同NAME伪指令的功能。将标题名作为源程序目标模块的名字。标题名最多60个字符,但汇编程序只将前6个字符作为目标模块名。,3ORG伪指令,格式:ORG 表达式 功能: 将数据或指令代码从ORG伪指令中指定的偏移地址处开始存放。表达式的值表示偏移地址,取值范围为00FFFFH或065535。当程序中不使用ORG伪指令时,数据或指令代码从段的开始位置连续存放。,DATA SEGMENT BUFA DW 367BH,2845H,0A78H, 9DE3H,0F6BH,6532H COUNT EQU ($-BUFA)/2 ORG 100H BUFB DW COUNT DUP (?) DATA ENDS,4EVEN伪指令,格式:EVEN 功能:将数据或指令代码从偶地址处开始存放。 DATA SEGMENT TAB1 DB 48H,0A2H,98H,0BEH,87H EVEN TAB2 DW 0B7639H,19F6H DATA ENDS,2.4 I/O功能调用,DOS操作系统和ROM BIOS分别提供了一系列功能调用,作为汇编语言处理I/O操作的接口,程序员可以很方便的通过调用这些功能实现字符及字符串的输入输出。,2.4.1 常用的DOS系统功能调用,DOS系统功能调用的方法: AH功能号 设置入口参数 INT 21H,1屏幕显示一个字符(2号调用),调用格式: MOV AH,2 MOV DL,字符的ASCII码 INT 21H,例如:输出字符9,需要将字符9的ASCLL码39H存放在DL寄存器里。 MOV AH ,2 MOV DL ,39H INT 21H,2打印一个字符(5号调用),调用格式: MOV AH,5 MOV DL ,字符的ASCII码 INT 21H,例如:打印字符A,需要将字符A的ASCII码41H存放在DL寄存器里。 MOV AH,5 MOV DL,41H INT 21H,3屏幕显示一个字符串 (9号调用),调用格式: MOV AH,9 MOV DX,字符串的首地址(偏移地址) INT 21H,4. 键盘输入一个字符(1号调用),调用格式: MOV AH,1 INT 21H,5. 键盘输入一个字符但不回显 (8号调用),调用格式: MOV AH,8 INT 21H,6. 键盘输入字符串(10号调用),格式: MOV AH,10 MOV DX,缓冲区的首地址(偏移地址) INT 21H,键盘输入缓冲区的格式定义: BUF
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。