微机原理及应用第四章汇编语言程序设计基础.ppt
《微机原理及应用第四章汇编语言程序设计基础.ppt》由会员分享,可在线阅读,更多相关《微机原理及应用第四章汇编语言程序设计基础.ppt(54页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 汇编语言汇编语言程序设计基础程序设计基础4-1 汇编语言程序设计方法汇编语言程序设计方法4-2 汇编语言程序结构汇编语言程序结构4-3 汇编语言汇编语言的编辑与汇编的编辑与汇编4-1 汇编语言程序设计方法汇编语言程序设计方法2 程序设计步骤程序设计步骤1 程序及程序设计程序及程序设计1 程序及程序设计程序及程序设计例如:计算例如:计算63+56+36+14=?MOV A,#63;数数63送入寄存器送入寄存器AADD A,#56;数数56与与A中的数中的数63相加,其结果相加,其结果119送送AADD A,#36;数数36与与A中的数中的数119相加,其结果相加,其结果155送送A
2、 ADD A,#14;数数155与与A中的数中的数14相加,其结果相加,其结果169保存在保存在A中中程序是一系列指令的有序集合程序是一系列指令的有序集合程序设计则是编制程序的过程程序设计则是编制程序的过程程序设计:就是人们用计算机能接受的程序设计:就是人们用计算机能接受的语言语言,把欲解决问题的,把欲解决问题的算法和算法和算法和算法和步骤步骤描述出来的描述出来的过程过程。编程语言编程语言机器语言机器语言机器语言机器语言汇编语言汇编语言汇编语言汇编语言高级语言(高级语言(高级语言(高级语言(字符型字符型字符型字符型图形化图形化图形化图形化)2、程序设计步骤程序设计步骤分析分析课题课题确定确定算
3、法和数据结构算法和数据结构确定操作确定操作步骤步骤画画流程流程图图编制编制源程序源程序调试调试程序程序分析分析课题:对具体问题具体分析,并抽象出课题:对具体问题具体分析,并抽象出数学模型数学模型 确定确定算法:算法:解决同一问题有多种方法,从中选择一种解决同一问题有多种方法,从中选择一种最佳最佳的方法的方法 确定确定数据结构:数据结构:合理安排数据结构,合理安排数据结构,合理合理选择和分配内存空间、选择和分配内存空间、工作寄存器以及工作寄存器以及I/OI/O接口地址接口地址 程序模块程序模块:把整个问题分成若干个功能模块,画出层次图及通信:把整个问题分成若干个功能模块,画出层次图及通信 画画流
4、程图:流程图:以图示形式表示解决具体问题的思路和方法以图示形式表示解决具体问题的思路和方法 编制编制源程序:源程序:精心挑选精心挑选合适合适的指令和操作数的的指令和操作数的寻址方寻址方式式用用注释注释行说明程序,便于阅读、调试和修改。行说明程序,便于阅读、调试和修改。调试调试程序:程序:源程序源程序-机器程序机器程序机器程序机器程序-分析结果正确分析结果正确分析结果正确分析结果正确-调试调试程序完成程序完成 N N 修改修改汇编汇编汇编汇编 执行执行执行执行 Y Y Y Y 流程图图例起止框处理框判断框连线开开 始始结结 束束XX+1Y Y-1F5?YN开始开始1 YN?4-2 汇编语言程序结
5、构汇编语言程序结构程序设计方法程序设计方法结构化设计结构化设计三种基本控制结构,三种基本控制结构,顺序结构顺序结构 选择结构选择结构选择结构选择结构 循环结构循环结构循环结构循环结构一个子程序结构一个子程序结构 子程序子程序子程序子程序 中断服务子程序中断服务子程序中断服务子程序中断服务子程序程序开发方法程序开发方法程序开发方法程序开发方法自顶向下自顶向下方法方法先顶层开发先顶层开发先写主程序,后写子程序先写主程序,后写子程序自底向上自底向上方法方法先底层开发先底层开发先写子程序,后写主程序先写子程序,后写主程序混合方法混合方法 程序设计:就是人们用计算机能接受的程序设计:就是人们用计算机能接
6、受的语言语言,把欲解决问题的,把欲解决问题的算法和算法和算法和算法和步骤步骤描述描述描述描述出来的出来的过程过程。编程语言编程语言机器语言机器语言机器语言机器语言汇编语言汇编语言汇编语言汇编语言高级语言(高级语言(高级语言(高级语言(字符型字符型字符型字符型图形化图形化图形化图形化)4-2 汇编语言程序结构汇编语言程序结构4-2-1 顺序结构程序设计顺序结构程序设计4-2-2 分支结构程序设计分支结构程序设计4-2-3 循环结构程序设计循环结构程序设计4-2-4 子程序结构程序设计子程序结构程序设计4-2-1 顺序结构程序设计顺序结构程序设计顺序结构是按照指令在顺序结构是按照指令在存储器中存放
7、的先后存储器中存放的先后顺序,顺序,从某一条指令开始逐条顺序执行,直至某一条指令从某一条指令开始逐条顺序执行,直至某一条指令为止。为止。特点:特点:程序中无转移、调用、分支、循环指令;程序中无转移、调用、分支、循环指令;程序按编写的先后顺序执行,程序流向不变程序按编写的先后顺序执行,程序流向不变PC自动加自动加1在实际编程中应注意在实际编程中应注意如何如何正确正确选择指令、寻址方式和选择指令、寻址方式和合理合理使用工作寄存器,使用工作寄存器,包括数据存储器。包括数据存储器。数据传送和交换程序、简单运算程序、查表程序数据传送和交换程序、简单运算程序、查表程序 【例【例4-1】拆字、拼字程序】拆字
8、、拼字程序将片内将片内RAM 50H单元的低单元的低4位取出当作高位取出当作高4位,与位,与51H单元的低单元的低4位合成一个字节后存入位合成一个字节后存入52H单元。单元。STREQU50H;头文件头文件ORG 0000HMOV R1,#STRMOV A,R1;取取50H单元中的数据单元中的数据ANLA,#0FH;拆字拆字,屏蔽高,屏蔽高4位位SWAP A;高、低高、低4位互换位互换INCR1;指向指向51H单元单元XCHA,R1;51H单元内容与累加器内容互换单元内容与累加器内容互换ANLA,#0FH;拆字拆字,取原,取原51H单元的低单元的低4位位ORLA,R1;拼字拼字INC R1MO
9、V R1,A;存结果存结果RETEND【例【例4-1】拆字、拼字程序】拆字、拼字程序将片内将片内RAM 50H单元的低单元的低4位取出当作高位取出当作高4位,与位,与51H单元的低单元的低4位合成一个字节后存入位合成一个字节后存入52H单元。单元。STREQU50H;头文件头文件ORG 0000HMOV R1,#STR;指向指向50H单元单元MOV A,R1;取取50H单元中的数据单元中的数据SWAPA;高、低高、低4位互换位互换INCR1;指向指向51H单元单元XCHDA,R1 ;拆字拆字,拼字;拼字;51H单元的低单元的低4位位 ;与与A的低的低4位内容互换位内容互换INC R1;指向指向
10、52H单元单元MOV R1,A;存结果存结果RETEND【例【例4-2】数制转换】数制转换将片内将片内RAM 30H单元的无符号二进制数转换成单元的无符号二进制数转换成BCD码码数,结果按高低顺序依次存放到数,结果按高低顺序依次存放到33H、32H、31H单元。单元。ORG 0000HHEX_D:MOV A,30H;取原数据数取原数据数MOV B,#10DIVAB;二进制数除二进制数除10MOV 31H,B;将余数(将余数(BCD码的个位)送码的个位)送31HMOV B,#10DIVAB;商再继续除商再继续除10MOV 32H,B;将余数(将余数(BCD码的十位)送码的十位)送32HMOV 3
11、3H,A;将商(将商(BCD码的百位)送码的百位)送33HRET【例【例4-3】查表程序】查表程序 关键在:组织具有关键在:组织具有规律性规律性的表格的表格 求求R1中数(中数(015)的平方,结果仍放回到)的平方,结果仍放回到R1中。中。ORG 0000HTAB1:MOV A,R1 ADD A,#02H ;加上地址偏移量加上地址偏移量 MOVC A,A+PC ;查表查表 MOV R1,A RET DB 00H,01H,04H,09H ;平方表平方表 DB 10H,19H,24H,31H ;续表续表 DB 40H,51H ;续表续表【例【例4-3】查表程序】查表程序求求R1中数(中数(015)
12、的平方,结果仍放回到)的平方,结果仍放回到R1中。中。ORG 0000HTAB2:PUSH DPH;保存保存DPTR的原值的原值PUSH DPLMOV DPTR,#TAB;取平方表首地址取平方表首地址MOV A,R1MOVCA,A+DPTR;查平方表查平方表MOV R1,APOPDPL;恢复恢复DPTR的原值的原值POPDPHRETTAB:DB00H,01H,04H,09H;平方表平方表DB10H,19H,24H,31HDB40H,51H4-2-2 分支结构程序设计分支结构程序设计特点特点:程序中含有转移类指令程序中含有转移类指令 关键关键:正确选用转移指令正确选用转移指令无条件分支程序无条件
13、分支程序程序设计者程序设计者事先事先设计好的设计好的流向流向流向流向LJMP、AJMP、SJMP、JMP、LCALL、ACALL、RET(I)有条件分支程序有条件分支程序根据根据程序执行过程中程序执行过程中对标志位、对标志位、A、内部、内部RAM的某些单元或的某些单元或位的影响结果决定程序的位的影响结果决定程序的流向流向流向流向。使。使cpu具有具有判断决策判断决策能力能力JZ/JNZ、CJNE、DJNZ、位控制转移类指令的、位控制转移类指令的有机配合有机配合注意注意 使用条件转移指令形成分使用条件转移指令形成分之前之前一定安排可供条件转移指令进一定安排可供条件转移指令进行判别的条件。行判别的
14、条件。JC LOOP 正确选定所用的正确选定所用的转移条件转移条件、转移目标地址转移目标地址(标号)及(标号)及转移范转移范围围一、单重分支程序一、单重分支程序一个判断决策框,程序有两条出路,一个判断决策框,程序有两条出路,二选一二选一二选一二选一。由一个条件转移指令实现由一个条件转移指令实现有三种典型单分支结构:有三种典型单分支结构:条件满足?N影响条件Y分支处理1分支处理2顺序程序1顺序程序2开始结束条件满足?N影响条件Y分支处理段1顺序程序1开始顺序程序2结束顺序程序3条件满足?N影响条件Y分支处理段1顺序程序1开始顺序程序2结束顺序程序3补码绝对值补码绝对值条件满足?N影响条件Y处理段
15、例例 求求R2R2中补码绝对值,正数不变,负数变补。中补码绝对值,正数不变,负数变补。MOV A,R2MOV A,R2 JNBJNB ACC.7,NEXT;ACC.7,NEXT;为正数?为正数?CPL ACPL A ;负数变补负数变补 INC AINC A MOV R2,AMOV R2,ANEXT:SJMP NEXT ;NEXT:SJMP NEXT ;结束结束JNB【例【例4-4】无符号数的比较无符号数的比较无符号数的比较无符号数的比较比较外部比较外部RAM Data1RAM Data1和和Data2Data2单元的两个无符号数,并将大数存入单元的两个无符号数,并将大数存入Data3Data3
16、单元中,单元中,Data1 Data1、Data2Data2和和Data3Data3为连续的单元为连续的单元 ORG 0000HCOM1:MOV A,40H CJNE A,41H,L1;两数比较两数比较L1:JCJ2 ;C=1,则则A小转小转BIG2BIG1 MOV42H,A ;大数送大数送42HRETBIG2:XCHA,41H ;大数送大数送ASJMP BIG1END先看数据放在内部先看数据放在内部RAM的情况的情况data1 equ 1000hcom1:movdptr,#data1movxa,DPTRmov b,ainc DPTRmovx a,DPTRcjne a,b,l1l1:jc bi
17、g2 ;c=1,则则a小小big1:inc dptrmovx dptr,aretbig2:xch a,bsjmp big1end【例【例4-5】代码转换程序设计代码转换程序设计代码转换程序设计代码转换程序设计1 1 一位十六进制数与一位十六进制数与一位十六进制数与一位十六进制数与ASCIIASCII码之间的转换码之间的转换码之间的转换码之间的转换1、一位十六进制数转换为、一位十六进制数转换为ASCII码码 2、ASCII码转换为码转换为一位一位十六进制数十六进制数09的的ASCII码:码:3039H,AF的的ASCII码:码:4146H。09与与09之间的差值之间的差值30h AF与与AF之间
18、的差值之间的差值37h;1、十六进制转换成、十六进制转换成ASCII码码输入:输入:R2中存放一位十六进制;出口中存放一位十六进制;出口:R2返回返回ASCII值值ORG0000HHEXASC:MOV A,R2;将该十六进制数暂存于将该十六进制数暂存于A中中CJNE A,#0AH,$+3JNCADD_37;若大于等于若大于等于0AH,则加,则加37HADD_30:ADDA,#30H;若小于若小于0AH,则加,则加30HMOVR2,A;保存结果保存结果RET;子程序返回子程序返回ADD_37:ADDA,#37H;大于或等于大于或等于0AH,则加,则加37HMOVR2,A;保存结果保存结果RET;
19、子程序返回子程序返回 2、ASCII码转换成十六进制码转换成十六进制输入:输入:R2中存放中存放ASCII码码输出:输出:R2中返回十六进制中返回十六进制ASCHEX:movA,R2 clr c subb A,#30h cjne A,#10,$+3 jc A,HEXASC1;A 0 X0Y=Y=SGN(X)=0 SGN(X)=0 当当 X=0 X=0 -1 -1 当当 X0 X0X0?Y取XNA=0A=+1开始A=1X0?NY保存YA结束求符号函数流程图SYMB:MOV A,40H;取;取X JZ STOR ;X=0,Y=X JB ACC.7,MINUS;X0 MOV A,#1 ;X0,Y=+
20、1STOR:MOV 41H,A;保存;保存Y RETMINUS:MOV A,#0FFH;X0,Y=-1 SJMP STOR要点要点要点要点:将流程图按条件:将流程图按条件NONO优先方式优先方式拉直拉直 在流程图汇合处和转移目的地址处加在流程图汇合处和转移目的地址处加标号标号比较内部比较内部RAM Data1和和Data2单元内以补码形式表示的带符号数,并将大单元内以补码形式表示的带符号数,并将大数存入数存入BIG单元,小数存入单元,小数存入SMALL单元,若相等,则建立起标志位单元,若相等,则建立起标志位F0Data1EQU40hData2EQU41hBIGEQU30HSMALLEQU31H
21、ORG0000HCOM2:MOVA,Data1 XRLA,Data2JNZSTEP1;两数不等,转两数不等,转STEP1SETBF0;两数相等,两数相等,F0置位置位RETSTEP1:JBACC.7,TEST;两数异号,转两数异号,转TESTXRLA,Data2 ;两数同号,恢复两数同号,恢复Data1SUBBA,Data2 ;比较比较JCSTEP3 ;Data1小,转小,转STEP3STEP2:MOVBIG,Data1 ;Data1大大MOVSMALL,Data2 RETTEST:XRLA,Data2;恢复恢复Data1JNBACC.7,STEP2;Data1为正,大,转为正,大,转STEP
22、2STEP3:MOVSMALL,Data1MOVBIG,41HRET【例【例4-6】带符号数的比较:带符号数的比较:XRLXRL指令和指令和指令和指令和JNZJNZ、JBJB、JNCJNC有机配合有机配合有机配合有机配合不相等?Y取Data1和和Data2N设置标志F0开始异号?NY结束带符号数的比较带符号数的比较流程图流程图Data1存入SMALLData2存入BIG结束结束Data1小小?NYData1存入BIGData2存入SMALLData1正正?NY分支号分支号R2=0,程序转移到,程序转移到PROG0处;当分支号处;当分支号R2=1,程序转,程序转移到移到PROG1处;处;当分支号
23、当分支号R2=n,程序转移到,程序转移到PROGn处。处。【例【例4-7】散转程序:使用散转程序:使用JMP 实现多分支程序转移实现多分支程序转移 ORG 0000HMOV DPTR,#TAB;取转移地址表首地址取转移地址表首地址MOV A,R2;取变量值取变量值ADDA,R2;对变量乘对变量乘2修正修正JMPA+DPTRTAB:AJMP PROG0AJMP PROG1AJMP PROGn-1AJMP PROGn4-2-3 循环结构程序设计循环结构程序设计主要特点:主要特点:大大缩短程序,减少占用程序空间;大大缩短程序,减少占用程序空间;程序结构优化,清晰易读,循环结构使程序紧凑;程序结构优化
24、,清晰易读,循环结构使程序紧凑;可以实现多重循环控制,可以实现多重循环控制,循环嵌套循环嵌套;循环程序主要由循环常数循环程序主要由循环常数初始化部分初始化部分、循环体循环体、结束部分结束部分三部分组成三部分组成一、一、循环程序的构成循环程序的构成二、二、单重循环程序单重循环程序三、三、多重循环程序多重循环程序一、一、循环程序的构成循环程序的构成循环控制?循环执行循环结束循环初始化YN一初始化部分一初始化部分循环循环准备工作准备工作。如:清结果单元、设。如:清结果单元、设指针、设循环控制变量初值等。指针、设循环控制变量初值等。二循环体二循环体循环执行部分:需多次重复处理的工作。循环执行部分:需多
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 应用 第四 汇编语言 程序设计 基础
限制150内