预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共42页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第4章汇编语言程序设计本章学习目标: 了解汇编语言程序设计步骤。 掌握简单的顺序程序设计。 掌握简单的分支程序设计。 掌握简单的循环程序设计。 掌握简单的子程序设计。 掌握一些常用程序设计。4.1汇编语言程序设计概述2.汇编语言 为了容易理解和记忆计算机的指令,人们用英文助记符表示指令,用助记符表示的指令就是符号语言或汇编语言。 汇编语言特点: (1)面向机器的语言,程序设计员须对MCS-51的硬件有相当深入的了解。 (2)助记符指令和机器指令一一对应,用汇编语言编写的程序效率高,占用存储空间小,运行速度快,用汇编语言能编写出最优化的程序。能直接管理和控制硬件设备(功能部件),它能处理中断,也能直接访问存储器及I/O接口电路。 (3)汇编语言和机器语言都脱离不开具体机器的硬件,均是面向“机器”的语言,缺乏通用性。3.高级语言 高级语言是一种面向算法、过程和对象的程序设计语言,它采用更接近人们自然语言和习惯的数学表达式及直接命令的方法来描述算法、过程和对象。高级语言的语句直观、易学、通用性强,便于推广、交流,但高级语言编写的程序经编译后所产生的目标程序大,占用内存多,运行速度较慢。4.1.2汇编语言程序设计步骤 1.分析题意,明确要求。 2.确定算法。 根据实际问题的要求、给出的条件及特点,找出规律性,最后确定所采用的计算公式和计算方法,这就是一般所说的算法。算法是进行程序设计的依据,它决定了程序的正确性和程序的指令。处理框流程线判断框起止框 3.画程序流程图,用图解来描述和说明解题步骤。4.分配内存工作单元,确定程序与数据区存放地址。 5.编写源程序。 6.程序优化。 7.上机调试、修改和最后确定源程序。4.1.3汇编语言格式与伪指令 1.汇编程序格式 [标号:]操作码助记符[目的操作数][,源操作数][;注释] 例如:CLEAR:MOVA,#00H;将0送入A中 2.伪指令 伪指令不能命令CPU执行某种操作,也没有对应的机器代码,它的作用仅用来给汇编程序提供某种信息。(1)ORG汇编起始地址命令 在汇编语言源程序的开始,通常都用一条ORG伪指令来实现规定程序的起始地址。 例如ORG2000H START: MOVA,#00H ┋ 规定标号START代表地址为2000H开始。(2)END汇编终止命令 汇编语言源程序的结束标志,用于终止源程序的汇编工作。在整个源程序中只能有一条END命令,且位于程序的最后。(3)DB(DefineByte)定义字节命令 在程序存储器的连续单元中定义字节数据。 例如 ORG2000H DB30H,40H,24,“C”,“B” 汇编后: (2000H)=30H (2001H)=40H (2002H)=18H(10进制数24) (2003H)=43H(字符“C”的ASCII码) (2004H)=42H(字符“B”的ASCII码)(4)DW(DefineWord)定义数据字命令 从指定的地址开始,在程序存储器的连续单元中定义16位的数据字。 例如 ORG2000H DW1246H,7BH,10 汇编后: (2000H)=12H ;第1个字 (2001H)=46H (2002H)=00H ;第2个字 (2003H)=7BH (2004H)=00H ;第3个字(2005H)=0AH (2005H)=0AH(5)EQU(Equate)赋值命令 用于给标号赋值。赋值以后,其标号值在整个程序有效。 例如: TESTEQU2000H 表示标号TEST=2000H,在汇编时,凡是遇到标号TEST时,均以2000H来代替。(6)BIT(位地址赋值)伪指令 该语句的功能是把BIT右边的位地址赋给它左边的“字符名称”。因此,BIT语句定义过的“字符名称”是一个符号位地址。 例如: ORG0030H A1BIT00H A2BITP0.04.2顺序程序设计解:ORG0010H MOVR0,#52H;一个加数的低字节地址 MOVR1,#55H;另一个加数的低字节地址 MOVA,@R0 ADDA,@R1;低字节相加 MOV@R0,A;存放低字节相加结果 DECR0 DECR1 MOVA,@R0 ADDCA,@R1;中间字节带进位相加 MOV@R0,A;存放中间字节相加结果 DECR0 DECR1 MOVA,@R0 ADDCA,@R1;高字节带进位相加 MOV@R0,A;存放高字节相加结果 MOV00H,C;进位送00H位保存 SJMP$ END4.3分支程序设计例4-3设自变量为一无符号数,存放在内部RAM的VAX单元,函数Y存放在FUNC单元。请编写满足如下关系的程序:ORG0200H VARDATA20H FUNCDATA21H MOVA,VAR;A←(20H) CJNEA,#50,NEXT1;建立Cy