资源描述:
《微机原理及应用第6章》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、程序设计步骤1分析问题2制订方案3编写程序4查错5测试6形成程序文件6.4程序的基本结构及基本程序设计1复合结构:多种程序结构的组合……基本程序结构顺序(简单)结构循环结构分支结构子程序结构26.4.1顺序程序设计举例例1计算Z=(3X+Y-5)/2(1)数据分析,表达式中有三个变量X、Y、Z,可以使用三个内存单元来表示,题目没有指明变量的变化范围,使用字节、字为单位都可以。3X:2X+X一条移位指令和一条加法指令可以实现3X+Y-5:一条加法指令和一条减法指令可以实现(3X+Y-5)/2:除以2可以使用右移指令实
2、现总体上程序应该为顺序结构,按照表达式规定的顺序使用加法、减法、移位指令相结合可以实现要求的全部运算。(2)算法分析:(3)绘制流程图并写出相关程序主体开始计算2X+X计算3X+Y-5计算(3X+Y-5)/2结束MOVAX,VARXSHLAX,1ADDAX,VARXADDAX,VARYSUBAX,5SARAX,1MOVVARZ,AX4;数据段ASCIIdb30h,31h,32h,33h,34h,35h,36h,37h,38h,39h;对应‘0’~‘9’的ASCII码db41h,42h,43h,44h,45h,46h
3、;对应‘A’~‘F’的ASCII码hexdb04h,0bh;假设两个查表数据例2采用查表法,实现一位16进制数转换为ASCII码XLAT5;代码段MOVBX,OFFSETASCII;BX指向ASCII码表首址MOVAL,HEX;AL取得一位16进制数;即要查表项在ASCII码表中的位移ANDAL,0FH;屏蔽高4位只取低4位XLAT;换码:AL←DS:[BX+AL]例2采用查表法,实现一位16进制数转换为ASCII码其它实现方法?6ANDAL,0FHCMPAL,9JBELP1ADDAL,37H;是A~F,加37HJ
4、MPLP2LP1:ADDAL,30H;是0~9,加30HLP2:MOVRESULT,AL例216进制数转换为ASCII码(另解)76.4.2分支程序设计分支程序根据条件是真或假决定执行与否判断的条件是各种指令,如CMP、TEST等执行后形成的状态标志转移指令Jcc和JMP可以实现分支控制分支结构有单分支结构双分支结构多分支结构81.单分支结构条件成立跳转,否则顺序执行分支语句体注意选择正确的条件转移指令和转移目标地址实例:求绝对值9例:计算AX中有符号数的绝对值CMPAX,0JGENONEG;条件满足(AX≥0),
5、转移NEGAX;条件不满足,求补NONEG:MOVRESULT,AX;条件满足;另解ANDAX,AXJNSNONEG;条件满足(AX≥0),转移YESNEG:NEGAX;条件不满足,求补NONEG:MOVRESULT,AX;条件满足其它实现方法?10例:计算AX中有符号数的绝对值(另解)CMPAX,0JLYESNEG;条件满足(AX<0),转移JMPNONEGYESNEG:NEGAX;条件不满足,求补NONEG:MOVRESULT,AX;条件满足双分支结构112.双分支结构条件成立跳转执行第2个分支语句体,否则顺序
6、执行第1个分支语句体注意第1个分支体后一定要有一个JMP指令跳到第2个分支体后12例:大小写字母转换如果DL是一个小写字母,则转换为大写CMPDL,’a’;小于a,不需要处理JBDISPCMPDL,’z’;大于z,也不需要处理JADISPSUBDL,20H;是小写字母,则转换为大写disp:……转换原理133.多分支结构多分支结构是多个条件对应各自的分支语句体,哪个条件成立就转入其相应分支体执行例:统计某班在微机原理考试中,成绩为优、良、中、差的人数。学生成绩由键盘输入,且用数字‘4’、3’、‘2’、‘1’分别表示
7、优、良、中、差。用数字‘0’表示成绩输入结束。1415源程序如下:;数据段Adb0Bdb0Cdb0Ddb0;代码段Next:movah,1;由键盘输入一个字符int21hcmpal,’0’;为‘0’,转移(结束)jeg1A1:cmpal,’4’jneB1incA;为‘4’,变量A加1jmpnext16代码段B1:cmpal,’3’jneC1incB;为‘3’,变量B加1jmpnextC1:cmpal,’2’jneD1incC;为‘2’,变量C加1jmpnextD1:incD;变量E加1jmpnext………..17时
8、间:TA时间:TB时间:TCDT2T3T3T3.多分支结构(续)18典型的多分支结构流程图如下:时间:TABCDTTTT可用跳转表来实现多路分支3.多分支结构(续)19跳转表的组成跳转地址(各分支的入口地址)跳转指令(转向各分支的转移指令)关键字3.多分支结构(续)20例:用跳转表法编一个十中取一的多路分支程序。假设有十个例行程序,其入口地址分别为R0,R1