4汇编程序设计.ppt
《4汇编程序设计.ppt》由会员分享,可在线阅读,更多相关《4汇编程序设计.ppt(42页珍藏版)》请在三一文库上搜索。
1、第四章 汇编语言程序设计 4-1 汇编语言程序设计基本概念 4-2 汇编语言程序的基本结构形式,4-1 汇编语言程序设计基本概念 一、MCS-51指令操作数说明 1、语句格式 标号: 操作码 操作数(目的操作数,源操作数) ;注释 2、操作数 对于立即数 #data (1)立即数188,可表示为 #10111100B、#0BCH、#188 (2)MOV R0,# BLOCK;BLOCK为定义过的标号地址 对于直接地址 direct (1)二进制、十进制、十六进制数,MOV A,30H (2)定义过的标号地址,AGAIN:LJMP AGAIN (3)表达式,如SUM+2,其中SUM为定义过的标号
2、地址 (4) SFR寄存器符号名称,如SP、DPH、DPL等,对于偏移量 rel (1)可以是数值、标号地址、表达式 (2)使用特殊符号“$”,它代表本条转移指令所在的地址, 如LJMP $(死循环) (3)实际编程时,凡指令中用到地址(rel、 addr11 、addr16 等)都可用标号地址代替实际地址,而地址的运算由汇编程序 完成。 二、常用伪指令 汇编:将计算机不可直接识别的汇编语言源程序翻译成机器语 言的过程。分为计算机汇编和人工汇编两种。 汇编程序:具有完成汇编功能的程序。 目标程序:汇编语言源程序经过汇编得到的机器语言程序。 伪指令:提供汇编用控制信息的指令,只能被汇编程序所识
3、别,不是单片机的CPU可执行的指令。,1、定位伪指令ORG(Origin) 格式: 标号: ORG m m:16位二进制数,代表地址。 功能:指出汇编语言程序通过编译,得到的机器语言程序的起 始地址。 2、定义字节伪指令DB(Define Byte) 格式:标号: DB X1,X2,Xn Xn:单字节二进制、十进制、十六进制数,或以 括起来的 字符串,数据符号。 功能:定义程序存储器从标号开始的连续单元,用来存放常 数、字符和表格。 3、定义字伪指令DW(Define Word) 格式:标号: DW Y1,Y2,Yn Yn:双字节二进制、十进制、十六进制数,或以 括起来的 字符串,数据符号。
4、功能:同DB,不同的是为16位数据。,4、汇编结束命令END 格式:标号: END 功能:END是汇编语言源程序的汇编结束标志,在它后面所 写的指令均不予处理。 5、等值命令EQU 格式:字符名称 EQU 数或汇编符号 功能:将一个数或特定的汇编符号赋予规定的字符名称。先 定义后使用。 6、数据地址赋值命令DATA 格式:字符名称 DATA 表达式 功能:将数据地址或代码地址赋予规定的字符名称,三、汇编语言程序的结构 1、程序设计的基本步骤 一般步骤为: (1)分析题意,明确要求; (2)建立思路,确定算法; (3)编制框图,绘出流程; (4)编写程序,上机调试; 显然,算法和流程是至关重要的
5、。程序结构有简单顺序、分支、循环和子程序等几种基本形式。 2、画流程图 画流程图是指用各种图形、符号、指向线等来说明程序 设计的过程。国际通用的图形和符号说明如下:,椭圆框:起止框,在程序的开始和结束时使用。 矩形框:处理框,表示要进行的各种操作。 菱形框:判断框,表示条件判断,以决定程序的流向。 指向线:流程线,表示程序执行的流向。 圆 圈:连接符,表示不同页之间的流程连接。 各种几何图形符号如下图所示。,4-2 汇编语言程序的基本结构形式 一、简单程序的设计 例4-1 已知两个压缩BCD码分别 放在内部RAM的31H30H和33H 32H 等4个单元中,试编程求和,结果存 入R4R3R2中
6、。 分析:流程如图: 程序如下: ORG 0000H LJMP MAIN ORG 0040H,MAIN: MOV A, 30H ADD A, 32H DA A MOV R2,A MOV A,31H ADDC A,33H DA A MOV R3,A CLR A MOV ACC.0,C MOV R4, A HERE: AJMP HERE END,例4-2 利用查表指令将内部RAM中20H单元的压缩BCD码拆开,转换成相应的ASCII码,存入21H、22H中,高位存在22H。 分析:控制流程图(略),程序如下: START: MOV DPTR,#TABLE MOV A, 20H ANL A, #0F
7、H MOVC A, A+DPTR MOV 21H, A MOV A, 20H ANL A, #0F0H SWAP A MOVC A, A+DPTR MOV 22H, A AJMP $ TABLE: DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H,二、分支程序设计 1、单分支程序 单分支结构程序使用转移指令实现,即根据条件 对程序的执行进行判断,满足条件是转移执行,否则 顺序执行。 在MCS-51指令系统中条件转移指令有: (1)判A转移指令JZ、JNZ; (2)判位转移指令JB、JNB、JBC、JC、JNC; (3)比较转移指令CJNE; (4)减1
8、不为0转移指令DJNZ;,例4-3 假定在外部RAM中有ST1、ST2和ST3共3个连续 单元,其中ST1、ST2单元中分别存放着两个8位无符号 数,要求找出其中的大数并存入ST3单元。 分析:两个无符号数的大小比较可利用两数相减是否有借位来判断,流程图和程序如下所示:,START:CLR C MOV DPTR,#ST1 MOVX A, DPTR MOV R7, A INC DPTR MOVX A, DPTR SUBB A, R7 JC BIG1 MOVX A, DPTR SJMP BIG2 BIG1:XCH A, R7 BIG2:INC DPTR MOVX DPTR,A SJMP $,2、多
9、分支程序 (1)嵌套分支结构 例4-4 设变量X存放于30H单元,函数值Y存放31H单元。试按照式: 1 X0 Y= 0 X=0 的要求给Y赋值 -1 X0 分析:X是有符号数,判断符号位是0还是1可利用JB 或JNB指令。 判断X是否等于0则直接可以使用累加器A的判0 指令。 流程、程序如下页:,START: MOV A,30H JZ OVER JNB ACC.7,LAB1 MOV A, #0FFH SJMP OVER LAB1: MOV A, #1 OVER: MOV 31H, A SJMP ,(2)多重分支结构 利用MCS-51单片机的散转指令JMP A+DPTR, 可方便地实现多重分支
10、控制,因此,又称为散转程序。 假定多路分支的最大序号为n,则分支的结构如图所示。,例4-5 根据条件0、1、2 、n,分别转向处理程序PRG0、 PRG1、PRGn,条件K设在R2中。 START: MOV DPRT, #TABLE MOV A, R2 ADD A, R2 JNC NEXT INC DPH NEXT: JMP A+DPTR TABLE: AJMP PRG0 AJMP PRGn PRG0: PRGn: ,三、循环程序设计 1、循环程序的结构 循环程序包括以下四个部分: 置循环初值 循环体 循环控制变量修改 循环终止控制 常用于循环控制的指令有: DJNZ、CJNE、JC、JNC
11、等控制类指令。,2、单循环 终止循环控制采用计数的方法,即用一个寄存器 作为循环次数计数器,每次循环后计数加1或减1,达 到终止值后退出循环。 例4-6 计算50个8位二进制数(单字节)之和。 要求:50个数存放在30H开头的内部RAM中,和放在R6R7中。 分析:采用DJNZ循环体的流程框图如下页所示, 在参考程序中,R0为数据地址指针,R2为减法循环计 数器。 在使用DJNZ控制时,循环计数器初值不能为0,当为0时,第一次进入循环执行到DJNZ时,减1使R2变为FFH,循环次数成了256,显然不合题意。,START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 程序设计
链接地址:https://www.31doc.com/p-2885904.html