网站大量收购闲置独家精品文档,联系QQ:2885784924

05汇编语言程序设计1解析.ppt

  1. 1、本文档共121页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第5章 汇编语言程序设计 本章主要内容 本章介绍汇编语言程序设计的基本方法,包括:顺序程序设计、分支程序设计、循环程序设计和子程序的设计。 5.1 汇编语言源程序设计的步骤 5.1.1 分析问题 首先必须明确求解问题的意义和任务。对给出的已知条件和要完成的任务进行详细地了解和分析,将一个实际的问题转化为计算机可以处理的问题。 5.1.2 确定算法 其次就是确定解决问题的算法。所谓算法,简单地说就是计算机能够实现的有限的解题步骤。我们知道,计算机只能进行最基本的算术运算和逻辑运算,要完成较为复杂的运算和控制操作,必须选择合适的算法,这是正确编程的基础。 5.1.3 绘制流程图 将提出的算法或编程思想用流程图的方式画出来。图5-1给出了流程图中较为通用的几种符号。 5.1.4 程序设计 根据流程图进行程序设计就是采用某种程序设计语言来实现上面已确定的算法,此过程有些书上称为编码。 本书所介绍的是采用汇编语言编写程序。 采用汇编语言编写程序应注意以下几个问题: 必须详细了解CPU的编程模型、指令系统、寻址方式及相关伪指令; 必须进行存储空间和工作单元的合理分配; 多次使用的程序段落可采用子程序或宏指令; 尽可能用标号或变量来代替绝对地址和常数; 5.1.5 程序检验 程序编写好以后,必须经过书面检查和上机调试,以便说明程序是否正确。检验时,应预先选择典型数据,检查是否可以得到预期结果。 5.1.6 编写说明文件 一个完整的软件应有相应的说明文件,这不仅便于用户使用,也便于对程序的维护和扩充。说明文件主要应包括程序的功能和使用方法,程序的基本结构和所采用的主要算法以及程序必要说明和注意事项等。 32位微机系统中,CPU可以工作在实模式、保护模式和虚拟模式下,本章仅介绍基于实模式的程序设计。 5.2 顺序程序设计 顺序结构也称线性结构,其特点是其中的语句或结构被连续执行,顺序程序是最简单的,也是最基本的一种程序结构形式。 CPU总是根据CS:IP获取下一条指令所在存储单元的地址,并自动对IP不断执行加1操作。 这种结构的程序从开始到结尾一直是顺序执行的,中途没有任何分支和循环。 从流程图来看,顺序结构除了一个起始框,一个结束框外,就是若干个执行框,没有判断框。 具有顺序结构的程序叫做简单程序。 例:实现625*210→M。 M DD ? MOV AX,625 MOV BX,210 MUL BX ;16位乘法:结果为32位 MOV M ,AX MOV M+2,DX 注:算术运算指令需要注意字长、区分无符号/有符号、溢出等问题。 例5.9:P161。 5.3 分支程序设计 分支程序有3种结构,即简单分支、复合分支和多分支。 复合分支是指通过一个简单分支不能实现判断,必须多个分支合起来才能进行判断的情况。 在设计多分支转移程序时,如果分支太多,则平均转移速度太慢。可以采用转移地址表来实现多分支转移,可以提高平均转移速度。 多分支结构相当于一个多路开关,在程序设计中通常是根据某寄存器或某存储单元的内容(一个数字)进行程序转移。 分支程序的结构示意图 1.简单分支 通常,是在执行了算术比较指令CMP,或者逻辑比较指令TEST之后,根据Z,S,O,P,C等各种状态标志进行条件转移。 如果条件成立:跳转到指定指令开始执行; 否则,顺序执行转移指令的下一条指令。 例:将一个16位二进制数以二进制数的方式显示。 CODE SEGMENT USE16 ASSUME CS:CODE BEG: MOV BX,5678H ;BX中为将要处理的16位二进制数 MOV CX,16 ;每次移出1位、循环16次 LAST:MOV DL,’0’ RCL BX,1 ;BX循环左移一位 JNC NEXT ;若进位标志为0则转,显示0 MOV DL,’1’ ;为1时,则显示1 NEXT: MOV AH,2 INT 21H LOOP LAST MOV AH,4CH INT 21H CODE ENDS END BEG 思考: 例中的RCL换为SHL、SAL、ROL,是否可行? “左移”换为“右移” 是否可行? 2.复杂分支 在简单分支的某个分支上进行其他条件的判断。 【例】 设有一个带符号的16位数存于ALFA单元中。编程判断该数,若大于0、将BETA单元置为0FFH;若等于0、将BETA+1单元置为0F

文档评论(0)

_______ + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档