资料介绍
ARM源程序文件(即源文件)有特定的文件格式和语法规则,可以使用任意文本编辑器编写程序代码。一般地,ARM源程序文件名的后缀如表10.1所示。
表10.1 ARM源程序文件名后缀
程 序文 件 名
汇编*.S
引入文件*.INC
C程序*.C
头文件*.H
在一个项目中,至少要有一个汇编源文件,可以有多个汇编源文件或多个C程序,或者C程序文件和汇编文件两者的组合。
ARM汇编语言语句格式如下所示。
{label}{instruction/directive/pseudo-instruction}{;comment}
注意所有指令均不能顶格写,要用空格(space)或TAB开头。
其中instruction即ARM指令集中的汇编指令。Directive为ARM汇编器所支持的伪操作。pseudo-instruction为ARM汇编器所支持的伪操作。下面章节分别介绍伪操作和伪指令。
10.1 ARM汇编器所支持的伪操作
在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪操作标识符(directive),它们所完成的操作称为伪操作。伪操作在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪操作仅在汇编过程中起作用,一旦汇编结束,伪操作的使命就完成。
在ARM的汇编程序中,伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作、宏指令等。
10.1.1 符号定义(Symbol Definition)伪操作
符号定义伪操作用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的符号定义伪操作有如下几种。
· 用于定义全局变量的GBLA、GBLL和GBLS。
· 用于定义局部变量的LCLA、LCLL和LCLS。
· 用于对变量赋值的SETA、SETL、SETS。
· 为通用寄存器列表定义名称的RLIST。
· 为协处理器寄存器定义别名的CN。
· 为协处理器定义别名的CP。
· 为VFP寄存器定义名称的DN和SN。
· 为FPA浮点指针寄存器定义名称的FPA。
1.全局变量定义伪操作GBLA、GBLL和GBLS
(1)语法格式
GBLA、GBLL和GBLS伪操作用于定义一个ARM程序中的全局变量并将其初始化。其中:
GBLA伪操作用于定义一个全局的数字变量并初始化为0。
GBLL伪操作用于定义一个全局的逻辑变量并初始化为F(假)。
GBLS伪操作用于定义一个全局的字符串变量并初始化为空。
由于以上3条伪指令用于定义全局变量,因此在整个程序范围内变量名必须惟一。
语法格式如下。
《gblx》 《variable》
① 《gblx》
取值为GBLA、GBLL、GBLS之一。
② 《variable》
定义的全局变量名,在其作用范围内必须惟一。全局变量的作用范围为包含该变量的源程序。
(2)使用说明
如果用这些伪操作重新声明已经声明过的变量,变量的值将被初始化成后一次声明语句中的值。
(3)示例
① 使用伪操作声明全局变量。
GBLA Test1 ;定义一个全局的数字变量,变量名为Test1
Test1 SETA 0xaa ;将该变量赋值为0xaa
GBLL Test2 ;定义一个全局的逻辑变量,变量名为Test2
Test2 SETL {TRUE} ;将该变量赋值为真
GBLS Test3 ;定义一个全局的字符串变量,变量名为Test3
Test3 SETS “Testing” ;将该变量赋值为“Testing”
② 声明变量objectsize并设置其值为0xff,为“SPACE”操作做准备。
GBLA objectsize
Objectsize SETA oxff
SPACE objectsize
③ 下面的例子显示如何使用汇编命令设置变量的值。具体做法是使用“-pd”选项。
Armasm -pd “objectsize SETA oxff” -o objectfile sourcefile
2.局部变量定义伪操作LCLA、LCLL和LCLS
(1)语法格式
LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量并将其初始化。其中:
LCLA伪操作用于定义一个局部的数字变量并初始化为0。
LCLL伪操作用于定义一个局部的逻辑变量并初始化为F(假)。
LCLS伪操作用于定义一个局部的字符串变量并初始化为空。
以上三条伪操作用于声明局部变量,在其作用范围内变量名必须惟一。
语法格式如下。
《lclx》 《variable》
① 《gblx》
取值为LCLA、LCLL、LCLS之一。
② 《variable》
所定义的局部变量名,在其作用范围内必须惟一。局部变量作用范围为包含该局部变量的宏。
(2)使用说明
如果用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成后一次声明语句中的值。
(3)示例
① 使用伪操作声明局部变量。
LCLA Test4 ;声明一个局部的数字变量,变量名为Test4
Test3 SETA 0xaa ;将该变量赋值为0xaa
LCLL Test5 ;声明一个局部的逻辑变量,变量名为Test5
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
② 下面的例子定义一个宏,显示了局部变量的作用范围。
MACRO ;声明一个宏
$label message $a ;宏原型
LCLS err ;声明局部字符串变量
$label
INFO 0,“err”:CC::STR:$a
MEND ;宏结束,局部变量不再起作用
3.变量赋值伪操作SETA、SETL和SETS
(1)语法格式
伪指令SETA、SETL和SETS用于给一个已经定义的全局变量或局部变量赋值。
SETA伪操作用于给一个数学变量赋值;
SETL伪操作用于给一个逻辑变量赋值;
SETS伪操作用于给一个字符串变量赋值;
语法格式如下。
Variable 《setx》 expr
① Variable
变量名为已经定义过的全局变量或局部变量,表达式为将要赋给变量的值。
② 《setx》
取值为SETA、SETL、SETS之一。
③ expr
数学、逻辑或字符串表达式,也就是将要赋予变量的值。
(2)使用说明
在向变量赋值前必须先声明变量。
也可以在汇编指令中预定义变量,如:
“Armasm --pd ”objectsize SETA oxff“ --o objectfile sourcefile”
(3)示例
① 为预先定义的变量赋值。
LCLA Test3 ;声明一个局部的数字变量,变量名为Test3
Test3 SETA 0xaa ;将该变量赋值为0xaa
LCLL Test4 ;声明一个局部的逻辑变量,变量名为Test4
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
② 使用变量赋值伪操作,定义一些程序相关内容。
GBLA versionNumber
VersionNumber SETA 21
GBLL Debug
Debug SETL {TRUE}
GBLS versionString
VersionString SETS “version 1.0”
4.通用寄存器列表定义伪操作RLIST
(1)语法格式
RLIST伪操作可用于对一个通用寄存器列表定义名称,使用该伪操作定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序根据寄存器的编号由低到高,与列表中的寄存器排列次序无关。
语法格式如下。
Name RLIST {list-of-registers}
① Name
寄存器列表的名称。
注意该名称不能和已经定义寄存器或协处理器名称相同。
② list-of-registers
通用寄存器列表。列表中的寄存器用“,”隔开,如果是编号连续的通用寄存器可以用“-”指定寄存器范围。具体用法参见程序示例。
(2)使用说明
在使用ARM汇编编译器编译源文件时,可以使用“-checkreg”选项来指定汇编器进行寄存器检查。如果汇编器检测到寄存器列表中的寄存器编号非升序排列,将给出编译警告。
(3)示例
① 将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。
RegList RLIST {R0-R5,R8,R10} ;
② 使用“-”在寄存器列表中,指定寄存器范围。
Context RLIST {r0-r6,r8,r10-r12,r15} ;
5.协处理器寄存器名称定义伪操作CN
(1)语法格式
CN伪操作为协处理器寄存器定义名称。
语法格式如下。
Name CN expr
① Name
定义的协处理器寄存器的名称。
注意该名称不能和已经定义寄存器或协处理器名称相同。
② expr
协处理器寄存器编号。
(2)使用说明
协处理器寄存器编号的数值范围为0~15。避免使用不同的名称定义同一物理寄存器。
注意协处理器寄存器的名称不能被定义为c0~c15,这些名称已经被汇编器预定义。
(3)示例
将协处理器寄存器6命名为Power。
Power CN 6
6.协处理器名称定义伪操作CP
(1)语法格式
CP伪操作为指定的协处理器定义名称。
语法格式如下。
Name CP expr
① Name
定义的协处理器名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
协处理器编号。
(2)使用说明
协处理器编号范围为0~15。
使用CP伪操作为协处理器定义一个方便记忆的名称,可以使程序员更高效地编写代码。
注意协处理器寄存器的称不能被定义为p0~p15,这些名称已经被汇编器预定义。
(3)示例
将协处理器6命名为Dmu。
Dmu CP 6
7.VFP寄存器名称定义伪操作DN/SN
(1)语法格式
DN伪操作为双精度(double-precision)VFP寄存器定义名称。D0~D15是汇编器预先定义的,用户不能使用。
SN伪操作为单精度(single-precision)VFP寄存器定义名称。S0~S31是汇编器预先定义的,用户不能使用。
语法格式如下。
Name DN expr
Name SN expr
① Name
指定的VFP寄存器的名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
指定VFP寄存器编号。对于双精度寄存器编号范围为0~15;对于单精度寄存器编号范围为0~31。
(2)示例
① 将VFP双精度寄存器6定义为energy。
energy DN 6
② 将VFP单精度寄存器16定义为mass。
mass SN 16
8.浮点寄存器名称定义伪操作FN
(1)语法格式
FN为一个FPA浮点寄存器定义名称。F0~F7是汇编器预先定义的,用户不能使用。
注意FPA的使用在ARM公司新发布的编译器RVCT中已不再支持。
语法格式如下。
Name FN expr
① Name
指定的浮点寄存器的名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
指定浮点寄存器编号。编号范围为0~7。
(2)示例
为浮点寄存器6指定名称为Energy。
Energy FN 6
表10.1 ARM源程序文件名后缀
程 序文 件 名
汇编*.S
引入文件*.INC
C程序*.C
头文件*.H
在一个项目中,至少要有一个汇编源文件,可以有多个汇编源文件或多个C程序,或者C程序文件和汇编文件两者的组合。
ARM汇编语言语句格式如下所示。
{label}{instruction/directive/pseudo-instruction}{;comment}
注意所有指令均不能顶格写,要用空格(space)或TAB开头。
其中instruction即ARM指令集中的汇编指令。Directive为ARM汇编器所支持的伪操作。pseudo-instruction为ARM汇编器所支持的伪操作。下面章节分别介绍伪操作和伪指令。
10.1 ARM汇编器所支持的伪操作
在ARM汇编语言程序里,有一些特殊指令助记符,这些助记符与指令系统的助记符不同,没有相对应的操作码,通常称这些特殊指令助记符为伪操作标识符(directive),它们所完成的操作称为伪操作。伪操作在源程序中的作用是为完成汇编程序作各种准备工作的,这些伪操作仅在汇编过程中起作用,一旦汇编结束,伪操作的使命就完成。
在ARM的汇编程序中,伪操作主要有符号定义伪操作、数据定义伪操作、汇编控制伪操作、宏指令等。
10.1.1 符号定义(Symbol Definition)伪操作
符号定义伪操作用于定义ARM汇编程序中的变量、对变量赋值以及定义寄存器的别名等操作。常见的符号定义伪操作有如下几种。
· 用于定义全局变量的GBLA、GBLL和GBLS。
· 用于定义局部变量的LCLA、LCLL和LCLS。
· 用于对变量赋值的SETA、SETL、SETS。
· 为通用寄存器列表定义名称的RLIST。
· 为协处理器寄存器定义别名的CN。
· 为协处理器定义别名的CP。
· 为VFP寄存器定义名称的DN和SN。
· 为FPA浮点指针寄存器定义名称的FPA。
1.全局变量定义伪操作GBLA、GBLL和GBLS
(1)语法格式
GBLA、GBLL和GBLS伪操作用于定义一个ARM程序中的全局变量并将其初始化。其中:
GBLA伪操作用于定义一个全局的数字变量并初始化为0。
GBLL伪操作用于定义一个全局的逻辑变量并初始化为F(假)。
GBLS伪操作用于定义一个全局的字符串变量并初始化为空。
由于以上3条伪指令用于定义全局变量,因此在整个程序范围内变量名必须惟一。
语法格式如下。
《gblx》 《variable》
① 《gblx》
取值为GBLA、GBLL、GBLS之一。
② 《variable》
定义的全局变量名,在其作用范围内必须惟一。全局变量的作用范围为包含该变量的源程序。
(2)使用说明
如果用这些伪操作重新声明已经声明过的变量,变量的值将被初始化成后一次声明语句中的值。
(3)示例
① 使用伪操作声明全局变量。
GBLA Test1 ;定义一个全局的数字变量,变量名为Test1
Test1 SETA 0xaa ;将该变量赋值为0xaa
GBLL Test2 ;定义一个全局的逻辑变量,变量名为Test2
Test2 SETL {TRUE} ;将该变量赋值为真
GBLS Test3 ;定义一个全局的字符串变量,变量名为Test3
Test3 SETS “Testing” ;将该变量赋值为“Testing”
② 声明变量objectsize并设置其值为0xff,为“SPACE”操作做准备。
GBLA objectsize
Objectsize SETA oxff
SPACE objectsize
③ 下面的例子显示如何使用汇编命令设置变量的值。具体做法是使用“-pd”选项。
Armasm -pd “objectsize SETA oxff” -o objectfile sourcefile
2.局部变量定义伪操作LCLA、LCLL和LCLS
(1)语法格式
LCLA、LCLL和LCLS伪指令用于定义一个ARM程序中的局部变量并将其初始化。其中:
LCLA伪操作用于定义一个局部的数字变量并初始化为0。
LCLL伪操作用于定义一个局部的逻辑变量并初始化为F(假)。
LCLS伪操作用于定义一个局部的字符串变量并初始化为空。
以上三条伪操作用于声明局部变量,在其作用范围内变量名必须惟一。
语法格式如下。
《lclx》 《variable》
① 《gblx》
取值为LCLA、LCLL、LCLS之一。
② 《variable》
所定义的局部变量名,在其作用范围内必须惟一。局部变量作用范围为包含该局部变量的宏。
(2)使用说明
如果用这些伪操作重新声明已经声明过的变量,则变量的值将被初始化成后一次声明语句中的值。
(3)示例
① 使用伪操作声明局部变量。
LCLA Test4 ;声明一个局部的数字变量,变量名为Test4
Test3 SETA 0xaa ;将该变量赋值为0xaa
LCLL Test5 ;声明一个局部的逻辑变量,变量名为Test5
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
② 下面的例子定义一个宏,显示了局部变量的作用范围。
MACRO ;声明一个宏
$label message $a ;宏原型
LCLS err ;声明局部字符串变量
$label
INFO 0,“err”:CC::STR:$a
MEND ;宏结束,局部变量不再起作用
3.变量赋值伪操作SETA、SETL和SETS
(1)语法格式
伪指令SETA、SETL和SETS用于给一个已经定义的全局变量或局部变量赋值。
SETA伪操作用于给一个数学变量赋值;
SETL伪操作用于给一个逻辑变量赋值;
SETS伪操作用于给一个字符串变量赋值;
语法格式如下。
Variable 《setx》 expr
① Variable
变量名为已经定义过的全局变量或局部变量,表达式为将要赋给变量的值。
② 《setx》
取值为SETA、SETL、SETS之一。
③ expr
数学、逻辑或字符串表达式,也就是将要赋予变量的值。
(2)使用说明
在向变量赋值前必须先声明变量。
也可以在汇编指令中预定义变量,如:
“Armasm --pd ”objectsize SETA oxff“ --o objectfile sourcefile”
(3)示例
① 为预先定义的变量赋值。
LCLA Test3 ;声明一个局部的数字变量,变量名为Test3
Test3 SETA 0xaa ;将该变量赋值为0xaa
LCLL Test4 ;声明一个局部的逻辑变量,变量名为Test4
Test4 SETL {TRUE} ;将该变量赋值为真
LCLS Test6 ;定义一个局部的字符串变量,变量名为Test6
Test6 SETS “Testing” ;将该变量赋值为“Testing”
② 使用变量赋值伪操作,定义一些程序相关内容。
GBLA versionNumber
VersionNumber SETA 21
GBLL Debug
Debug SETL {TRUE}
GBLS versionString
VersionString SETS “version 1.0”
4.通用寄存器列表定义伪操作RLIST
(1)语法格式
RLIST伪操作可用于对一个通用寄存器列表定义名称,使用该伪操作定义的名称可在ARM指令LDM/STM中使用。在LDM/STM指令中,列表中的寄存器访问次序根据寄存器的编号由低到高,与列表中的寄存器排列次序无关。
语法格式如下。
Name RLIST {list-of-registers}
① Name
寄存器列表的名称。
注意该名称不能和已经定义寄存器或协处理器名称相同。
② list-of-registers
通用寄存器列表。列表中的寄存器用“,”隔开,如果是编号连续的通用寄存器可以用“-”指定寄存器范围。具体用法参见程序示例。
(2)使用说明
在使用ARM汇编编译器编译源文件时,可以使用“-checkreg”选项来指定汇编器进行寄存器检查。如果汇编器检测到寄存器列表中的寄存器编号非升序排列,将给出编译警告。
(3)示例
① 将寄存器列表名称定义为RegList,可在ARM指令LDM/STM中通过该名称访问寄存器列表。
RegList RLIST {R0-R5,R8,R10} ;
② 使用“-”在寄存器列表中,指定寄存器范围。
Context RLIST {r0-r6,r8,r10-r12,r15} ;
5.协处理器寄存器名称定义伪操作CN
(1)语法格式
CN伪操作为协处理器寄存器定义名称。
语法格式如下。
Name CN expr
① Name
定义的协处理器寄存器的名称。
注意该名称不能和已经定义寄存器或协处理器名称相同。
② expr
协处理器寄存器编号。
(2)使用说明
协处理器寄存器编号的数值范围为0~15。避免使用不同的名称定义同一物理寄存器。
注意协处理器寄存器的名称不能被定义为c0~c15,这些名称已经被汇编器预定义。
(3)示例
将协处理器寄存器6命名为Power。
Power CN 6
6.协处理器名称定义伪操作CP
(1)语法格式
CP伪操作为指定的协处理器定义名称。
语法格式如下。
Name CP expr
① Name
定义的协处理器名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
协处理器编号。
(2)使用说明
协处理器编号范围为0~15。
使用CP伪操作为协处理器定义一个方便记忆的名称,可以使程序员更高效地编写代码。
注意协处理器寄存器的称不能被定义为p0~p15,这些名称已经被汇编器预定义。
(3)示例
将协处理器6命名为Dmu。
Dmu CP 6
7.VFP寄存器名称定义伪操作DN/SN
(1)语法格式
DN伪操作为双精度(double-precision)VFP寄存器定义名称。D0~D15是汇编器预先定义的,用户不能使用。
SN伪操作为单精度(single-precision)VFP寄存器定义名称。S0~S31是汇编器预先定义的,用户不能使用。
语法格式如下。
Name DN expr
Name SN expr
① Name
指定的VFP寄存器的名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
指定VFP寄存器编号。对于双精度寄存器编号范围为0~15;对于单精度寄存器编号范围为0~31。
(2)示例
① 将VFP双精度寄存器6定义为energy。
energy DN 6
② 将VFP单精度寄存器16定义为mass。
mass SN 16
8.浮点寄存器名称定义伪操作FN
(1)语法格式
FN为一个FPA浮点寄存器定义名称。F0~F7是汇编器预先定义的,用户不能使用。
注意FPA的使用在ARM公司新发布的编译器RVCT中已不再支持。
语法格式如下。
Name FN expr
① Name
指定的浮点寄存器的名称。
注意该名称不能和已经定义寄存器或其他协处理器名称相同。
② expr
指定浮点寄存器编号。编号范围为0~7。
(2)示例
为浮点寄存器6指定名称为Energy。
Energy FN 6
下载该资料的人也在下载
下载该资料的人还在阅读
更多 >
- MPASM汇编器至MPLAB XC8 PIC汇编器移植指南
- ARM汇编语言的源程序免费下载 16次下载
- 51汇编器实现过程 5次下载
- masm版本20125汇编器软件下载 0次下载
- ARM汇编编译器的使用 5次下载
- ARM汇编程序设计之汇编语言文件格式 7次下载
- ARM汇编器所支持的伪指令浅析 2次下载
- ARM IAR汇编器参考指南 16次下载
- 宏汇编器及相关应用程序 51次下载
- 源码公开的MCS-51单片机的宏汇编器
- 开放式汇编器系统的设计
- PIC全系列汇编器(MPASM)(软件)
- Linux 下51 汇编器的设计及实现
- Linux下51汇编器的设计及实现
- 开放式汇编器系统的设计
- 讲讲ARM指令集格式以及常用的ARM汇编指令 2543次阅读
- 集成开发环境STM32CubeIDE下查看汇编代码的相关配置操作 2956次阅读
- 零基础学ARM:汇编伪指令、lds详解 2548次阅读
- 米尔科技Keil C51 官方开发工具介绍 3016次阅读
- 米尔科技Keil C166 开发工具介绍 1803次阅读
- 米尔科技Keil C251 开发工具 介绍 3619次阅读
- 米尔科技ARM RVDS 4.1 官方开发工具介绍 2198次阅读
- ARM体系结构所支持的异常和具体含义 3828次阅读
- ARM架构和总线协议如何支持Linux原子操作? 6527次阅读
- 什么叫arm架构?ARM的技术实现 2w次阅读
- 反汇编器软件设计分析和具体实现 1310次阅读
- 学习ARM + Linux之前要讲解用ADS或RealViewMDK去调试ARM开发板的原因 5810次阅读
- 分享一些单片机汇编语言常见的语法和程序错误 7479次阅读
- arm的汇编指令精选合辑 2058次阅读
- 单片机编程之汇编语言基础-常用指令和程序模式 1.5w次阅读
下载排行
本周
- 1电子电路原理第七版PDF电子教材免费下载
- 0.00 MB | 1490次下载 | 免费
- 2单片机典型实例介绍
- 18.19 MB | 92次下载 | 1 积分
- 3S7-200PLC编程实例详细资料
- 1.17 MB | 27次下载 | 1 积分
- 4笔记本电脑主板的元件识别和讲解说明
- 4.28 MB | 18次下载 | 4 积分
- 5开关电源原理及各功能电路详解
- 0.38 MB | 10次下载 | 免费
- 6基于AT89C2051/4051单片机编程器的实验
- 0.11 MB | 4次下载 | 免费
- 7蓝牙设备在嵌入式领域的广泛应用
- 0.63 MB | 3次下载 | 免费
- 89天练会电子电路识图
- 5.91 MB | 3次下载 | 免费
本月
- 1OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 2PADS 9.0 2009最新版 -下载
- 0.00 MB | 66304次下载 | 免费
- 3protel99下载protel99软件下载(中文版)
- 0.00 MB | 51209次下载 | 免费
- 4LabView 8.0 专业版下载 (3CD完整版)
- 0.00 MB | 51043次下载 | 免费
- 5555集成电路应用800例(新编版)
- 0.00 MB | 33562次下载 | 免费
- 6接口电路图大全
- 未知 | 30320次下载 | 免费
- 7Multisim 10下载Multisim 10 中文版
- 0.00 MB | 28588次下载 | 免费
- 8开关电源设计实例指南
- 未知 | 21539次下载 | 免费
总榜
- 1matlab软件下载入口
- 未知 | 935053次下载 | 免费
- 2protel99se软件下载(可英文版转中文版)
- 78.1 MB | 537791次下载 | 免费
- 3MATLAB 7.1 下载 (含软件介绍)
- 未知 | 420026次下载 | 免费
- 4OrCAD10.5下载OrCAD10.5中文版软件
- 0.00 MB | 234313次下载 | 免费
- 5Altium DXP2002下载入口
- 未知 | 233045次下载 | 免费
- 6电路仿真软件multisim 10.0免费下载
- 340992 | 191183次下载 | 免费
- 7十天学会AVR单片机与C语言视频教程 下载
- 158M | 183277次下载 | 免费
- 8proe5.0野火版下载(中文版免费下载)
- 未知 | 138039次下载 | 免费
评论
查看更多