- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]汇编语言程序设计
计算机(单片机)汇编语言程序设计
程序设计的难点
我们曾经把计算机比喻为博弈(下棋)。计算机的硬件相当于棋盘与棋子,计算机的指令就相当于是规则,而计算机的程序则是完成指定任务的指令序列。
下棋是需要动脑子的,计算机的程序设计更需要仔细思考。因为下棋时可以看着棋盘,而计算机的程序运行我们一般是看不到的,除非借助特殊的调试工具。因此计算机的程序设计相当于下盲棋,即不看棋盘下棋。这就要求大家具有下盲棋的基本技能与训练。具体来说,你所编写的程序中的每一个步骤、每一条指令的执行结果是什么,都要能够记住并在以后的程序中使用。一旦忘记或记错,就会导致结果错误。
现在很多计算机的程序开发环境都提供了一定的调试工具,可以在一定程度上看到计算机内部的情况。但是在程序设计的编写阶段(不是调试阶段),仍然是处于下盲棋的环境。
“失之毫厘,差之千里”这句话用来形容计算机的程序设计是再恰当不过的了。要从事计算机的程序设计的工作,必须具备三“心”:兢兢业业、一丝不苟的细心;孜孜不倦、反复琢磨的耐心;坚持不懈、持之以恒的恒心。
程序设计与调试的基本方法
第一步:画程序流程框图。
程序流程框图是描述用计算机语言解决问题的思路,必须先考虑清楚如何下手以及具体的步骤。初学程序设计的人往往忽视这一步,实际上这是非常重要的一步。高级程序设计人员基本上都有画框图的习惯,因为框图才是程序设计员进行交流的语言和工具。框图画出来后,编写程序就已经不是问题了。
第二步:框图的细化。
程序设计一般遵循从上到下的步骤,即先构思总体结构,再逐步细化直至每一个环节。总体框图往往只有对于解题过程的笼统的描述,而要编写程序还需要比较细致的描述,因此需要对总体框图进行细化,直到能够编写程序为止。
第三步:将框图转化为程序。
程序流程框图细化到一定程度时,就可以将框图的每个环节转化为若干指令了。将这些指令组合连接起来,就形成了计算机的程序。
第四步:用调试工具进行调试。
程序编写完成后,一般都会有这样那样的问题和错误。其中的语法错误可以通过编译(Build)解决。而逻辑错误(即程序不能满足设计要求的功能)只能通过调试来解决。
程序调试需要借助一定的调试工具(调试器、仿真器),使程序在受控状态下运行。程序的受控运行,指的是用户能够以单步和断点方式运行程序,同时能够随时查看CPU和存储器中的状态和信息。这样用户就可以将计算机的运行中间结果和自己预期的结果进行比较,从而发现问题和错误所在。现在的软件开发系统都提供了一定的调试手段,我们所使用的Keil软件就提供了软件仿真和硬件仿真功能。
典型算法程序分析
下面通过具体的实例来说明程序设计和调试的过程。
编写4字节加法的子程序。加数与被加数由指针R0和R1定位。结果存放于被加数的存储器单元及随后的一个单元(原有内容被冲掉)。
解题步骤如下:
程序流程框图及其细化(能够转化为指令即可):
MOV R0,#30H
MOV R1,#40H
MOV A,@R0
ADD A,@R1
MOV @R1,A
中间过程省略
SJMP $
(调试过程略)
编写2字节乘2字节的子程序,乘数位于R2R3,被乘数位于R4R5。结果存放于R4R5R6R7中。
程序流程框图如下:
中间过程省略
为了进行编程,初学者需要进一步将框图细化,直至每一个方框可以转化为一条指令。熟练以后就可以省去细化框图的过程,不用过分细化,直接编写程序。
细化后的程序流程框图如下:
MOV A,R3
MOV B,R5
MUL AB
MOV R7,A
MOV R6,B
MOV A,R2
MOV B,R5
MUL AB
ADD A,R6
MOV R6,A
MOV A,B
ADDC A,#0
MOV R5,A
中间过程与此类似
SJMP $
在上面的程序中,第二次的乘法既可以做R2*R5,也可以做R3*R4。但是先做R2*R5可以将R5解放出来,用于存放结果。这样可以尽量少地占用存储器资源。这是程序设计的技巧。
下面用一个带有缺陷的乘法程序说明调试过程。
MUL16: MOV A,R3
MOV B,R5
MUL AB
MOV R7,A
MOV R6,B
MOV A,R2
MOV B,R5
MUL AB
ADD A,R6
MOV R6,A
CLR A
ADDC A,B
MOV R5,A
MOV A,R3
MOV B,R4
MUL AB
ADD A,R6
MOV R6,A
MOV A,R5
ADDC A,B
MOV R5,A
MOV A,R2
MOV B,R4
MUL AB
ADD A,R5
MOV R5,A
CLR A
您可能关注的文档
- [工学]兴湘08级汇编语言程序设计课件.ppt
- [工学]军歌嘹亮_歌咏比赛策划方案.doc
- [工学]刀具课程问卷总结.pdf
- [工学]分析化学 试题1.doc
- [工学]利用超松弛预处理共轭梯度法求解大型稀疏方程组.pdf
- [工学]信息安全专业课程开发与实训室建设高职版.pdf
- [工学]剖视面图1.ppt
- [工学]力学发展综述.doc
- [工学]化工原理非均相.doc
- [工学]化工原理课程设计任务书.doc
- 2-红河州建筑施工安全生产标准化工地复核评分表(2022年修改版).docx
- 6.锡通项目2018年下半年工作会汇报材料(2018.7.9).docx
- 2018道路工程知识点汇总(新版).docx
- 附件3:月度生产例会安全汇报资料-站台门项目部.docx
- 附件2:广东建工集团2018年度科技成果汇总表.DOC
- 马武停车区、三汇停车区停车位管理系统,0#台账缺量.doc
- 攀成钢委办发〔2015〕19号(党风廉政建设责任考核与追究办法).doc
- 1-红河州建筑工程质量管理标准化复核评分表(2022年修改版).docx
- 中交第三公路工程局第四工程分公司项目经济合同结算管理办法(修订).doc
- 厂站安全操作规程汇编.doc
文档评论(0)