文档详情

第4章汇编语言程序设计知识.ppt

发布:2017-05-31约6.59千字共64页下载文档
文本预览下载声明
例2:编写将30H,31H单元中的两字节二进制数乘以2的程序(积小于65536) Back 关键是取数:字节交换 XCH A Rn(direct @Ri) XCHD A @Ri XCH A Rn(direct @Ri) 移位 累加器内 SWAP A 移位 RR RL * * 取饭 和FFH 作异或 * A>TWO CY=0 * 注释 注释部分不是汇编语言的功能部分,只是用语增加程序的可读性。 良好的注释是汇编语言程序编写中的重要组成部分。 §4.2.2 编程的方法和技巧 一、模块化的程序设计方法 二、编程技巧 一、模块化的程序设计方法 1、程序功能模块化的优点 2、划分模块的原则 1、程序功能模块化的优点 方便编写调试。单个模块结构的程序功能单一,易于编写、调试和修改。 方便并行开发。便于分工,从而可使多个程序员同时进行程序的编写和调试工作,加快软件研制进度。 程序可读性好,便于功能扩充和版本升级。 方便程序修改,升级。对程序的修改可局部进行,其它部分可以保持不变。 提高代码利用率。对于使用频繁的子程序可以建立子程序库,便于多个模块调用。 2、划分模块的原则 每个模块应具有独立的功能,能产生一个明确的结果,即单模块的功能高内聚性。 模块之间的控制耦合应尽量简单,数据耦合应尽量少,即模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换方式、交换量的多少及交换频繁程度。 模块长度适中。20条~100条的范围较合适。 二、编程技巧 1、尽量采用循环结构和子程序。 2、尽量少用无条件转移指令。 3、对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的寄存器外,子程序中用到的其他寄存器的内容应压入堆栈(返回前再弹出),即保护现场。 4、在中断处理程序中,除了要保护处理程序中用到的寄存器外,还要保护标志寄存器。 5、用累加器传递入口参数或返回参数比较方便,在子程序中,一般不必把累加器内容压入堆栈。 §4.2.3 汇编语言程序的基本结构 一、顺序程序 二、分支程序 三、循环程序 一、顺序程序 顺序程序是最简单的程序结构,即顺序结构。 程序按顺序一条一条地执行指令。 一 简单程序设计举例 例1 :拆字。将片内RAM 20H单元的内容拆成两段,每段四位。并将它们分别存入21H与22H单元中。程序如下: Back 例2:16位数求补码。设负16位二进制数原码在R1、R0中,补码结果存3于R3、R2中。 二、分支程序 程序分支是通过条件转移指令实现的,即根据条件对程序的执行进行判断、满足条件则进行程序转移,不满足条件就顺序执行程序。 分支程序又分为单分支和多分支结构。 多分支程序是首先把分支程序按序号排列,然后按序号值进行转移。 二、分支程序 在MCS-51指令系统中,通过条件判断实现单分支程序转移的指令有:JZ、JNZ、CJNE、DJNZ等。此外还有以位状态作为条件进行程序分支的指令,如JC、JNC、JB、JNB、JBC等。使用这些指令可以完成0、1、正、负,以及相等、不相等作为各种条件判断依据的程序转移。 结构如图4-1所示。 例子如例4-1所示。 例: 128种分支转移程序。 功能:根据入口条件转移到128个目的地址。 入口:(R3)=转移目的地址的序号00H~7FH。 出口:转移到相应子程序入口。 128个子程序首址 JMP_128:MOV A,R3 RL A MOV DPTR,#JMPTAB JMP @A+DPTR JMPTAB:AJMP ROUT00 AJMP ROUT01 ┇ ┇ AJMP ROUT7F 说明:此程序要求128个转移目的地址(ROUT00 ~ROUT7FH)必须驻留在与绝对转移指令AJMP相同的一个2KB存储区内。 RL指令对变址部分乘以2,因为每条AJMP指令占两个字节。 图4-1 分支程序结构 散转指令 转向0分支 转向1分支 转向n-1分支 转向n分支 K=0 K=1 K=n-1 K=n ┅ ┅ ┅ 例1:片内RAM ONE和TWO两个单元中存有两个无符号数,将两个数中的小者存入30H单元。程序如下: 二 分支程序 Back 其流程如 图3.3-1示,为典型的分支程序 三、循环程序 在程序运行时,有时需要连续重复执行某段程序,可以使用循环程序。其结构包括四部分: 1、置
显示全部
相似文档