51系列单片机程序设计解析
合集下载
MCS-51单片机程序设计

+1
,当X>0
Y= 0
,当X=0
开始
-1
,当X<0
X=0
N
程序流程框图如图4.1所示。 Y
Y←0
X>0 Y
Y←1
N Y←-1
结束
程序如下: ORG
MOV CJNE MOV AJMP MP1: JB MOV LJMP MP2: MOV HERE: SJMP
1000H A,R0 A,#00H,MP1 R1,#00H HERE ACC.7 MP2 R1,#01H HERE R1,#0FFH HERE
1000H DPTR,#2000H DPL DPH DPTR,#3000H R2,DPL R3,DPH
;源数据区首地址 ;源首址暂存堆栈
;目的数据区首地址 ;目的首址暂存寄存器
LOOP:
POP POP MOVX INC PUSH PUSH MOV MOV MOVX MOV MOV DJNZ SJMP
;源数据区首地址 ;目的数据区首地址 ;循环次数 ;取数据 ;数据传送 ;源地址加1 ;目的地址加1 ;循环控制 ;结束
例4.8 外部RAM之间的数据传送程序。
把外部RAM 2000H开始单元中的数据传送到外部RAM 3000H开始的单 元中,数据个数在内部RAM的35H单元中。
START:
ORG MOV PUSH PUSH MOV MOV MOV
K=?
K=0
K=1
转向 0 分支 转向 1 分支
K= n-1
K=n
转向 n-1 分支 转向 n 分支
例4.5 设内部RAM的30H单元有一个数,根据该数值的不同 转移到不同的程序段进行处理,设数值的范围为0~10的 无符号数。
第四章 单片机C51简介

五、C51常用运算符
赋值运算符、算数运算符、关系运算符、 逻辑运算符、位运算符、条件运算符….
位运算符 位运算是按位对变量进行运算的,但并不改变参与 运算的变量的值。 C51 中位运算符只能对整数进行操作,不能对浮点 数进行操作。C51中的位运算符有: & 按位与 ︱ 按位或 ∧ 按位异或 ~ 按位取反 << 左移 >> 右移
//声明单个位
2. C51数据存储类型
存储类型 data 与存储空间的对应关系 直接寻址片内数据存储区,访问速度快(128字节) 可位寻址片内数据存储区,允许位与字节混合访问(16字 节) 间接寻址片内数据存储区,可访问片内全部RAM地址空 间(256字节) 分页寻址片外数据存储区(低256字节) 寻址片外数据存储区(64K字节) 寻址代码存储区(64K字节)
bit bdata flags;
float idata x,y,z;
unsigned int pdata dimension; unsigned char xdata vector[10][4][4];
unsigned char code a[]={0x00,0x01};
P78 例4-2、4-3(自行看书)
•sfr16 16位特殊功能寄存器
sfr16占用两个内存单元,值域为 0~65535。sfr16和sfr 一样用于操作特殊功能寄存 器,不同的是它用于操作占两 个字节的寄存器,如定时器T2。 sfr16 T2=0xCC; //定义8052定时器2,低8位地址为
// T2L=CCH,高8位T2H=CDH
指针
当定义一个指针变量时,若未指定它所指向的 对象的存储类型,则该指针变量被认为是一般 指针; 指定了它所指对象的存储类型,则该指针被认 为是基于存储器的指针。
第三章MCS51系列单片机指令系统及汇编语言程序设计

AJMP addr11 绝对转移指令为2K地址范围内的转移指令,对转移目的地址的要求与 ACALL指令中对子程序入口地址的要求相同。 【3】短转移指令
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
SJMP rel ;PC+ 2 + rel→PC 短转移指令为一页地址范围内的相对转移指令。因为rel为1字节补码 偏移量,且SJMP rel指令为2字节指令,所以转移范围为-126D~+ 129D 【4】间接转移指令
表3.4 程序存储器空间中的32个基本2K地址范围
0000H~07FFH 0800H~0FFFH 1000H~17FFH 1800H~1FFFH 2000H~27FFH 2800H~2FFFH 3000H~37FFH 3800H~3FFFH 4000H~47FFH 4800H~4FFFH 5000H~57FFH
3. 寄存器寻址
以通用寄存器的内容为操作数的寻址方式。通用寄存 器包括:A,B,DPTR,R0~R7。其中,R0~R7必须在 工作寄存器组之中。
例如:INC R0 ;(R0)+1→R0
需要注意的是,A和B既是通用寄存器,又是具有直 接地址的特殊功能寄存器。
4. 寄存器间接寻址
以寄存器中的内容为地址,该地址中的内容为操作数的寻址方式。能够 用于寄存器间接寻址的寄存器有:R0,R1,DPTR,SP。其中,R0,R1必 须在工作寄存器组之中,SP仅用于堆栈操作。
MCS-51单片机共有111条指令,按功能分类, MCS-51指令系统可分为5大类:
➢ 数据传送类指令(共29条) ➢ 算术操作类指令(共24条) ➢ 逻辑操作类指令(共24条) ➢ 控制转移类指令(共17条) ➢ 布尔变量操作类指令(共17条)
1.数据传送类指令(共29条)
以累加器A为目的操作数类指令(4条)
第3章51系列单片机程序设计(C语言部分)

idata
间接寻址片内数据存储区,可访问片内全部RAM地址空间(256字节)
pdata
分页寻址片外数据存储区(256字节)由MOV @Ri访问(i=0,1)
xdata
片外数据存储区(64 KB)由MOVX @DPTR访问
code
程序存储器64 KB空间,由MOVC @DPTR访问
第3章 51系列单片机程序设计(C部分)
/* Ary37定义为abry[3]的第7位 */
第3章 51系列单片机程序设计(C部分)
3.5 数 组
数组:数组是一组类型相同 有序数据的集合。用数组名 和下标来唯一确定数组中的 元素。
第3章 51系列单片机程序设计(C部分)
3.5.1 一维数组
一、一维数组的定义 形式:类型说明符 数组名 [常量表达式]
使用C51进行编程时,MCS-51片内的I/O口与片外扩展的I/O可以统一在一个头文 件中定义,也可以在程序中(一般在开始的位置)进行定义。
对于MCS-51片内I/O口按特殊功能寄存器方法定义。 例如:
sfr P0=0x80 ; /* 定义P0口,地址为80H */ sfr P1=0x90 ; /* 定义P1口,地址为90H */
第3章 51系列单片机程序设计(C部分)
3.4.3 C51数据的存储类型与MCS-51存储结构
表 3.4.2 C51存储类型与MCS-51存储空间的对应关系
存储类型 与存储空间的对应关系
data
直接寻址片内数据存储区,访问速度快(128字节)
bdata
可位寻址片内数据存储区,允许位与字节混合访问(16字节)
据 浮点型(float) 类
型 指针类型
详细见表3.4.1
第3章_MCS-51单片机指令系统及汇编语言程序设计2

3. 汇编语言的语句格式是什么?使用标号有什么限制?注释段起什么作用? 答案: MCS-51汇编语言的语句格式应符合下列结构: 【标号:】 操作码 【操作数】【;注释】 标号位于语句的开始,由以字母开头的字母和数字组成,它代表该语句的地址。 标号与操作码之间要用“:”隔开,标号与“:”之间不能有空格,“:”与操 作码之间可以有空格。 注释在语句的最后,以“;”开始,是说明性的文字,与语句的具体功能无关。 4. MCS-51汇编语言有哪几条常用伪指令?各起什么作用? 答案: ORG:汇编程序起始地址,用来说明其后程序段在存储器中存放的起始地址; EQU:赋值指令,用来给变量标号赋予一个确定的数值; DB:定义数据字节,指令按字节数的形式把数据存放在存储单元中; DW:定义数据字,按字(双字节)的形式把数据存放在存储单元中; DS:定义存储区,从指定的地址单元开始,保留一定数量的存储单元; BIT:位定义,其功能是把位地址赋给字符名称; END:汇编结束,表明汇编语言程序结束。
2.顺序程序
顺序程序是指程序中没有使用转移类指令的程序段,机器执行这 类程序时也只需按照先后顺序依次执行,中间不会有任何分支、循环, 也不需要调用子程序。 例:将一个单字节十六进制数转换成BCD码。 解:算法分析。单字节十六进制数在0~255之间,将其除以100后, 商为百位数;余数除以10,商为十位数,余数为个位数。 设单字节数存放在40H,转换后,百位数存放在R0中,十位数存 放在R1中,个位数存放在R2中,具体程序如下: ORG 0030H MOV A, 40H ;将单字节十六进制数送入A中 MOV B,#64H ;将100送入B中, #64H可直接写成#100 DIV AB MOV R0,A ;百位数送R0,余数在B中 XCH A,B ;余数送入A中 MOV B,#0AH ;将10送入B中, #0AH可直接写成#10 DIV AB ;商为十位数,余数为个位数 MOV R1,A MOV R2,B SJMP $
第4章 MCS-51单片机汇编语言程序设计(2)

START:MOV DPTR,#TAB : MOV A,R7 ADD A,R7 MOV R3,A MOVC A,@A+DPTR
XCH A,R3 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR TAB DW DW A0 A1
…………. DW AN
INC
DPTR
MOVX A,@DPTR SUBB A,R7 JNC XCH BIG1 A,R7
BIG0:INC DPTR
实现程序如下: 实现程序如下
START:CLR C : MOV DPTR,#ST1 , MOVX A,@DPTR , MOV R7,A
MOVX @DPTR,A RET BIG1:MOVX A,@DPTR SJMP BIG0
实现程序如下: 实现程序如下 MOV 30H, 20H ANL 30H,#00011111B MOV A,21H SWAP A RL A ANL A,#11100000B ORL 30H,A
第4章 MCS-51单片机汇编语言程序设计
实现程序如下: 实现程序如下 例 A,@R1 ADDC4.3 做3个字节的 无符号的加法. 无符号的加法.设一个加 MOV R0,#52H , MOV @R0,A 数存放在内部RAM 50H、 RAM的 数存放在内部RAM的50H、 MOV R1,#55H , DEC R0 51H、52H单元中 单元中, 51H、52H单元中,另一 DEC R1 RAM的53H、 MOV A,@R0 个加数存放在RAM 个加数存放在RAM的53H、 MOV A,@R0 54H、55H单元中 单元中, 54H、55H单元中,相加 ADD A,@R1 结果存内部RAM的50H、 结果存内部RAM的50H、 RAM ADDC A,@R1 51H、52H单元 单元, 51H、52H单元,均从高 MOV @R0,A 字节开始存放, 字节开始存放,进位存放 MOV 00H,C 在位寻址区的00H位中。 00H位中 在位寻址区的00H位中。 MOV @R0,A DEC DEC R0 R1
XCH A,R3 INC A MOVC A,@A+DPTR MOV DPL,A MOV DPH,R3 CLR A JMP @A+DPTR TAB DW DW A0 A1
…………. DW AN
INC
DPTR
MOVX A,@DPTR SUBB A,R7 JNC XCH BIG1 A,R7
BIG0:INC DPTR
实现程序如下: 实现程序如下
START:CLR C : MOV DPTR,#ST1 , MOVX A,@DPTR , MOV R7,A
MOVX @DPTR,A RET BIG1:MOVX A,@DPTR SJMP BIG0
实现程序如下: 实现程序如下 MOV 30H, 20H ANL 30H,#00011111B MOV A,21H SWAP A RL A ANL A,#11100000B ORL 30H,A
第4章 MCS-51单片机汇编语言程序设计
实现程序如下: 实现程序如下 例 A,@R1 ADDC4.3 做3个字节的 无符号的加法. 无符号的加法.设一个加 MOV R0,#52H , MOV @R0,A 数存放在内部RAM 50H、 RAM的 数存放在内部RAM的50H、 MOV R1,#55H , DEC R0 51H、52H单元中 单元中, 51H、52H单元中,另一 DEC R1 RAM的53H、 MOV A,@R0 个加数存放在RAM 个加数存放在RAM的53H、 MOV A,@R0 54H、55H单元中 单元中, 54H、55H单元中,相加 ADD A,@R1 结果存内部RAM的50H、 结果存内部RAM的50H、 RAM ADDC A,@R1 51H、52H单元 单元, 51H、52H单元,均从高 MOV @R0,A 字节开始存放, 字节开始存放,进位存放 MOV 00H,C 在位寻址区的00H位中。 00H位中 在位寻址区的00H位中。 MOV @R0,A DEC DEC R0 R1
51单片机C语言程序设计-图文

03 8 只 LED 左右来回点亮
/* 名称:8 只 LED 左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {
case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
case 3: //东西向红灯,南北向绿灯亮 RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0; DelayMS(2000); Operation_Type=4; break;
3 Ykcsh 呈献
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; //延时 void DelayMS(uint x) {
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; while(1) { //从数组中读取数据送至 P0 和 P2 口显示
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {
/* 名称:8 只 LED 左右来回点亮 说明:程序利用循环移位函数_crol_和_cror_形成来回滚动的效果
*/ #include<reg51.h> #include<intrins.h> #define uchar unsigned char #define uint unsigned int //延时 void DelayMS(uint x) {
case 2: //东西向黄灯闪烁,绿灯关闭 DelayMS(300); YELLOW_A=~YELLOW_A;GREEN_A=1; if(++Flash_Count!=10) return; //闪烁 5 次 Flash_Count=0; Operation_Type=3; break;
case 3: //东西向红灯,南北向绿灯亮 RED_A=0;YELLOW_A=1;GREEN_A=1; RED_B=1;YELLOW_B=1;GREEN_B=0; DelayMS(2000); Operation_Type=4; break;
3 Ykcsh 呈献
0x00,0xff,0x00,0xff,0x00,0xff,0x00,0xff }; //延时 void DelayMS(uint x) {
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; while(1) { //从数组中读取数据送至 P0 和 P2 口显示
uchar i; while(x--) {
for(i=0;i<120;i++); } } //主程序 void main() { uchar i; P2=0x01; while(1) {
单片机原理及C51应用设计-理论篇-第3章

1.选择语句if
if语句是用来判断所给定的条件是否满足的一种操 作,它有两种基本形式。
(1) if(表达式) { 语句; }
(2) if(条件表达式) {语句1;}
else {语句2;}
3.2.3 常量与变量
1.常量 常量是在程序执行过程中其值不能改变的量。常量的数
据类型有整型、浮点型、字符型利字符串型等,C51编译器 还扩充了一种位(bit)标量。 (1)整型常量 十进制整数。如1234、-5678、0等。 十六进制整数。以0x开头的数是十六进制数,如0xl23。 (2)浮点型常量 浮点型常量有十进制表示形式和指数表示形式。 如0.3141。
3.1.1 C51与标准C的异同
1. C51虽然继承了标准C语言的绝大部分的特性,而且基本 语法相同。特定的硬件结构上有所扩展,如关键字sbit、 data、idata、xdata、code等。
2. 应用C51特别要注重对系统资源的理解,因为单片机的系 统资源相对PC机来说很贫乏,特别是对内部RAM,其中 的每一字节都要充分利用。
预处理命令 #include< >
函数说明 long fun1( );
float funຫໍສະໝຸດ ( );功能函数1 fun1( )
函数体
{
}
功能函数2 fun2( )
函数体
{
主函数 主函数体
} main( ) {
}
3.2.1 数据类型
表3-1 C51基本数据类型
3.2.2 运算符及表达式
表3-2 C51的运算符
3.2 C51程序设计基础
一般C语言程序具有如下的结构:
预处理命令 #include< >
函数说明 long fun1( );
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式 2、汇编语言的语句格式 MCS-51系列单片机汇编语言的语句格式如下: [<标号>]:<操作码> [<操作数>];[<注释>] ◇ [<标号>] —— 标号是汇编语句地址的符号表示。 ◇ <操作码> ——用于规定该语句所执行的操作。 ◇ [<操作数>] —— 操作数为汇编指令的操作提供数据或地址 ◇ [<注释>] ——注释是指对一条汇编语句或一段汇编语言程序 的说明,以增加汇编语言程序的可读性。
4.1.2 汇编语言伪指令
4、字节数据赋值伪指令DB 格式:[标号:] DB数据表(字节) 说明:该伪指令用于定义(赋值)若干字节数据表 (固定常数),并存放在指定地址单元开始的程序 存储器中。 例如: ORG 0050H TABLE:DB 99H,88H 即表示在地址0050H(标号TABLE)开始定义(赋 值)两个字节数据(99H,88H)。
4. 2 基本程序结构
4.2.1 顺序结构
例4-1,将内部 RAM 中 20H 单元和 30H 单元的无符号数 相加,存入R0(高位)和R1(低位)中。源程序如下: MOV A,20H ;取出被加数 ADD A,30H ;两数相加 MOV R1,A ;低位存入R1 CLR A ; ADDC A,#00H ;取进位标志 MOV R0,A ;高位存入R0 RET
4. 2 基本程序结构
4.2.2 分支结构
分支结构程序利用条件转移指令,使程序在执行 某一指令后(产生测试条件),根据所规定的条件 满足与否改变其后程序执行的顺序(产生分叉), 即根据判断条件的成立与否来确定程序的走向。分 支结构程序的特征是程序段中有控制转移类指令 (条件转移指令)。 依据程序分叉的数目,可将分支结构程序细分为 单分支选择结构和多分支选择结构两类。
单片机原理与接口技术
第四章 MCS-51系列单片机程序设计
2010/5/18
4.1 汇编语言程序设计概述
计算机是仿照人的思维方式顺序执行一条条指令来完成特定 任务的机器,计算机程序因此被定义为指令或语句的“有序 集合”,程序设计是指编写计算机程序的过程。 汇编语言是用指令助记符等表示的计算机指令,采用汇编语 言编写的程序被称为汇编语言程序。汇编语言程序具有代码 效率高(编译后的指令代码占用存储空间小)和执行时间短 等优势和特点。 由于单片机的存储器等资源有限,单片机应用程序中经常需 要面对硬件操作,且对程序执行的时间有较为严格的要求或 限制。因此,汇编语言程序设计是单片机应用系统设计的重 要基础之一。
4.1 汇编语言程序设计概述
4. 2 基本程序结构
基本程序结构
1、顺序结构程序 2、分支结构程序 3、循环结构程序 4、子程序 5、中断程序
4. 2 基本程序结构
4.2.1 顺序结构
顺序结构是各类程序中最简单的,也是最基本的 程序结构。顺序结构程序的特征是整个程序段没有 任何转移指令。主要由数据传递类指令和数据运算 类指令组成,通常用于执行数据传送和较为简单的 算术或逻辑运算任务。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
2、赋值伪指令EQU 格式:字符名称 EQU 操作数 说明:该指令用于字符名称赋值。在同一个 源程序中,任何一个字符名称只能赋值一次。 且一旦赋值之后,整个源程序中该字符的值 就固定不变了。例如: ADPORT EQU 1001H 即给字符名称ADPORT 赋值16进制数1001H。
4. 2 基本程序结构
4.2.2 分支结构
1、单分支选择结构 当程序的判断仅有两个出口(分叉),即两者选一时,称为 单分支结构。通常用条件判断指令来选择并确定程序的出口。 例4-3.设内部RAM 40H和41H单元中存放2个8位无符号二进制 数,试编程找出其中的大数存人30H单元中。源程序如下: MOV A,40H CJNE A,41H,LOOP ;取2个数进行比较 LOOP: JNC LOOP1 ;根据CY值,判断单分支出 MOV A,41H ;41H单元中是大数 LOOP1: MOV 30H,A ;40H单元中是大数 RET
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令 5、双字节数据赋值伪指令DW 格式:[标号:] DW数据表(双字节) 说明:该伪指令与DB伪指令的不同之处在于DW定义(赋值) 的是双字节数据,而DB定义(赋值)的是单字节数据。高8 位数据安排在低地址单元,低8位数据安排在高地址单元。 6、预留空间定义伪指令DS 格式:[标号:] DS 操作数 说明:该伪指令的作用是通知汇编程序,从指定的地址单元开 始(通常由标号指定首地址),保留由操作数(常数或表达 式)规定的字节空间。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令 7、位地址赋值伪指令BIT 格式:字符名称 BIT 位地址 说明:该伪指令给字符名称赋予位地址(片内RAM和SFR中的 位地址),常用于位操作程序中。例如: FLAG BIT 20H 即将位地址20H赋予字符名称FLAG。 8、定义汇编结束伪指令END 格式:[标号:]END 说明:汇编结束伪指令END的作用是通知汇编程序,汇编源程 序到此结束。在一个汇编程序中,只允许出现一条END伪指 令,且必须安排在整个源程序的末尾处。
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
3、数据地址赋值伪指令DATA 格式:字符名称 DATA 操作数
说明:DATA伪指令的功能与EQU伪指令相似,不同
之处在于DATA伪指令所定义的字符名称可先使用后
定义(赋值),也可先定义(赋值)后使用。在程
序中它常用来定义(赋值)数据地址。
4.1 汇编语言程序设计概述
4.1 汇编语言程序设计概述
4.1.2 汇编语言伪指令
1、起始地址定位伪指令ORG 格式:[标号]:ORG 操作数 说明:其功能是指出紧接其后的指令的目标代码的 第一个字节在程序存储器中的绝对地址。例如: ORG 0030H START:MOV A,#33H ...... 即定义标号START表示的起始地址值为0030H,该 段程序的指令代码从该地址开始顺序存放。
4.1 汇编语言程序设计概述
4.1.1 汇编语言的特点及语句格式
1、汇编语言的特点: 汇编语言的特点归纳如下: ◇ 助记符指令与机器指令一一对应; ◇ 程序代码效率高,占用存储空间小,运行速度快, 汇计算机硬件联系紧密, 要求编程人员对计算机硬件较为熟悉; ◇ 汇编语言程序缺乏通用性,移植性较差。