最新7汇编语言程序设计课件.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《最新7汇编语言程序设计课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 汇编语言 程序设计 课件
- 资源描述:
-
1、7汇编语言程序设计汇编语言程序设计汇编程序设计的步骤:(1)分析题目或课题的要求,正确理解解决什么问题,如何解决问题、有哪些可利用的资源、对计算精度的要求等;另外,了解应用系统硬件的结构和功能与课题任务的关联。(2)确定解决问题的方案,画出程序流程框图;(2)根据解决方案,确定变量及其数据存储格式,给各个变量分配存储空间;(3)根据程序流程图,选用合适的指令编写程序,完成源程序的设计;(4)在集成开发环境上调试,完成设计要求的功能。第第7 7章章 汇编语言程序设计汇编语言程序设计7.1 伪指令 伪指令(Pseudo Instruction)是汇编语言中起解释说明的命令,它不是单片机的指令。在单
2、片机的集成开发环境中,向汇编系统说明程序存储在程序存储器的哪个区域、本汇编语言程序到何处结束、变量代号对应的单元地址或所代表的数值等。在汇编时,伪指令不会产生目标代码,不影响程序的执行。7.1 伪指令常用的有以下几种伪指令:(1)设置起始地址伪指令ORG ORG xxxxH如:ORG 0100H SUB:MOV R0,#30H (2)赋值伪指令EQU 变量代号 EQU 数值如:LEN EQU 20;在程序中变量LEN的值为20H XdataEQU 4F8BH;在程序中变量Xdata的值 为4F8BH7.1 伪指令(3)定义字节数据伪指令DB xxxxH DB data如:2000H DB 30
3、H;伪指令DB也可用来定义多个连续单元为常数,即用来定义一组单字节数据组成的常数表。如:ORG 1000H DB 30H,31H,32H,33H,34H,35H,36H,37H,38H,39H,2EH,0DH7.1 伪指令(4)定义双字节数据伪指令DW xxxxH DWdata16如:1000H DW 0FDE1H 1100H DW 1345,2241,34556(5)位地址赋值伪指令BIT 变量代号BIT位地址如:CSBITP2.0 FLAG BIT20H.6(6)汇编结束伪指令END END7.2 算术运算程序的设计 在MCS-51单片机指令系统中,算术运算指令仅支持2个无符号的8位二进制
4、数的运算,二进制数算术运算是按字节的方式进行的。7.2 算术运算程序的设计例1 多字节二进制加法。以三字节无符号二进制数为例,算法如图7.1所示,图中一个方框代表一个单元。Cy表示进位。当最低字节(低8位)运算时,如果令Cy为0,那么,完成3个字节的加法运算进行了3次相同的单字节加法操作,可以采用循环结构实现2个3字节数据的加法运算。图7.1 二进制数加法算法7.2 算术运算程序的设计例2 多字节二进制减法。多字节二进制减法与多字节二进制加法相似,图7.2为3字节二进制减法的算法。CyCyCy0 图7.2 减法算法7.2 算术运算程序的设计例3 多位十进制数加法。十进制数在计算机中可以采用BC
5、D码的形式存放。采用紧凑形式(或压缩式)BCD码存放十进制数时,一个存储单元可以存储2位。MCS-51单片机仅支持二进制加法运算,采用ADD和ADDC指令的结果是二进制数,因此,2个以BCD码形式存储的数据,在用ADD和ADDC运算之后,必须对其运算结果进行调整。多位十进制数加法的算法与多字节二进制数算法相似,如图7.3所示。7.2 算术运算程序的设计DA ADA ADA A图7.3 多位十进制加法算法7.2 算术运算程序的设计例4 多位十进制减法 在第3章的例30中,我们介绍了2位十进制数减法算法:XYX100Y X9AHY,把十进制减法变换成二进制减法(求十进制减数的补码)和十进制加法2步
6、进行。多位十进制数减法也采用了同样的算法。设被减数存放在20H开始的内部RAM存储单元,减数存放在30H开始的存储单元,6位十进制数减法的程序如下7.2 算术运算程序的设计(1)2位十进制数减法子程序:入口条件:R0指出被减数所在单元的地址;R1指出减数 所在单元的地址;出口条件:R0指出差所在单元的地址,进位在Cy中;SH_SUB:MOV A,#9AHSUBB A,R1ADD A,R0DA AMOV R0,AINC R0INC R1CPL CRET7.2 算术运算程序的设计(2)6位十进制数加法程序:MOV R0,#20HMOV R1,#30HMOV R5,#03HCLR C DOSUB:A
7、CALL SH_SUB DJNZ R5,DOSUB RET7.2 算术运算程序的设计例5 多字节数二进制乘法 2个多字节二进制数乘法的算法与按位进行十进制数乘法相似。把它转换为几个多字节与单字节的乘法运算,先分别计算出它们的部分积,然后按照规则把部分积累加计算出乘积。图7.4为2个16位二进制数相乘的算法原理图。图中被乘数为X,其高八位和低八位分别存储在XH和XL单元,乘数为Y,YH和YL分别高八位和低八位存储单元。7.2 算术运算程序的设计 算法分2步进行:首先,分别用乘数的高八位和低八位与被乘数相乘,计算部分积,分别存储在(XYH3),(XYH2),(XYH1)和(XYL3),(XYL2)
8、(XYL1)单元;在编写程序时,乘法运算可以用子程序调用的方法实现(第3章例33)。第二步,采用加法运算求出乘积存储在(XY4)(XY3)(XY2)(XY1)单元。7.2 算术运算程序的设计图7.4 2个16位二进制数乘法算法XYH3XYH2XYH1XHXLYHYLXHXLYHXHXLYLXYL3XYL2XYL1XYH3XYH2XYH1XYL3XYL2XYL1XY3XY2XY1XY47.2 算术运算程序的设计例6 多字节二进制除法 2个多字节无符号二进制数的除法是采用移位和减法运算实现的,实现过程与我们进行十进制数乘法形似,每次进行除法运算时,如果余数大于减数(构件)则商1,否则,商0。图7.
9、5为16位二进制数除以8位二进制数的程序流程图。该算法要求被除数的高八位数据必须小于除数,否则,作为溢出处理,子程序把标志位OV的状态置为1,从子程序返回。7.2 算术运算程序的设计图7.5 除法程序流程图Y被除数的高八位大于除数开始置溢出标志结束除法(移位)次数余数左移一位保留余数移出的最高位余数的高八位减去除数够减否?差为余数的高八位商1商0除法完?四舍五入处理结束清溢出标志YNYNN7.3 循环程序的设计(一)循环结构的组成 循环结构由4部分组成:初始化部分、循环处理部分、循环控制部分和循环结束部分。循环结构组成图见图7.6。图7.6 循环结构组成7.3 循环程序的设计 汇编语言程序设计
10、中常见的典型循环结构如图7.7所示。开始初始化循环处理修改变量循环结束?结束结束部分YNNY开始初始化修改变量循环结束?结束处理部分结束部分(1)先处理后判断的结构 (2)先判断后处理的结构 图7.7 典型循环结构7.3 循环程序的设计(二)循环程序设计举例 例7 设单片机系统采集的8个单字节数据存储在单片机内部RAM的30H开始的连续单元中,求它们的均值。计算一组数据平均值的公式为:,其中,为第i个数据,N为数据的个数。因此,要计算出平均值需要进行2种运算:求数据的总和、数据总和除以数据个数。(1)求数据的总和 设S为数据的总和,在计算机中求多个数据总和的算法如下:该算法的程序流程框图见图7
11、.8NxxNii10S0iixSSNi,2,1 ix7.3 循环程序的设计开始存放数据的首地址取数据xiS=S+xi累加结束?结束修改存储单元地址YN数据个数总和S清零图7.8 多个数据求总和的流程图7.3 循环程序的设计例8 设有一个字符串以回车符(ASCII码为0DH)为结束标志,并存放在内部RAM的40H单元开始的连续存储单元中,编写测试字符串长度的程序。这是一个循环次数未知的循环程序设计例题。为了测试字符串的长度,字符串中的每个字符依次与回车符(0DH)比较,如果比较不相等,则字符串长度计数器加1,继续测试;如果比较相等,表示该字符为回车符,则字符串结束,长度计数器的值就是字符串的长度
展开阅读全文