




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第7章 汇编语言程序设计基础7.1 程序设计概述一、程序设计基础1. 汇编语言程序: 用汇编语言编写的、完成特定功能的指令序列。2. 汇编程序: 能将汇编语言源程序转换成机器语言目标程序的系统软件。3. 汇编:汇编语言程序到机器语言程序的转换过程称为汇编。汇编的主要任务:1)确定程序中每条汇编语言指令的指令机器码。2)确定每条指令在存储器中的存放地址。3)提供错误信息。4)提供目标执行文件(*.OBJ/*.HEX)和 列表文件(*.LST)。汇编方式:1)手工汇编:人工查指令表汇编。用于设计短小程序或调试 程序的场合。2)机器汇编:用汇编程序进行汇编。4. 汇编语言指令类型: 1)机器指令: 指令系统中的全部指令,每条指令有对应的机器代码。 2)伪指令: 汇编控制指令,仅提供汇编信息,没有指令代码。常用伪指令及其功能: 1) ORG起始地址指令:指明程序和数据块起始地址。格式:ORG 指令地址 机器码 源程序 ORG 2000H 2000H 7830 MAIN:MOV R0,#30H 2002H E6 MOV A,R0 ORG 3000H 3000H 23 DB 23H,100,A 3001H 64 3002H 41注意:若程序段前无ORG伪指令,则汇编后的目标程序将从0000H单元开始。2) DB定义字节型常数指令。格式: DB 例如: HERE:DB 56H;将数据56H存入HERE指示的存储单元中 DB 0A7H;将数据0A7H存入HERE+1指示的存储单元中再如:SECON:DB 02H,36H,74H,0B4H,0FFH,78,08H上述语句表示将数据串按顺序存入由SECON指示的地址为首址的连续存储单元中。3)DW 定义字型常数指令。(双字节的数据)格式: DW 例如:ABC:DW 1234H,4567H,0A5C4H,汇编时,机器会自动按高位字节在前、低位字节在后的顺序格式存入存储单元中。上述语句汇编执行时,第一个字节的12H存入标号ABC指示的存储单元中,34H存入(ABC)+1单元中,按此顺序将后续字节数据存入对应存储单元中。4) EQU 标号等值指令,为标号或标识符赋值。格式:标号 EQU 表达式例如:X1 EQU 2000HX2 EQU 0FH MAIN: MOV DPTR,#X1 ADD A,#X25)END 结束汇编指令。表示源程序的结束,一个源程序有且仅有一个END指令。 例:START: END二、汇编语言程序设计的步骤与方法1. 汇编语言程序设计的基本步骤(1)分析设计任务、确定算法或思路算法:根据实际问题的要求和指令系统的特点,所采用的计算公式和计算方法。简言之,解决问题的具体方法。(2)程序的总体设计及其流程图流程图:将总体设计思路及程序流向用图文结合的方法展现出来的图形。(3)编写源程序(4)源程序的汇编与调试(5)编写程序说明文件2. 汇编语言程序设计方法常用程序结构:顺序结构、分支(选择)结构、循环结构。7.2 程序设计基础和举例一、简单结构程序设计顺序程序又称简单程序,程序走向只有一条路径。例1:双字节变补程序(设数据在R4R5中):MOV A,R5;取低字节CPL AADD A,#01H;低字节变补MOV R5,AMOV A, R4 ;取高字节CPL AADDC A,#00H;高字节变补MOV R4,A例2:压缩式BCD码分解成为单字节BCD码。MOV R0,#40H ;设指针MOV A,R0 ;取一个字节MOV R2,A ;暂存ANL A,#0FH ;高半字节清0十 个INC R0MOV R0,A ;保存数据个位MOV A,R2SWAP A ;十位换到低半字节ANL A,#0FHINC R0MOV R0,A ;保存数据十位例3:书P153例1(拆字程序段)例4:书P153例2(双字节加法程序段)二、分支结构程序由条件转移指令构成程序判断框部分,形成程序分支结构。1. 单重分支程序:一个判断决策框,程序有两条出路。两种分支结构:例1:求R2中补码绝对值:正数不变,负数变补。 MOV A,R2 JNB ACC.7,NEXT ;为正数?为0跳 CPL A ;负数变补 INC A MOV R2,A NEXT:SJMP NEXT ;结束例2:假定在外部RAM中有ST1、ST2和ST3共3个连续单元,其中ST1和ST2单元中分别存放着两个8位无符号二进制数,要求找出其中的大数并存入ST3 单元中。START:CLR C;进位位清“0” MOV DPTR,#ST1;设置数据指针,指向ST1 MOVX A,DPTR;取第一个数 MOV R2,A;第一个数存R2 INC DPTR;数据指针加1,指向ST2 MOVX A,DPTR;取第二个数 SUBB A,R2;两数比较(第二个数第一个数) JNC BIG1;第二个数大转BIG1(C=0无借位跳) XCH A,R2;第一个数大整字节交换继续 BIG0: INC DPTR;指向ST3单元 MOVX DPTR,A;存大数 RET BIG1: MOVX A,DPTR SJMP BIG02. 多分支结构程序:多次使用条件转移指令,形成两个以上判断框。例3:求符号函数Y=SGN(X) +1 (当 X0)SGN(X)= 0 (当 X=0) -1 (当 X0)SYMB: MOV A,40H ;取X JZ STOR ;X=0跳,Y=X JB ACC.7,MINUS ;X0(A.7=1跳) MOV A,# 01H ;X0,Y=+1 SJMP STORMINUS: MOV A,#0FFH ;X0,Y= -1 STOR: MOV 41H,A ;保存Y RET还有一种情况,按分支号转移的多分支结构。例如如图所示的情况。例4:由40H单元中动态运行结果值选择分支程序,其对应关系为:(40H)=0,转向分支处理程序0;(40H)=1,转向分支处理程序1;(40H)=n,转向分支处理程序n。由于每一个分支处理程序均为各自独立的程序段,分散在不同的存储区。因此,需要一个中转站,转向各自的分支程序段。这个中转站由一串无条件转移指令组成,其存放的首地址由DPTR指示。这时就需要用到散转指令JMP A+DPTR,数据指针DPTR为存放多分支转移指令串的首地址,由累加器A内容动态选择对应的分支程序。START:MOVDPTR,#addr16MOVA,40HCLRCRLCAJNCTABELINCDPHTABEL:JMPA+DPTR;散转ADDR16:AJMPLOOP0;多分支指令串AJMPLOOP1;AJMPLOOPn;LOOP0:;分支程序段0;LOOP1:;分支程序段1;3. 分支结构程序的形式见书P156。三、循环结构程序循环结构程序是控制主机多次重复地执行同一个程序段的一种基本程序结构。从本质上看,它是分支结构程序中的一个特殊形式。1. 循环程序的构成(1)初始化部分: 循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。(2)循环体:l 循环工作部分:需多次重复处理的工作。l 循环控制部分: a.修改指针和循环控制变量。 b.检测循环条件:满足循环条件,继续循环,否则退出循环。(3)结束部分: 处理和保存循环结果。 允许0次循环的循环结构:在循环工作之前检测循环条件。2. 单重循环简单循环结构:循环体中不套循环。例1:工作单元清0。(书P159例3)例2:数据块搜索(书P158例2)例3:找正数表最小值。正数表存在片外RAM中以LIST为起始单元,用-1作为结束标志。START:MOV DPTR,#LIST;数表首地址MOV B,#127;预置最小值NEXT:MOVX A,DPTR;取数 INC DPTR;修改指针CJNE A,#-1,NEXT1;是否为数表结尾?(A-1跳) SJMP DONE;循环结束NEXT1:CJNE A,B,NEXT2;比较(AB跳)NEXT2:JNC NEXT ;C=0跳 MOV B,A;保存较小值SJMP NEXT DONE:SJMP DONE思考习题:统计一班考试为100分和不及格人数,成绩单在41H起始单元。3. 多重循环结构某些复杂问题,必须采用多重循环的程序结构,也就是循环体中嵌套循环程序。例4:软件延时(书P159例)四、子程序结构程序一般可将带有通用性的问题编写成功能相对独立的子程序,供主程序调用。五、查表结构程序例:查表控制彩灯ORG0000HSTART:MOVDPTR,#TABLOOP:CLRAMOVCA,A+DPTRCJNEA,#03H,LOOP1AJMPSTARTLOOP
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 个人租车合同范本
- 承接高空吊装合同范本
- 古代租房合同范本
- 司机劳务合同范本简单
- 股权质押登记合同范本
- 加工店铺转让合同范本
- 装修居间合同范本
- 监控施工改造合同范本
- 政府采购业务合同范本
- 标准的工程合同范本
- 高等代数(上)期末复习题
- 应急资源调查表
- 北师大版八年级上册数学第二章实数单元测试卷(含答案)
- 同步控制器说明书
- 05G514-3 12m实腹式钢吊车梁(中级工作制 A4 A5 Q345钢)
- GB/T 902.3-2008储能焊用焊接螺柱
- 土石方填方合同(6篇)
- 汽轮机原理-凝汽器课件
- 典范英语7-2中英文对照翻译Noisy Neighbours
- 海思芯片HTOL老化测试技术规范
- 最新版个人征信报告(可编辑+带水印)
评论
0/150
提交评论