[计算机硬件及网络]第四章 汇编语言程序设计
第四章 汇编语言程序设计 4.1 汇编语言程序设计概述 4.2 汇编语言实用程序设计 4.1 汇编语言程序设计概述 4.1.1 程序流程图 4.1.2 伪指令 4.1.3 汇编语言源程序的汇编 4.1 汇编语言程序设计概述 4.1 汇编语言程序设计概述 所谓汇编语言程序设计就是使用汇编指令来编写计算机程序。在进行单片机汇编语言程序设计时要注意:在程序中要具体安排寄存器、数据存储单元;熟悉单片机的硬件结构,特别是特殊功能寄存器、端口、定时器/计数器、中断等内容。 汇编语言程序设计的步骤如下: 1.明确要解决的问题和要求。 2.根据要解决的问题,制定程序流程框图。如过程较大,可以先画出粗框图,再根据要求对框图进行细化。 3.根据程序框图,编写程序。如果程序较大,可按功能模块进行编写。 4.对汇编语言程序进行调试,并进行优化处理。 4.1.1 程序流程图 程序流程图是用图解法表示解决问题的步骤,它能直观形象地表示各部分的逻辑关系及程序结构,利用流程图能方便地发现和分析程序结构存在的错误,便于掌握和进行交流,是程序设计的重要工具。 流程图中所采用的各种常用符号如下。 1.端点框:是一个椭圆矩形,如图4-1(a)所示,表示程序的开始或结束。在该框内可填入相应的文字。例如“开始”,“结束”或者程序名,起始地址等。 2.流程线:表示程序执行的流向,流程线如图4-1(b)所示。 3.处理框:表示一种处理功能或者过程,框内用文字简要说明,处理框如图4-1(c)所示。 4.1.1 程序流程图 4.判断框:用于指示一个判定点,从这点产生分支。在框内应注明测试条件,而测试结果则注明在各分支流程线上,判断框如图4-1(d)所示。 5.连接框:表示流程中止而并非流程结束。通常用来连接同一页上的流程,以避免流程线的交叉,使流程图阅读起来清晰;它也可用来连接不同页上的流程,注意在连接处连接框内的标识符要相同,连接框如图4-1(e)所示。 4.1.2 伪指令 伪指令是用来告诉汇编程序如何进行汇编的指令,它既不控制机器的操作也不能被汇编成机器代码,只能为汇编程序所识别并指导汇编如何进行,故称为“伪指令”。MCS-51系列单片机中常用伪指令如下: 1.起始地址伪指令 ORG(origin) ORG伪指令用来规定目标程序段或数据块的起始地址。其格式为: [标号:] ORG 16位地址 其中,方括号内的标号是任选项,可有可无。 通常,在汇编语言程序的开始处均用ORG伪指令指定程序存放的起始地址。 4.1.2 伪指令 2.汇编结束伪指令 END END伪指令表示源程序到此结束,在一个程序中,只允许出现一条END语句,而且必须安排在源程序的末尾。否则,汇编程序对END语句后面的所有语句都不进行汇编,其格式为: [标号:] END 其中,方括号内的标号是任选项,可有可无。 例4-1-1 ORG 0030H ;从程序存储器0030H开始存储程序 START:MOVA,#34H MOVB,A END ;源程序到此结束 4.1.2 伪指令 3.赋值伪指令 EQU(equate) EQU伪指令表示将伪指令右边的数值或地址赋给左边用户定义的符号。其格式为: 字符名称 EQU 数据或地址 由EQU伪指令赋值的字符名称在源程序中可以作为立即数使用,也可以作为数据地址、代码地址或位地址。由EQU伪指令所定义的符号必须先定义后使用,故该语句通常放在程序开头。 例4-1-2 BUFFEREQU08H;BUFFER的值等于08H BLOCKEQU30H;将30H赋值给字符名称BLOCK MOV A, #BUFFER ;伪指令定义的符号作为立即数使用 MOV B,BLOCK ;伪指令定义的符号作为地址使用 4.1.2 伪指令 4.字节定义伪指令 DB(define byte) DB伪指令表示从指定的地址单元开始,定义若干个字节存储单元的内容。其格式为:[标号:]DB 8位(二进制)数据表 例4-1-3 ORG1000H FIRST:DB 73H,01H,91H,07H TABLE:DB 96,40H,‘C’,‘7’,1101B 经汇编后,程序存储器有关单元内容为:(1000H)=73H,(1001H)=01H, ( 1002H)=91H, ( 1003H)=07H,(1004H)=60H,(1005H)=40H, ( 1006H)=43H, ( 1007H)=37H, ( 1008H)=0DH, 其中,用‘’来定义