最新微机原理及应用第四章汇编语言程序设计基础PPT课件.ppt
《最新微机原理及应用第四章汇编语言程序设计基础PPT课件.ppt》由会员分享,可在线阅读,更多相关《最新微机原理及应用第四章汇编语言程序设计基础PPT课件.ppt(55页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、微机原理及应用第四章汇编语微机原理及应用第四章汇编语言程序设计基础言程序设计基础4-1汇编语言程序设计方法汇编语言程序设计方法2 程序设计步骤程序设计步骤1 程序及程序设计程序及程序设计【例【例4-1】拆字、拼字程序】拆字、拼字程序将片内将片内RAM50H单元的低单元的低4位取出当作高位取出当作高4位,与位,与51H单元的低单元的低4位合成一个字节后存入位合成一个字节后存入52H单元。单元。STREQU50H;头文件头文件ORG 0000HMOV R1,#STRMOV A,R1;取取50H单元中的数据单元中的数据ANLA,#0FH;拆字拆字,屏蔽高,屏蔽高4位位SWAPA;高、低高、低4位互换
2、位互换INCR1;指向指向51H单元单元XCHA,R1;51H单元内容与累加器内容互换单元内容与累加器内容互换ANLA,#0FH;拆字拆字,取原,取原51H单元的低单元的低4位位ORLA,R1;拼字拼字INCR1MOV R1,A;存结果存结果RETEND【例【例4-1】拆字、拼字程序】拆字、拼字程序将片内将片内RAM50H单元的低单元的低4位取出当作高位取出当作高4位,与位,与51H单元的低单元的低4位合成一个字节后存入位合成一个字节后存入52H单元。单元。STREQU50H;头文件头文件ORG 0000HMOV R1,#STR;指向指向50H单元单元MOV A,R1;取取50H单元中的数据单
3、元中的数据SWAPA;高、低高、低4位互换位互换INCR1;指向指向51H单元单元XCHDA,R1;拆字拆字,拼字;拼字;51H单元的低单元的低4位位;与与A的低的低4位内容互换位内容互换INCR1;指向指向52H单元单元MOV R1,A;存结果存结果RETEND【例【例4-2】数制转换】数制转换将片内将片内RAM30H单元的无符号二进制数转换成单元的无符号二进制数转换成BCD码码数,结果按高低顺序依次存放到数,结果按高低顺序依次存放到33H、32H、31H单元。单元。ORG 0000HHEX_D:MOV A,30H;取原数据数取原数据数MOV B,#10DIVAB;二进制数除二进制数除10M
4、OV 31H,B;将余数(将余数(BCD码的个位)送码的个位)送31HMOV B,#10DIVAB;商再继续除商再继续除10MOV 32H,B;将余数(将余数(BCD码的十位)送码的十位)送32HMOV 33H,A;将商(将商(BCD码的百位)送码的百位)送33HRET【例【例4-3】查表程序】查表程序关键在:组织具有关键在:组织具有规律性规律性的表格的表格求求R1中数(中数(015)的平方,结果仍放回到)的平方,结果仍放回到R1中。中。ORG0000HTAB1:MOVA,R1ADDA,#02H;加上地址偏移量加上地址偏移量MOVCA,A+PC;查表查表MOVR1,ARETDB00H,01H,
5、04H,09H;平方表平方表DB10H,19H,24H,31H;续表续表DB40H,51H;续表续表【例【例4-3】查表程序】查表程序求求R1中数(中数(015)的平方,结果仍放回到)的平方,结果仍放回到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,5
6、1H4-2-2分支结构程序设计分支结构程序设计特点特点:程序中含有转移类指令程序中含有转移类指令关键关键:正确选用转移指令正确选用转移指令无条件分支程序无条件分支程序程序设计者程序设计者事先事先设计好的设计好的流向流向流向流向LJMP、AJMP、SJMP、JMP、LCALL、ACALL、RET(I)有条件分支程序有条件分支程序根据根据程序执行过程中程序执行过程中对标志位、对标志位、A、内部、内部RAM的某些单元或的某些单元或位的影响结果决定程序的位的影响结果决定程序的流向流向流向流向。使。使cpu具有具有判断决策判断决策能力能力JZ/JNZ、CJNE、DJNZ、位控制转移类指令的、位控制转移类
7、指令的有机配合有机配合注意注意使用条件转移指令形成分使用条件转移指令形成分之前之前一定安排可供条件转移指令进一定安排可供条件转移指令进行判别的条件。行判别的条件。JCLOOP正确选定所用的正确选定所用的转移条件转移条件、转移目标地址转移目标地址(标号)及(标号)及转移范转移范围围一、单重分支程序一、单重分支程序一个判断决策框,程序有两条出路,一个判断决策框,程序有两条出路,二选一二选一二选一二选一。由一个条件转移指令实现由一个条件转移指令实现有三种典型单分支结构:有三种典型单分支结构:条件满足?N影响条件Y分支处理1分支处理2顺序程序1顺序程序2开始结束条件满足?N影响条件Y分支处理段1顺序程
8、序1开始顺序程序2结束顺序程序3条件满足?N影响条件Y分支处理段1顺序程序1开始顺序程序2结束顺序程序3补码绝对值补码绝对值条件满足?N影响条件Y处理段例例 求求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】无符号数的比较无符号数的比较无符号数的比较无符号数的比较比较外部
9、比较外部RAM Data1RAM Data1和和Data2Data2单元的两个无符号数,并将大数存入单元的两个无符号数,并将大数存入Data3Data3单元中,单元中,Data1 Data1、Data2Data2和和Data3Data3为连续的单元为连续的单元ORG0000HCOM1:MOV A,40HCJNE A,41H,L1;两数比较两数比较L1:JCJ2;C=1,则则A小转小转BIG2BIG1MOV42H,A;大数送大数送42HRETBIG2:XCHA,41H;大数送大数送ASJMP BIG1END先看数据放在内部先看数据放在内部RAM的情况的情况data1equ1000hcom1:mo
10、vdptr,#data1movxa,DPTRmovb,aincDPTRmovxa,DPTRcjnea,b,l1l1:jcbig2;c=1,则则a小小big1:incdptrmovxdptr,aretbig2:xcha,bsjmpbig1end【例【例4-5】代码转换程序设计代码转换程序设计代码转换程序设计代码转换程序设计1 1 一位十六进制数与一位十六进制数与一位十六进制数与一位十六进制数与ASCIIASCII码之间的转换码之间的转换码之间的转换码之间的转换1、一位十六进制数转换为、一位十六进制数转换为ASCII码码 2、ASCII码转换为码转换为一位一位十六进制数十六进制数09的的ASCII
11、码:码:3039H,AF的的ASCII码:码:4146H。09与与09之间的差值之间的差值30hAF与与AF之间的差值之间的差值37h;1、十六进制转换成、十六进制转换成ASCII码码输入:输入:R2中存放一位十六进制;出口中存放一位十六进制;出口:R2返回返回ASCII值值ORG0000HHEXASC:MOV A,R2;将该十六进制数暂存于将该十六进制数暂存于A中中CJNEA,#0AH,$+3JNCADD_37;若大于等于若大于等于0AH,则加,则加37HADD_30:ADDA,#30H;若小于若小于0AH,则加,则加30HMOVR2,A;保存结果保存结果RET;子程序返回子程序返回ADD_
12、37:ADDA,#37H;大于或等于大于或等于0AH,则加,则加37HMOVR2,A;保存结果保存结果RET;子程序返回子程序返回2、ASCII码转换成十六进制码转换成十六进制输入:输入:R2中存放中存放ASCII码码输出:输出:R2中返回十六进制中返回十六进制ASCHEX:movA,R2clrcsubbA,#30hcjneA,#10,$+3jcA,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:MOVA,40H;取;取XJZ STOR
13、 ;X=0,Y=XJB ACC.7,MINUS;X0MOVA,#1;X0,Y=+1STOR:MOV41H,A;保存;保存YRETMINUS:MOVA,#0FFH;X0,Y=-1SJMPSTOR要点要点要点要点:将流程图按条件:将流程图按条件NONO优先方式优先方式拉直拉直 在流程图汇合处和转移目的地址处加在流程图汇合处和转移目的地址处加标号标号比较内部比较内部RAMData1和和Data2单元内以补码形式表示的带符号数,并将大单元内以补码形式表示的带符号数,并将大数存入数存入BIG单元,小数存入单元,小数存入SMALL单元,若相等,则建立起标志位单元,若相等,则建立起标志位F0Data1EQU
14、40hData2EQU41hBIGEQU30HSMALLEQU31HORG0000HCOM2:MOVA,Data1XRLA,Data2JNZSTEP1;两数不等,转两数不等,转STEP1SETBF0;两数相等,两数相等,F0置位置位RETSTEP1:JBACC.7,TEST;两数异号,转两数异号,转TESTXRLA,Data2;两数同号,恢复两数同号,恢复Data1SUBBA,Data2;比较比较JCSTEP3;Data1小,转小,转STEP3STEP2:MOVBIG,Data1;Data1大大MOVSMALL,Data2RETTEST:XRLA,Data2;恢复恢复Data1JNBACC.7
15、,STEP2;Data1为正,大,转为正,大,转STEP2STEP3: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处;当分支号处;当分支号R
16、2=1,程序转,程序转移到移到PROG1处;处;当分支号当分支号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循环结构程序设计循环结构程序设计主要特点:主要特点:大大缩短程序,减少占用程序空间;大大缩短程序,减少占用程序空间;程序
17、结构优化,清晰易读,循环结构使程序紧凑;程序结构优化,清晰易读,循环结构使程序紧凑;可以实现多重循环控制,可以实现多重循环控制,循环嵌套循环嵌套;循环程序主要由循环常数循环程序主要由循环常数初始化部分初始化部分、循环体循环体、结束部分结束部分三部分组成三部分组成一、一、循环程序的构成循环程序的构成二、二、单重循环程序单重循环程序三、三、多重循环程序多重循环程序一、一、循环程序的构成循环程序的构成循环控制?循环执行循环结束循环初始化YN一初始化部分一初始化部分循环循环准备工作准备工作。如:清结果单元、设。如:清结果单元、设指针、设循环控制变量初值等。指针、设循环控制变量初值等。二循环体二循环体循
18、环执行部分:需多次重复处理的工作。循环执行部分:需多次重复处理的工作。循环控制部分:循环控制部分:1.1.修改指针和循环控制变量。修改指针和循环控制变量。2.2.检测循环条件:满足循环条件,继续循环,否则退出循环。检测循环条件:满足循环条件,继续循环,否则退出循环。三三.结束部分结束部分 分析、处理和保存循环结果。分析、处理和保存循环结果。至少至少1 1次循环的循环结构:选用次循环的循环结构:选用先执行先执行后判断的循环结构。后判断的循环结构。允许允许0 0次循环的循环结构:选用次循环的循环结构:选用先判断先判断后执行的循环结构。后执行的循环结构。二、二、单重循环程序单重循环程序简单循环结构:
19、循环体中不套循环。简单循环结构:循环体中不套循环。【例【例4-8】:计算:计算1+2+101+2+10的和并保存在内的和并保存在内RAMRAM的的Y Y单元单元YEQU20HORG 0000HCLRA;清部分和清部分和MOV R0,#01;置累计初值置累计初值LOOP:CJNER0,#11,AD;判断是否完成判断是否完成MOV Y,A;保存结果保存结果RET;结束结束AD:ADDA,R0;计算部分和计算部分和INCR0;修改循环计数器修改循环计数器SJMP LOOP;循环循环设有一组数存放在内设有一组数存放在内RAMRAM从从DATADATA开始的连续单元中,数据长度放在开始的连续单元中,数据
20、长度放在DATA1DATA1单元中,使编写程序找出其中的最大数,并存入单元中,使编写程序找出其中的最大数,并存入DATA2DATA2单元单元Data2EQU40HData1EQU41HDataEQU42HORG0000HMOVR0,#Data;设置地址指针,并指向存放数据的起始单元设置地址指针,并指向存放数据的起始单元MOVData2,R0;将第一个数当作当前最大数将第一个数当作当前最大数DECData1;修改剩余的数据个数修改剩余的数据个数NEXT:INCR0;指向下一个数据单元指向下一个数据单元MOVA,R0;取当前数据取当前数据CJNEA,Data2,COMP;比较当前数与当前最大数比较
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新 微机 原理 应用 第四 汇编语言 程序设计 基础 PPT 课件
限制150内