微机原理之结构化程序设计.ppt

上传人:牧羊曲112 文档编号:6572794 上传时间:2023-11-13 格式:PPT 页数:23 大小:501KB
返回 下载 相关 举报
微机原理之结构化程序设计.ppt_第1页
第1页 / 共23页
微机原理之结构化程序设计.ppt_第2页
第2页 / 共23页
微机原理之结构化程序设计.ppt_第3页
第3页 / 共23页
微机原理之结构化程序设计.ppt_第4页
第4页 / 共23页
微机原理之结构化程序设计.ppt_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《微机原理之结构化程序设计.ppt》由会员分享,可在线阅读,更多相关《微机原理之结构化程序设计.ppt(23页珍藏版)》请在三一办公上搜索。

1、结构化程序设计,Principles:按照软件工程的观点,一个程序如果只包括顺序结构、分支结构和循环结构,那么其逻辑错误只限于某一结构内,不至于影响整个程序。这样,错误便于检查和改正。此外,我们还要看看子程序的实现及查表的处理方法。它们通常用在较为复杂的场合。,汇编语言程序的基本结构,一、顺序结构 顺序结构是指程序按指令顺序逐条执行的一种结构。也是程序结构中最简单的一种结构。,二、分支结构 指程序中具有转移指令,可根据转移条件(一般为0、Cy、OV)决定是转移还是继续执行下一条指令。请看P55例3-8,几种分支结构程序的框图,P55例3-8找出A和R1中的大数送R1流程图,正减负溢出,ACC.

2、7=1,OV=1,OV=1,A-R1-A,yes,no,R2(原A)-R1,R1不变,R1不变,yes,yes,no,no,R2(原A)-R1,负减正未溢出,负减正溢出,正减负未溢出,比较条件 差的符号 两数相减后标志状态X为正数,Y为正数 XY X-Y为正 OV=0 XY X-Y为正 OV=0 XY X-Y为正 OV=0 XY X-Y为负 OV=1 XY X为负数且Y为正数,X不可能大于Y XY X-Y为正 OV=1 XY X-Y为负OV=0,带符号数相减的所有可能情况比较,带符号数求最大值 例3-8 组单字节带符号数据存放在以2042H为首地址的连续单元中,数据长度存放在2041H单元,找

3、出的最大值存于2040H单元。,带符号数求最大值与最小值的程序0100 ORG 0100H0100 90204l MOV DPTR,#2041H0103 EO MOVX A,DPTR0104 FF MOV R7,A0105 7900 MOV R1,#80H;开始R1存最小值-1280107 A3 LOOP:INC DPTR0108 E0 MOVX A,DPIR0109 FA MOV R2,A010A C3 CLR C010B 99 SUBB A,R1010C 20E705 JB ACC.7,MINUS010F 20D209 PLUS:JBOV,SMA0112 8005 SJMP BIG,带符号

4、数求最大值与最小值的程序(续)0114 20D202 MINUS:JB OV,BIG0117 8002 SJMP SMA0119 EA BIG:MOV A,R2011A F9 MOV R1,A011B DFEA SMA:DJNZ R7,LOOP011D 902040 MOV DPTR,#2040H0120 E9 MOV A,R10121 F0 MOVX DPTR,A0122 80FE SJMP$END,三、循环结构 循环结构由四个环节组成。1.初始化部分:对循环体中参加操作的有关参数、地址等赋以初始值,并指定循环结束条件。2.循环体部分:指每次循环都需要重复执行的程序段。3.修改初始值:每次循

5、环结束都要对初始值进行修改,特别是判断结束条件的参数,每经一次循环后都要作相应的修改,以便决定是否结束循环。4.结束判断部分:检查结束条件是否满足,若条件满足停止循环,否则返回继续执行循环体。,循环结构框图 图中每执行一次循环体后,都要检查结束条件是否满足,若条件满足停止循环,否则返回继续执行循环体。右边两图区别是先检查循环是否结束后修改初值,还是先修改初值后检查循环是否结束。,循环结构程序举例例3-4 编制一延时子程序,使执行这一段程序延时2s。0100 7D64 MOV R5,#64H 0102 7E64 LOOP1:MOVR6,#64H 0104,7F62 LOOP2:MOV R7,#6

6、2H 0106 DFFE LOOP3:DJNZ R7,LOOP3 0108 DEFA DJNZR6,LOOP2 010A DDF6 DJNZ R5,LOOPl 010C 22 RET 晶振频率为12MHz时,1机器周期=12*1/12微秒=1微秒,以上程序执行的时间近似为100*100*98*2微秒2秒,如要准确计算还需考虑执行对R5、R6、R7的赋值指令所需的时间、RET返回指令的时间等等,但误差不易控制。,返回本章首页,四、子程序 例3-6 将30H中的数转换为BCD码,并存于40H、41H(百位存于40H,十位和个位合并存于41H)。主程序:入口条件为待转换的十六进制数存R10100 O

7、RG 0100H0100 A930 MOV R1,30H0102 122000 LCALL SUB0105 8A40 MOV 40H,R20107 8B41 MOV 41H,R30109 80FE SJMP$END,假定主程序调用子程序前,SP=07H,当主程序执行完LCALL SUB指令时,堆栈(位于内部RAM)中的内容如下 08H SP09H,子程序SUB:入口为R1,出口为转换所得BCD码存R2、R3 ORG 2000H 2000 E9 SUB:MOV A,R1;取十六进制数2001 75F064 MOV B,#64H2004 84 DIV AB;除以1002005 FA MOV R2,

8、A;商为百位数存R22006 740A MOV A,#0AH2008 C5F0 XCH A,B;除100余数作为下一次的被除数200A 84 DIV AB;余数再除以10200B C4 SWAP A200C 45F0 ORL A,B;十位个位合并200E FB MOV R3,A;十位个位合并存R3200F 22 RET,当子程序执行完RET指令时,堆栈(位于内部RAM)中的内容如下 SP07H 08H 09HPC=0105H,五、查表 当某一变量x与函数y的关系无规律可循时,可以将变量x作为序号,函数y值作为元素,列出一份序号与元素的关系表。然后利用查表法从序号求得元素。1.序号小于256的查

9、表程序 例3-11 设在寄存器R1存了两个BCD码,将它们转换为共阴数码管的七段码,存入21H和22H。该程序在实验二中用到。,序号小于256查表程序 TRAN:MOVDPTR,#TABLE;取表头地址 MOVA,R1 ANLA,#0FH;取BCD码低4位 MOVCA,A+DPTR;换成七段码 MOV21H,A MOVA,R1 SWAPA;转换高4位位置 ANLA,#0FH;取BCD码高4位 MOVCA,A+DPTR;换成七段码 MOV22H,A RET TABLE:DB 06H,5BH,4FH,66H,6DH,7DH,7H,7FH,6FH,一般的查表程序:求R1中的数的平方,存入R1 TRA

10、N:MOVDPTR,#TABLE;取表头地址 MOVA,R1 MOVCA,A+DPTR;换成平方 MOVR1,A RET TABLE:DB 0,1,4,9,16,25,36,49,64,81可见主要问题在于设计表格。当序号或表格内容较大,超出256时要另行处理。,2.序号大于256的查表程序 当元素总数大于256,要用DPTR直接加16位序号,才能得到元素地址值。例3-13 设有1000个元素的函数表,元素序号高8位存于20H,低8位存于21H,要求将求出的元素值存于30H。TRAN:MOV DPTR,#TABLE;取表头地址 MOV A,21H;求元素位置低8位 ADDA,DPL MOVDP

11、L,A MOVA,20H;求元素位置高8位 ADDCA,DPH MOVDPH,A CLRA MOVCA,A+DPTR;取出元素 MOV30H,A RETTABLE:DB.,3.元素值占两个字节以上的查表程序 当元素占两个以上字节,应考虑每个序号的偏移量。例3-14 设序号存20H,且小于128,元素占2个字节,表头为2001H,即元素0地址为2001H、2002H,元素1地址为2003H、2004H,余类推。试根据序号求出元素值,并存于30H、31H。TRAN:MOVDPTR,#TABLEMOVA,20HRLA;序号乘2得序号与表头距离MOVR2,A;暂存于R2MOVCA,A+DPTRMOV3

12、0H,AMOVA,R2INCAMOVCA,A+DPTRMOV31H,ARETTABLE:DB,4.变量x的数值不是等差序列的查表程序 解决这类问题可以采用搜索的办法,即制作一张序号与元素即x-y依序排列表,表中在每个序号x的后面紧接着元素y。表的结构如下:TAB:x1y1x2y2.xnyn 给出序号x的数值后,用搜索法查出它所在的地址,将查出的地址加1,就是元素所在的地址,然后从中取出y值。,六、散转程序 散转程序实际是一种并行分支程序,可根据某个输入值或运算结果,转到不同的分支处理。例3-15 设程序中有四个功能子程序入口,分别为1000H、1200H、1400H、1600H。要求根据运行后

13、21H的数值0、1、2、3转相应子程序。ANYCHEN:MOV DPTR,#TABLE;取入口地址表头 MOV A,21H;取输入值 RL A ADD A,21H;输入值乘3 JMP A+DPTR TABLE:LJMP 1000H;TABLE+0 LJMP 1200H;TABLE+3 LJMP 1400H;TABLE+6 LJMP 1600H;TABLE+9,返回本章首页,Homework:1.阅读3.3-3.4,重点弄懂所讲例题2.完成作业P68之8、10、15、183.预习第四章,6.1-6.3,重点6.34.查阅参考书,特别是关于动态扫描显示原理,有哪些做法。References:1胡健 主编,单片机原理及接口技术M。机械工业出版社。2005年。P137-139.2唐俊杰等编,微型计算机原理及应用M。高等教育出版社。1992年。P208-210.,返回本章首页,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号