- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
顺序结构与汇编语言程序设计
程序结构和汇编语言程序设计 顺序结构 分支结构 循环结构 子程序结构 程序结构对于程序设计极为重要,不讲究结构的程序有如一团乱麻难以理清头绪。结构较好的程序逻辑严谨,流程清晰。对于高级语言,程序的基本结构已经包含在语言的设计考虑之内;而用汇编语言编程,程序员有必要对程序结构给予更多的关注。 顺序结构 程序逐条向下执行,称为顺序结构,是最简单的程序结构。 分支结构 常用的程序结构之一,有两分支结构和多分支结构,即高级语言中的CASE结构,两分支结构是基础,多分支可以通过两分支嵌套实现。 循环结构 也是重要的程序结构之一,有前判循环和后判循环的区别,汇编的LOOP指令为后判循环,但JMP和条件转移指令配合可以实现前判循环。 子程序 程序设计过程中,需要共享代码的情形十分普遍,把功用的程序段写成命名的子程序,并声明子程序的调用格式,可以方便共享,大幅度节省程序开发的成本。因此子程序是一种普遍采用的程序结构。关于子程序需要讨论以下问题: 汇编语言源程序中子程序的定义方法 参数传递问题 子程序的递归调用 子程序的嵌套定义 子程序定义 上一章,讨论伪操作时,已经介绍了子程序定义。至于子程序定义中的属性选择,如果该子程序只在局部共享,即只在同一段内被调用,可以说明为NEAR,否则应说明为FAR. 子程序的参数传递问题 利用高级语言编程序时,子程序或函数原型中要声明参数表,包括参数名和参数类型,称为形式参数,子程序调用时,要根据参数表填写对应的变量或数值,称为实参。 利用汇编语言编程时,子程序定义不要求说明参数表。但是,调用者只有在了解参数的类型,数目和传递方式的前提下才能正确地进行调用。因此,子程序的定义者必须以其它方式通知调用者该子程序的上述相关信息。 利用汇编语言编程时,调用子程序之前,先传递参数,一般放在寄存器或堆栈中。实际上,用高级语言编程也是这样做,只不过参数传递的细节交给编译程序,高级语言为程序员提供简单,直观的参数传递方法。汇编就麻烦一些,程序员必须了解要调用的子程序有几个参数,参数的类型,哪个参数应该存入哪个寄存器,或者参数应该以什么顺序压入堆栈。哪些参数应该传值,哪些参数应该传地址等。 子程序递归调用 子程序直接或间接(通过其它子程序)调用自身,称为递归调用。使用递归调用常常可以使源程序简化。但要注意,递归调用有可能导致堆栈溢出,有可能使开销恶性膨胀。可以使用递归调用的例子: 子程序嵌套 子程序嵌套是指在子程序体内定义其他子程序,不同的程序设计语言对此问题用不同办法处理,C语言不允许函数嵌套,而PASCAL语言允许过程嵌套。汇编语言允许子程序嵌套定义,但建议大家不要随便使用。因为子程序嵌套使程序结构复杂化。 求65535以内的奇素数 计算组合数 算法一程序流程 算法二程序流程 八皇后问题 皇后的威力 解的例子 求解思路—递归,回溯 数据结构 程序流程 长整数运算 80x86CPU只提供字操作,字节操作,也就是对于数据宽度超过16位(386以上可以使用32位字的指令)的整数运算,直接使用机器指令将无法完成,必须由程序员自己设法解决。 解决的办法并不复杂,简而言之,无非是教会计算机运算过程中进位,另外由于人们习惯使用十进制,而计算机中自然的进位制是二进制,因此,在进行长整数运算时,经常会遇到长整数十进制,二进制互化的问题。 长整数十化二 将输入的ASCII数字串装化为机内二进制 长整数二化十 将机内二进制转化为ASCII十进数字串 长整数加法 计算两个长整数的和 实例:大阶乘 计算大数的阶乘 长整数十化二 为什么要进行转化 输入的数据往往是十进制数,如果这个数要经过反复运算,最好在处理之前把它转化为二进制,这样可以使运算过程效率更高,存储空间的利用率也将提高。 例如,输入数据为255时,在计算机内以ASCII码格式存放,将得到字符串:32 35 35共三个字节,与其他数进行加法运算,需要执行三条加法指令(逐位相加),还要人工考虑进位,并进行十进制调整。化为二进制,得到 ff,进行运算时只需一条指令,并且不必调整。 十化二数据结构和算法 数据结构 来自调用者的十进制ASCII数字串 来自调用者的二进制结果串 注意:利用寄存器传送串地址,由于自然的原因,十进制串的高位数字在低地址,而二进制串的高位在高地址。 算法 输入的十进制数为 转换为 十化二程序流程 二化十的数据结构和算法 二化十的程序流程 二十互化的测试程序 为了检验长整数转换的程序正确性。编写一段检验程序,先输入,然后调用十化二子程序将输入的十进制数转化
您可能关注的文档
最近下载
- 【有“化”好说1】必修1 物质的量、氧化还原反应.pdf VIP
- 读《思维导图与小学英语教学》有感.docx VIP
- 《旅游景区服务与管理》教案 第7课 熟悉旅游景区的自助式解说服务.docx VIP
- PSA15000Nm3h制氢装置操作手册.pdf VIP
- 《旅游景区服务与管理》教案 第6课 做一名优秀的景区讲解员.docx VIP
- 《旅游景区服务与管理》教案 第5课 认识旅游景区的解说服务.docx VIP
- 开利吊顶式新风机新样本N-DBFP(X)DFP(X).pdf VIP
- 【大单元教学】第四章 中国的经济发展 单元教学分析 人教版地理八年级上册.docx
- 历届茅盾文学奖获奖作品名 单.doc VIP
- 检验仪器分析技术 课件 第一章 临床检验分离仪器.pptx
文档评论(0)