汇编语言程序设计(一)_第1页
汇编语言程序设计(一)_第2页
汇编语言程序设计(一)_第3页
汇编语言程序设计(一)_第4页
汇编语言程序设计(一)_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

第三章汇编语言程序设计

第一节汇编语言上机过程

第二节汇编语言程序结构

第三节指示性语句

第四节汇编语言程序举例

第五节BIOS和DOS功能调用

第六节汇编语言程序设计

1

作业:3-2,3-6,3-7,3-9,3-12

复习内容:P97-P114

预习内容:P114-P140

P145-147(不作要求,自学)

2

上环境

用户开发的程序:ABC.exe等

操作系统:DOS系统

编辑器EDIT.exe

编程序.MASM.exe

连接程序:LINKexe

调试程序:DEBUG.exe

CPU、存储器(ROM、RAM)、I/O接口、输入、输出设备

3

第一节汇编语言上机过程编辑源程序EDITABC.ASM

汇编源程序MASMABC.ASM

I-----------

D:>EDITABC.asm〈有汇编错误信息?产-------------

D:>MASMABC;

形成目标程序ABC.OBJ

有语法错,回EDIT下改该程序

D:>LINKABC;连接目标程序LINKABC.OBJ

有错,回在EDIT下改程序的连接错凄信息?)丫----

IN____

D:>ABC形成可执行程序ABC.EXE

运行结果错,回下改程序

EDIT装入可执行程序到内存并执行

或在DEBUG下调试,找原因。D:\>sub>ABC

D:>DEBUGABC.exe〈运行好果正确下一程序]一

_________IN

1DEBUG调试程序查错?-------►

_______1丫

用DEBUG调试可执行程序」戈到原因「

D:\>suM>EBUGABC.EXE^■

第二节汇编语言程序结构

一,、程序结构

二、语句结构

5

汇编语言程序结构例一

程序:movs.asm

功能:实现数据传送功能

数据段1传送至》数据段2

目的:学习程序结构

6

一、程序结构;汇编语言程序结构例一movs.asm

;实现数据传送功能

aaSEGMENT;数据段1

•程序由数条语句构成,每条语句占一行。strlDB'Hello!'

指令性语句(指令语句)aaENDS

bbSEGMENT;数据段2

指示性语句(伪指令语句)

str2DB6dup(?)

•分段结构bbENDS

程序按段编写,与8088内存分段编址相对应。ccSEGMENT;代码段

ASSUMECS:cc,DS:aa,ES:bb

每段由伪操作SEGMENT开始、由ENDS结束。start:CLD

MOVAX,aa

•程序最后为END结束语句,后跟一启动地址。

MOVDS,AX

启动地址指示程序开始执行的第一条语句。LEASI,strl

MOVAX,SEGstr2

•程序中设有返回DOS的功能。

MOVES,AX

使程序执行完后返回DOS系统的命令接受状态。MOVDI,OFFSETstr2

MOVCX,6

•程序中用到内存操作数时,REPMOVSB

应按操作数的寻址方式,给相应的段寄存器赋值MOVAH,4CH

INT21H;返回DOS

ccENDS

ENDstart;指示程序结束

汇编语言程序结构例二

程序:scans.asm(子程结构)

子程内容:用二进制显示BX内容

功能:实现

用二进制显示

中断向量表中(0:0〜0:3FFH)

数据D0H的个数

目的:了解程序可由多个段构成

8

程序可由多个段构成,至少有一个代码段

;汇编语言程序结构例二(子程结构)scans.asm

;用二进制显示中断向量表中(0:0〜0:3FFH)数据D0H的个数

keyEQU0D0H;用符号表示常量(关键字)

codeSEGMENT;代码段开始;用二进制显示BX内容子程

ASSUMECS:codedisplayPROC

begin:MOVAX,0000H

MOVCX,16

MOVDS,AX

rotate:ROLBX,1

MOVSI,0000H

MOVDL,BL

MOVCX,0400H

ANDDL,01H

MOVBX,0

ADDDL,30H

MOVAL,key

MOVAH,2H

next:CMP[SI],AL

INT21H

JNZpoint

LOOProtate

INCBX

RET;子程返回

point:INCSI

displayENDP

LOOPnext

CALLdisplay;调用显示子程codeENDS;代码段结束

MOVAH,4CH;返回DOSENDbegin;指示程序结束和

INT21H;程序入口

9

二、语句结构

[名字H:1助记符[操作数,,一[;注释]

丁1

名字项助记符项操作数项注释项

例:

dataSEGMENT;数据段

varDB?

dataENDS

codeSEGMENT;代码段

ASSUMECS:code,DS:data

start:MOVAX,data

MOVDS,AX

MOVvar,CL

MOVAH,4cH

INT21H;返回DOS

codeENDS

ENDstart10

【名字H:]助记符[操作数,・・・][;注释]

名字项助记符项操作数项注释项

dataSEGMENT;数据段

L名字项varDB?

dataENDS

•据语句功能的不同,

codeSEGMENT;代码段

名字项可用来表示:ASSUMECS:code,DS:data

start:MOVAX,data

段名、变量名、MOVDS,AX

标号、过程名以及常量名等。MOVvar,CL

MOVAH,4CH

INT21H;返回DOS

codeENDS

ENDstart

11

[名字H:]助记符[操作数,・・・][;注释]

名字项助记符项操作数项注释项

•名字项用一个符号表示。

对符号的规定:

①由字符A〜Z,a〜z,0〜9及符号@、$、下划线—等组成,

最长31个字符,超出部分忽略。

②不能用数字打头,以免与十六进制数相混。

③不使用汇编程序中的保留字。(如指令的助记符等)

④对定义的符号不区分大小写。

12

[名字][:]助记符[操作数,•••][;注释]

名字项助记符项操作数项注释项

2.助记符项

助记符可以是指令、伪操作中的助记符。

对于指令,汇编程序将其翻译成机器语言指令。

MOVAX,100—B80001

对于伪操作,汇编程序据其要求的功能进行处理。

dataSEGMENT-data与一段值对应

stringDB4Tsinghua5一string与一内存地址对应

13

[名字H:]助记符[操作数,・・・][;注释]

名字项助记符项操作数项注释项

3.操作数项

・操作数给出参与操作的数或数所在的地方。

•操作数多于一个时,用逗号分开。

•操作数可以是常数、寄存器、存储器操作数、

标号名、过程名或表达式等。

14

常数

给出具体的数据。可以是数字常量或字符常量。

,,数字默认十进制,也可加D表示十进制数。如1234D,1234

/,数字后加B表示二进制数。如1010B

//数字后加H表示十六进制数。如1234H

字符常量,用单引号表示。如出下

汇编时,用字符对应的ASCH表示。如31H,32H,33H,34H

例datalDB12,34,56;十进制

data!DB12H,34H,56H;十六进制

MOVAL「G,;字符

stringDB612345;字符串

15

•A、B、C、D、E、F开头的十六进制数前面加0,

与H结尾的标识符区别。

如寄存器名AH、BH、CH、DH

变量名abcdH等

例movAL,0AH

movAL,AH

movBX,OabcdH

16

[名字][:]助记符[操作数,・・・][;注释]

名字项助记符项操作数项注释项

4.注释项

•由分号引出,用来说明语句或程序的功能。

汇编程序对分号后的内容不做处理。

•作用:①注释程序,增强程序可读性。

②可放在语句最前,暂时注释某语句,调试程序用。

例、、、

;MOVAH,2;显示提示信息

;MOVDL,'A,

;INT21H

第三节指示性语句/第四节汇编语言程序举例

一、程序开始和结束

二、段定义

三、变量定义

四、ASSUME语句

购汇编语言程序举例一

了解DOS的返回,装入功能

五、表达式及表达式中的操作符

汇编语言程序例二

六、过程定义(第五节程序设计介绍)

七、等值定义(第五节程序设计介绍)

副汇编语言程序例三(第五节程序设计介绍)18

指示性语句与指令性语句:

•指令性语句是用指令系统中的指令构成的语句。

例MOVAX,BX

•指示性语句是指示汇编程序进行汇编的操作。

例MOVAX,4+8中的+

codeSEGMENT中的SEGMENT

MOVBX,OFFSETstring中的OFFSET

19

•指示性语句与指令性语句区别

一个程序经汇编,连接和装入内存后,在执行程序之前:

,指示性语句的功能已经完成,故又称伪操作。

,而指令性语句的功能尚未完成,需控制CPU去执行,才能完成。

20

数据传送源程序hello2.asm程序经汇编、连接后,装入内存的情况如下:

aaSEGMENT;数据段1D:\masm>DEBUGhello2.exe

strlDB'Hello!'

-U:查看代码段

aaENDS

12A0:0000FCCLD

bbSEGMENT;数据段2

12A0:0001B89E12MOVAX,129E

str2DB6dup(?)

bbENDS12A0:00048ED8MOVDS,AX

ccSEGMENT;代码段12A0:00068D360000LEASI,[0000]

ASSUMECS:cc12A0:000AB89F12MOVAX,129F

12A0:000D8EC0MOVES,AX

ASSUMEDS:aa,ES:bb

12A0:000F8D3E0000LEADI,[0000]

start:CLD12A0:0013B90600MOVCX,0006

MOVAX,aa12A0:0016F3REPZ

MOVDS,AX12A0:0017A4MOVSB

LEASI,strl

12A0:0018B44CMOVAH,4C

MOVAX,bb

12A0:001ACD21INT21

MOVES,AX、、、

LEADI,str2

-D129E:0L10;查看数据段1的内容

MOVCX,6

129E:000048656C6C6F210000-0000000000000000

REPMOVSB

MOVAH,4CHHello!.........

INT21H-D129F:0L10;查看数据段2的内容

ccENDS129F:00000000000000000000-0000000000000000

ENDstart—

21

常用伪操作介绍

一、程序开始和结束

二、段定义

三、变量定义

四、ASSUME语句

五、表达式中的操作符

六、过程定义

七、等值定义

22

、模块定义和程序结束伪操作

1.NAME和TITLE伪操作

格式NAME模块名

格式TITLE模块名

▲在源程序开始可用NAME或TITLE为模块命名,

模块名的作用是指示给连接程序进行连接用。

▲源程序中可无模块定义,此时源文件名作为模块名。

23

2.END伪操作

格式END启动地址

▲作用是指示源程序到此结束。

汇编程序对END之后的语句不进行处理。

程序中所有有效语句应放在END语句之前。

▲源程序中必须有END结束语句。

汇编程序对无END语句的源程序不进行处理,

只给出无END语句错误信息。

24

假设TEST.asm是一个无END语句的汇编语言源程序。

其汇编结果如下:

D:\MASMTEST;/

Microsoft(R)MacroAssemblerVersion5.10

Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.

Endoffileencounteredoninputfile

Endoffileencounteredoninputfile

49968+421181Bytessymbolspacefree

0WarningErrors

0SevereErrors

D:\

由于没有END语句,汇编程序根本没对源程序进行汇编,

此时显示警告性错误总数为0,严重性错误总数为0,

用户不要被此值的误导。

25

▲启动地址可是一个标号或过程名,指示程序的入口O

程序装入内存后,系统跳转到入口处,开始执行程序。

aaSEGMENT;数据段1D:\masm>DEBUGhello.exe

strlDB^Hello!^-u:查看代码段

aaENDS129F:0000FCCLD

bbSEGMENT;数据段2129F:0001B89D12MOVAX,129D

str2DB6dup(?)129F:00048ED8MOVDS,AX

bbENDS129F:00068D360000LEASI,[0000]

ccSEGMENT;代码段129F:000AB89E12MOVAX,129E

ASSUMECS:cc129F:000D8EC0MOVES,AX

ASSUMEDS:aa,ES:bb129F:000FBF0000MOVDI,0000

start:CLD129F:0012B90600MOVCX,0006

MOVAX,aa129F:0015F3REPZ

MOVDS,AX129F:0016A4MOVSB

LEASI,strl129F:0017B44CMOVAH,4C

MOVAX,SEGstr2129F:0019CD21INT21

MOVES,AX、、、

MOVDI,OFFSETstr2-D129d:0110;查看数据段1的内容

MOVCX,6129D:000048656C6C6F210000-00000000000000

REPMOVSB00Hello!.........

MOVAH,4CH-D129e:0110;查看数据段2的内容

INT21H129E:00000000000000000000-0000000000000000

ccENDS

ENDstart

26

二、段定义伪操作

格式段名SEGMENT

段名ENDS

▲段定义由伪操作SEGMENT开始、ENDS结束。

其中:SEGMENT和ENDS必须成对出现,

且语句前必须有段名,段名必须相同。

▲SEGMENT和ENDS语句之间可以有指令和其他伪操作,

表示存放在该段内存的变量、指令或其他伪操作对该段内存的处理

▲程序中可以定义多个段。

▲程序经汇编、连接及装入内存后,段名为一具体的段值。

27

数据传送源程序:程序经汇编、连接后,装入内存的情况如下:

aaSEGMENT;数据段1D:\masm>DEBUGhello2.exe

strlDB'Hello!'

-U:查看代码段

aaENDS

12A0:0000FCCLD

bbSEGMENT;数据段2

12A0:0001B89E12MOVAX,129E

str2DB6dup(?)

bbENDS12A0:00048ED8MOVDS,AX

ccSEGMENT;代码段12A0:00068D360000LEASI,[0000]

ASSUMECS:cc12A0:000AB89F12MOVAX,129F

12A0:000D8EC0MOVES,AX

ASSUMEDS:aa,ES:bb

12A0:000F8D3E0000LEADI,[0000]

start:CLD12A0:0013B90600MOVCX,0006

MOVAX,aa12A0:0016F3REPZ

MOVDS,AX12A0:0017A4MOVSB

LEASI,strl

12A0:0018B44CMOVAH,4C

MOVAX,bb

12A0:001ACD21INT21

MOVES,AX、、、

LEADI,str2

-D129E:0L10;查看数据段1的内容

MOVCX,6

129E:000048656C6C6F210000-0000000000000000

REPMOVSB

MOVAH,4CHHello!.........

INT21H-D129F:0L10;查看数据段2的内容

ccENDS129F:00000000000000000000-0000000000000000

ENDstart—

28

三、变量定义伪操作

格式变量名类型助记符操作数[,操作数,…]

▲用来定义程序中所用的内存操作数。

其中变量名指示内存操作数的地址(符号地址)

类型助记符指示内存操作数的类型(字节、字、双字等)

操作数指示内存操作数的内容

▲汇编程序将定义的操作数,按其类型分配内存单元数,

顺序存入变量名指向的内存单元中。

▲常用的类型助记符有:

DB指示其后的操作数为字节类型

DW指示其后的操作数为字类型

DD指示其后的操作数为双字类型

29

例・1・定义赋初值的变量yy

dataSEGMENT

xxDB1,-1OfcH

9zz

yyDW1,-1,OfcH

zzDD1r1,OfcH

dataENDS

30

例2・・定义字符串变量(只能用DB定义)

strl一546T,

73's'

dataSEGMENT69'i,

6e'n,

strlDB'TsingHua'67'g,

48

str2DB'INPUT:'OdH,OaH,$75'u'

61

str2f49T

dataENDS4e,N'

50P

55U

注意:3个及其以上的字符,546r

3a

只能用DB定义OdOdH

strlDW'abed'\/0aOaH

24$

str2DD6abcd5A

31

▲操作数可以是用常量、表达式和?表示。

*常量和表达式表示内存操作数的初始值,

其值应在其定义的类型范围内,否则汇编出错。

例aaDB270

bbDW80000人

亲用?表示不置初始值的内存操作数。

例ccDB?

*可用DUP复制操作符定义相同的操作数,其格式为

重复次数DUP(操作数)

例eeDB3DUP(4)

等价于eeDB4,4,4

32

例4:在DEBUG下查看变量存放情况。

dataSEGMENTD:\MASM>DEBUGvarible.exe

xxDB1,-1,OFCH

-U

yyDW1,-1,OFCH

12Al:0000B89E12MOVAX,U9E一段名data

zzDD1,-1,OFCH

12Al:00038ED8MOVDS,AX

strDB'TsingHua'12Al:00058D1E0000LEABX,[0000]—变量XX

bufDB4,?,4DUP(?)12Al:00098D360300LEASI,|0003]+变量yy

DB'dataend'12Al:000D8D3E0900LEADI,[0009]十变量zz

dataENDS12Al:00118D1E1500LEABX,[0015]十变量str

12Al:00158D361D00LEASI,|001D]变量buf

codeSEGMENT

12Al:0019B44CMOVAH,4C

ASSUMECS:code12Al:001BCD21INT21

ASSUMEDS:data

12Al:001DFF36243EPUSH|3E24]

start:MOVAX,data

-D129E:0L30

MOVDS,AX

LEABX,xx129E:000001FFFC0100FFFFFC-0001000000FFFFFF.

ttt

LEASI,yyxxyyZZ

LEADI,zz129E:0010FFFC000000547369-6E67487561040000TsingHua...

MOVAH,4CHbuf

INT21H129E:00200000006461746165-6E64000000000000...dataend

codeENDS'dataend'

ENDstart129E:0030B89E128ED88DIE00-008D3603008D3E09.........6...>.

四、ASSUME伪操作

格式ASSUME段寄存器:段名[,段寄存器:段名,…]

其中段寄存器为CS、DS、ES、SS中的一个

段名为用伪操作SEGMENT定义过的段名

例ASSUMECS:cc,DS:aa

▲ASSUME伪操作的作用

指示汇编程序指令中用到的标号、过程及变量所在的段。

其中对标号、过程必须用CS段寄存器指示

对变量可用CS、DS、ES、SS段寄存器指示

34

▲若未用ASSUME语句指示指令中用到的标号、

过程和变量所在的段,汇编程序将给出错误信息。

▲ASSUME语句只起指示作用,并无实际的操作。

在程序中引用定义的变量做内存操作数时,

需按寻址方式用传送指令(如MOV)给相应的段寄存器赋值。

35

value—►34

例用程序实现1234H+5678Hpl

78

dataSEGMENT56

valueDW1234H,5678Hresult—►oo

00

resultDW?

dataENDS

codeSEGMENT

ASSUMECS:code,DS:data

start:MOVAX,data;给口5赋值

MOVDS,AX

MOVAX,value;取数

ADDAX,value+2;两数相力口

MOVresult,AX;保存结果

MOVAH,4CH;返回DOS

INT21H

codeENDS

ENDstart

36

注释掉ASSUME语句,其汇编结果:

dataSEGMENTD:\MASM>MASMassume;

valueDW1234H,5678HMicrosoft(R)MacroAssemblerVersion5.10

resultDW?Copyright(C)MicrosoftCorp1981,1988.Allrights

dataENDSreserved.

codeSEGMENTassume.ASM(8):MissingorunreachableCS

;ASSUMECS:code,DS:dataassume.ASM(10):Cannotaddresswithsegmentregister

start:MOVAX,dataassume.ASM(U):Cannotaddresswithsegmentregister

MOVDS,AXassume.ASM(12):Cannotaddresswithsegmentregister

MOVAX,value

ADDAX,value+249872+421341Bytessymbolspacefree

MOVresult,AX

MOVAH,4CH0WarningErrors

INT21H4SevereErrors

codeENDS

D:\MASM>

ENDstart

37

程序中有ASSUME语句,经汇编,连接和装入内存后的情况:

dataSEGMENTD:\MASM>DEBUGassume.exe

valueDW1234H,5678HR;查看程序执行前各寄存器

resultDW?AX=OOOOBX=OOOOCX=0023DX=OOOO

SP=OOOOBP=OOOOSI=OOOODI=OOOO

dataENDS

DS=1295ES=1295SS=12A5

codeSEGMENT

CS=12A6IP=OOOO

ASSUMECS:code,DS:dataNVUPEIPLNZNAPONC

start:MOVAX,data;给。3赋值12A6:0000B8A512MOVAX,12A5

MOVDS,AX-U;查看在内存的程序

MOVAX,value;取数12A6:0000B8A512MOVAX,12A5

ADDAX,value+2;两数相加12A6:00038ED8MOVDS,AX

MOVresult,AX;保存结果12A6:0005A10000MOVAX,[0000]

MOVAH,4CH;返回DOS12A6:000803060200ADDAX,[0002]

INT21H12A6:000CA30400MOV[0004J,AX

12A6:000FB44CMOVAH,4C

codeENDS

12A6:0011CD21INT21

注意:

程序装入内存后,执行程序前,

当前的DS值并非程序定义的data段值,1295不等于12A5

38

思考:如果上例中没有MOVDS,AX程序执行的结果会怎样?

D:\MASM>DEBUGassume.exe

dataSEGMENT

R;查看程序执行前各寄存器

valueDW1234H,5678H

AX=0000BX=0000CX=0023DX=0000

resultDW?

SP=0000BP=0000SI=0000DI=0000

dataENDS

DS=1295ES=1295SS=12A5CS=12A6IP=0000

codeSEGMENT

NVUPEIPLNZNAPONC

ASSUMECSicode,DS:data

12A6:0000B8A512MOVAX,12A5

start:MOVAX,data;给口5赋值

-U;查看在内存的程序

;MOVDS,AX

12A6:0000B8A512MOVAX,12A5

MOVAX,value;取数

12A6:0003A10000MOVAX,|0000|

ADDAX,value+2;两数相加

12A6:000603060200ADDAX,|0002]

MOVresult,AX;保存结果

12A6:000AA30400MOV[0004],AX

MOVAH,4CH;返回DOS

12A6:000DB44CMOVAH,4C

INT21H

12A6:000FCD21INT21

codeENDS

39

结论:

1.ASSUME语句只起指示作用,没有赋值作用

2.程序中用到内存操作数时,

应按操作数的寻址方式,给相应的段寄存器赋值。

40

第三节指示性语句/第四节汇编语言程序举例

一、程序开始和结束

二、段定义

三、变量定义

四、ASSUME语句

购汇编语言程序举例一

了解DOS的返回,装入功能

五、表达式及表达式中的操作符

汇编语言程序例二

六、过程定义(第五节程序设计介绍)

七、等值定义(第五节程序设计介绍)

副汇编语言程序例三(第五节程序设计介绍)41

汇编语言程序举例一

42

例修BL寄存器的内容按二进制形式显示出来

(BL)10100110

3130313030313130

MOVCX,8;显示字符个数为8

next:SHLBL,1H寻显示位移至CF中

JCone;CF=1?

MOVDL,30H;CF=0,将0的ASCII放在DL中

JMPexit

one:MOVDL,31H;CF=1,将1的ASCH放在DL中

exit:MOVAH,2

INT21H;调用DOS功能显示

DECCX;循环次数减1

JNZnext;判断是否结束

、、、

43

codeSEGMENT

ASSUMECS:code

start:

MOVCX,8;显示字符个数为8

next:SHLBL,1;修显示位移至CF中

JCone;CF=1?

MOVDL,30H;CF=0,将0的ASCII放在DL中

JMPexit

one:MOVDL,31H;CF=1,将1的ASCH放在DL中

exit:MOVAH,2

INT21H;调用DOS功能显示

DECCX;循环次数减1

JNZnext;判断是否结束

codeENDS

ENDstart

44

D:\>MASMSBL;2汇编成ShowBL.obj

Microsoft(R)MacroAssemblerVersion5.10

Copyright(C)MicrosoftCorp1981,1988.Allrightsreserved.

48912+447243Bytessymbolspacefree

0WarningErrors

0SevereErrors

D:\>LINKSBL;2连接成ShowBL.exe

Microsoft(R)OverlayLinkerVersion3.61

Copyright(C)MicrosoftCorp1983-1987.Allrightsreserved.

LINK:warningL4021:nostacksegment

D:\>SBL2装载并执行ShowBL.exe

请猜想执行的结果?45

D:\>DEBUGSBL.exe2;用DEBUG装入程序

-U2

0B5E:0000B90800MOVCX,0008、

0B5E:0003D0E3SHLBL,1

0B5E:00057205JB000C

0B5E:0007B230MOVDL,30

0B5E:0009EB03JMP000Ehello.exe

0B5E:000B90NOPr用户程序

0B5E:000CB231MOVDL,31

0B5E:000EB402MOVAH,02

0B5E:0010CD21INT21

0B5E:001249DECCX

0B5E:001375EEJNZ0003)

0B5E:001509E8ORAX,BP'

0B5E:001796XCHGSI,AX与用户程序相连的

0B5E:001800F8ADDAL,BH内存内容被看作

0B5E:001AB262MOVDL,62程序时

0B5E:001CFFFF???DJ一死机

0B5E:001DEBOAJMP0029

▲复习DOS系统的启动过程

磁盘

执行用户程序后,引导程序

IO.SYS

>DOS

若要返回DOS状态,内存MSDOS.SYS

温馨提示

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

评论

0/150

提交评论