资源描述:
《《汇编语言设计》PPT课件(I)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、微机原理与接口技术第四章汇编语言程序设计1§4.6程序设计方法顺序结构;分支结构;循环结构;子程序结构;综合举例;2内容提要3▲一个好的程序应该具备的特点:⑴程序结构模块化,程序易读,易调试及维护。⑵执行速度快。⑶占用内存空间小。概述4▲设计汇编语言源程序的基本步骤:⑴分析问题抽象数学模型,确定实现算法。⑵绘制程序流程图⑶分配存储空间、工作单元分配数据段、堆栈段、程序段的位置,确定寄存器主要作用。⑷编写程序⑸静态检查,上机调试⑹程序运行,结果分析。§4.6.1、顺序结构5程序简单,程序顺序执行,无分支、循环,也无转移,图中没有判断框。例内存中TABLE开始存放0~9的平方值,通过
2、人机对话,当任意给定一个数X(0~9),查表得X的平方值,放在AL中。解:DATASEGMENTTABLE1DB0,1,4,9,16,25,36,49,64,81BUFDB‘Pleaseinputonenumber(0~9):’,0DH,0AH,‘$’DATAENDSSSEGSEGMENTPARASTACK‘STACK’DB50DUP(?)SSEGENDSCODESEGMENTMAINPROCFARASSUMECS:DATA,DS:DATA,SS:SSEGSTART:MOVAX,DATA;段初始化MOVDS,AX6MOVDX,OFFSETBUF;9号功能调用,提示输入一个数MOV
3、AH,9INT21HMOVAH,1;1号功能调用,键入数送ALINT21HANDAL,0FHMOVBX,OFFSETTABLE1MOVAH,0;查表得输入数的平方值ADDBX,AX;此2条指令等价于XLATMOVAL,[BX];AL=?MOVAH,4CH;结束程序返回INT21HRETMAINENDPCODEENDSENDSTART;将AL中的ASCII码转换成非压缩BCD§4.6.2、分支结构71.分支结构:根据不同条件程序选择不同的处理方法时,运用分支结构。共同特点:某种条件下,有一个且只有一个分支被执行,而其他分支一定不会被执行8例存储器中有一串字符串首址为BUF,字符串长
4、度N小于256,要求分别计算出其中数字‘0’~‘9’,字母‘A’~‘Z’和其它字符的个数,并分别将它们的个数存放到此字符串的下面三个单元中。思考:数学逻辑和描述分支结构图。。。解:DATASEGMENTBUFDBNDB01H,38H,47H,60H,…76HNUMDB3DUP(?)DATAENDSCODESEGMENTMAINPROCFARASSUMECS:CODE,DS:DATASTART:PUSHDSMOVAX,0PUSHAXMOVAX,DATAMOVDS,AX9MOVCH,BUF;数组个数N→CHMOVBX,1MOVDX,0;DH计数字的个数,DL计字母的个数LP:MOVA
5、H,BUF[BX]CMPAH,30HJLNEXT;小于‘0’转CMPAH,39HJGABC;大于‘9’转INCDH;数字个数加1JMPNEXTABC:CMPAH,41HJLNEXT;小于‘A’转CMPAH,5AHJGNEXT;大于‘Z’转INCDL;字母的个数加1NEXT:INCBX;数组地址加1DECCH;计数器减1JNZLP10MOVBUF[BX],DH;数字的个数送入内存单元MOVBUF[BX+1],DL;字母的个数送入内存单元MOVAH,NSUBAH,DH;SUBAH,DL;N―DH―DL=其它字符的个数MOVBUF[BX+2],AH;其它字符的个数送入内存单元RETMA
6、INENDPCODEENDSENDSTART112.多分支:依次测试多个条件是否满足:若满足转入相应分支入口;不满足继续向下测试,直到全部测试完。此方法编程简单直观,但速度慢。。例有8个加工子程序,入口地址分别为P1,P2,…P8。编程实现检测键盘输入命令,使系统分别转向8个加工子程序。解:相应程序如下:12MOVAH,1INT21H;1号功能键调用,键盘接收(P159)CMPAL,‘1’;键值为1,转1号加工子程序JEP1CMPAL,‘2’;键值为2,转2号加工子程序JEP2…CMPAL,‘8’JEP8;键值非1~8,转向停止JMPSTP1:…;1号加工子程序P2:…P3:……
7、P8:…ST:HLT133.跳转表实现多分支:好处:可以直接找到相应入口。实现:建立跳转表:包括每个分支的入口地址、跳转指令或关键字。⑴根据表内地址分支:跳转表中存放了每个分支程序的入口地址,只要找到表地址,再将其中内容取出,即可得到每个分支的入口地址。表地址=跳转表首地址+偏移地址使用:JMPWORDPTR[BX];转入相应入口地址JMP[BX]1415例将上例用跳转表来实现解:ADATASEGMENTBASEDWP1,P2,P3,P4;定义跳转表DWP5,P6,P7,P8KE