




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
27 03 2020 第1章汇编语言基础知识5章基本程序设计 1 第5章基本程序设计 27 03 2020 第1章汇编语言基础知识5章基本程序设计 2 5 1程序设计方法概述 5 2流程图 5 3结构化程序设计 第5章基本程序设计 5 4顺序结构的程序设计 27 03 2020 第1章汇编语言基础知识5章基本程序设计 3 汇编语言同BASIC或C等高级语言一样 都是一些语句和指令的集合 这些语句决定计算机将做什么 它们的不同之处在于如何指示计算机完成相应的任务 高级语言给出一般性命令 而汇编语言给出具体的命令 汇编语言指令集中的语句直接涉及到计算机的硬件部分 提供给计算机更详细的命令 直接对硬件进行操作 如 置32于AX寄存器中 将CL寄存器的内容传送到DL寄存器中 存储DL寄存器中数到内存3456地址处 等 5 1程序设计方法概述 使用汇编语言是在计算机能够理解的基础上编写程序 但又不必死记机器代码 采用像英文缩写一样的指令 然后运行汇编程序 将汇编语言编写的程序翻译成机器代码 将它们转化为机器代码 用汇编指令写的程序称为汇编语言源程序 微处理器可执行的机器代码形式称为目标程序 27 03 2020 第1章汇编语言基础知识5章基本程序设计 4 一般说来 编制一个汇编语言程序需要完成以下步骤 1 分析题意 建立数学模型 确定数据结构及算法 这一步是能否编制出高质量程序的关键 因此不应该一拿到题目就急于写程序 而是应该仔细地分析和理解题意 找出合理的算法及适当的数据结构 2 根据算法画出程序流程图 这一步对初学者尤其重要 这样做可以减少出错的可能性 画流程图时可以从粗到细把算法逐步地具体化 3 根据算法及数据结构分配内存单元和寄存器 4 编写汇编语言源程序 5 使用汇编程序调试工具上机调试程序 5 1 1编写汇编语言程序的步骤 5 1程序设计方法概述 27 03 2020 第1章汇编语言基础知识5章基本程序设计 5 5 1 2判断程序质量的标准 5 1程序设计方法概述 一个良好的程序应符合以下标准 1 程序可读性强 2 程序执行的时间短 效率高 3 程序所占用的内存少 4 程序的语句行数少 27 03 2020 第1章汇编语言基础知识5章基本程序设计 6 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 一般来说 开发汇编语言程序有以下面5个步骤 1 设计 2 编辑 3 汇编 4 连接 5 调试 27 03 2020 第1章汇编语言基础知识5章基本程序设计 7 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 1 设计根据所需完成的任务要求 设计程序结构 确定应用算法 并按使用的寄存器从程序段 数据段和堆栈段制定内存分配方案 画出程序流程图 27 03 2020 第1章汇编语言基础知识5章基本程序设计 8 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 2 编辑根据设计方案及程序流程图创建汇编语言源程序 该源程序是按照汇编语言语法规则编写的文本文件 定义为后缀是 ASM的文件 它由程序员通过文本编辑器来完成 文本编辑器是任何流行的字处理器或编辑器 只要它们可以产生纯ASCII码文本文件 不带有任何特殊控制码和格式码 DOS下常用的有Edit PE2等 Windows下常用的有Word等 但文件存储格式必须为 TXT 文本格式 且扩展名必须为 ASM 27 03 2020 第1章汇编语言基础知识5章基本程序设计 9 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 3 汇编汇编是指将汇编语言编写的程序翻译成机器代码组成的目标程序的过程 自动完成这一任务的软件叫汇编程序 又称为汇编器 自动生成的目标程序是机器可以理解的 它是后缀为 OBJ的文件 在汇编的过程中 汇编程序可以发现源程序的语法诺误 如格式错误 非法指令 操作数类型不匹配等 一旦发现错误 汇编程序会提示程序员对源程序加以修改 并重新汇编 汇编程序主要包括以下几方面的功能 检查源程序中的语法错误 并给出出错信息 产生源程序的目标程序 并给出列表文件 支持地址和数据的符号变量表 支持对内存的管理 支持多种类型的数据表示 支持程序的模块化组织 DOS下常用的汇编程序有MASM TASM等 27 03 2020 第1章汇编语言基础知识5章基本程序设计 10 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 4 连接DOS运行一个可执行程序时 先要在内存中为该程序开辟一块或几块存储空间 然后在此加载并运行该程序 该存储空间是由系统当时的运行状态决定的 是不固定的 这就要求可执行程序是可重定位的 即它可以在内存的不同位置运行 汇编后生成的目标程序虽然加载了CPU可识别的机器代码 但它缺少系统所需要的重定位信息 所以并不能直接运行 目标程序必须经过连接程序的连接 生成附带重定位信息的可执行程序 后缀为 COM或 EXE的文件 才能运行 连接程序的第一个任务就是从目标模块中产生一个运行模块 并使其具有可重定位性 连接程序的第二个任务是可将几个目标模块连接成一个可执行的模块 并同样使其具有可重定位性 这样就可以将一个程序的几部分分别编写 汇编成几个目标模块 再通过连接程序将几个目标模块连接 生成一个完整的运行模块 连接程序可以发现源程序中的连接错误 如段的溢出或覆盖 匹配的模块 不存在或不匹配的标号 变量等 DOS下常用的连接程序有Link Tlink等 27 03 2020 第1章汇编语言基础知识5章基本程序设计 11 5 1 3汇编语言程序的开发过程 5 1程序设计方法概述 5 调试完成设计 编辑 汇编 连接后得到的可执行目标程序中可能存在一些错误 这些错误可能是设计缺陷或编辑时的笔误 它们可能使程序运行出现结果错误 死机甚至其他无法预测的后果 这类错误被称为逻辑错误 它们是汇编程序和连接程序都无法发现的 这类错误只能靠程序员凭借调试程序和经验对可执行程序进耐心细致的跟踪调试 才能逐一排除 DOS下常用的调试程序有Debug Tdebug等 27 03 2020 第1章汇编语言基础知识5章基本程序设计 12 5 1 4完整的汇编语言程序框架 5 1程序设计方法概述 源程序的一般格式为 NAME1SEGMENT 标号 汇编语言语句序列 标号指示程序入口 NAME1ENDSNAME2SEGMENT 标号 汇编语言语句序列 NAME2ENDS END 程序起始地址标号 27 03 2020 第1章汇编语言基础知识5章基本程序设计 13 5 1 4完整的汇编语言程序框架 5 1程序设计方法概述 DATASEGMENT 定义数据段HELLODB WelcometoBEIJING 0dh 0ah DATAENDSCODESEGMENT 定义代码段ASSUMECS CODE Ds dataSTART movax datamovds axLEADX HELLOMOVAH 9int21hmovah 4chint21hCODEENDSENDSTART 以下是一个例子 说明8086 8088汇编语言的基本框架结构 该程序在屏幕上显示一句问候语 WelcometoBEIJING 27 03 2020 第1章汇编语言基础知识5章基本程序设计 14 5 1程序设计方法概述 5 3结构化程序设计 第5章基本程序设计 5 4顺序结构的程序设计 5 2流程图 27 03 2020 第1章汇编语言基础知识5章基本程序设计 15 5 2 1流程图的功能及意义 5 2流程图 流程图是程序员进行程序设计的工具 画流程图是在确定算法之后编写程序之前 其目的是准确地表示算法 因此流程图应当是逻辑的 而不是物理的 无论在哪种机器上使用哪种语言 同一个问题的同一个算法的流程图应当是唯一的 27 03 2020 第1章汇编语言基础知识5章基本程序设计 16 5 2 2流程图的画法规定 5 2流程图 端点框 用于表示程序或过程的开始和结束点 框中可以写程序名和过程名 开始 结束 返回 等 处理框 表示除判断以外的所有操作 要完成的操作 可以很概括 也可以很细致 判断框 这种框有一个入口和两个出口 框中写有某种逻辑条件 根据条件成立与否 分别执行不同的处理 衔接框 用于将一个流程图分成几个部分分别绘制的情况 框中可以标有数字 两个标有相同数字的衔接框本来是接在一起的 流向线 连接在各框之间的有向线 指示各框代表的工作的执行次序 27 03 2020 第1章汇编语言基础知识5章基本程序设计 17 5 1程序设计方法概述 第5章基本程序设计 5 4顺序结构的程序设计 5 2流程图 5 3结构化程序设计 27 03 2020 第1章汇编语言基础知识5章基本程序设计 18 5 3结构化程序设计 1 三种程序构件 27 03 2020 第1章汇编语言基础知识5章基本程序设计 19 2 逐步求精的设计方法 5 3结构化程序设计 简言之 这是一种先全局后局部 先整体后细节 先抽象后具体的自顶向下的设计方法 对于复杂的问题 我们不可能立刻精确地给出求解的详细步骤 但是可以从问题的描述开始 首先得到求解的大致步骤 并表示成三种基本结构之一 然后再将上一结构中的处理框进一步分解 加细 仍然代之以三种基本结构之一 如此继续直到最后的流程图已经细致到可以编程的程度为止 27 03 2020 第1章汇编语言基础知识5章基本程序设计 20 5 3结构化程序设计 3 模块化设计方法 问题规模愈大 求解程序的尺寸也愈大 编写和排错也就愈加困难 模块化设计主张 在解决一个规模较大的问题时 把求解程序按功能分成若干模块 每个模块有自己的相对独立的功能 尺寸较小 通常不超过一页 60多行 这里的模块一般是作为过程和宏实现的 27 03 2020 第1章汇编语言基础知识5章基本程序设计 21 5 1程序设计方法概述 第5章基本程序设计 5 2流程图 5 3结构化程序设计 5 4顺序结构的程序设计 27 03 2020 第1章汇编语言基础知识5章基本程序设计 22 5 4顺序结构的程序设计 顺序结构的程序从开始执行到结束 一直是按指令序列在存储器中的存放顺序来执行指令的 这个执行顺序由CS IP提供的指令地址来控制 在程序执行前 系统将要执行的第一条指令的地址装入CS和IP中 然后CPU按CS IP中的地址从存储器取指令到指令队列准备执行 同时修改IP内容指向下一条指令 本条指令执行结束 就接着执行下一条指令 这样逐条执行指令直到程序结束 顺序程序的流程图除了起止框外 就是一个接一个的处理框 无判断框 如图5 2所示 顺序程序一般为简单程序 如计算表达式程序 查表程序 27 03 2020 第1章汇编语言基础知识5章基本程序设计 23 5 4顺序结构的程序设计 设X Y的值存放在字变量VARX VARY中 结果存放在VARZ中 程序的流程图如图5 2所示 源程序编写如下 TITLEEQUATIONCOMPUTEDATASEGMENTVARXDW15VARYDW10VARZDW DATAENDS 例5 1试编写一程序计算以下表达式 Z 3X十Y 5 2 27 03 2020 第1章汇编语言基础知识5章基本程序设计 24 5 4顺序结构的程序设计 CODESEGMENTASSUMECS CODE DS DATAStart MOVAX DATA 初始化DSMOVDS AXMOVAX VARX AX XSHLAX 1 AX 2XADDAX VARX AX 3XADDAX VARY AX 3X YSUBAX 5 AX 3X Y 5SARAX 1 AX 3X Y 5 2MOVVARZ AX 存结果movah 4chint21h 返回DOSCODEENDSENDstart 例5 1调试 27 03 2020 第1章汇编语言基础知识5章基本程序设计 25 5 4顺序结构的程序设计 查表的结果放在变量MATH中 编写的源程序如下 TITLETABLELOOK UPDATASEGMENTTABLEDB81 78 90 64 85 76 93 82 57 80DB73 62 87 77 74 86 95 91 82 71NUMDB8MATHDB DATAENDS 例5 2利用学号查该学生的数学成绩 首先在数据段中建立一个成绩表TABLE 在表中按学号从小到大的顺序存放分数 要查的学号存放在变量NUM中 27 03 2020 第1章汇编语言基础知识5章基本程序设计 26 CODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVBX OFFSETTABLE BX指向表首址XORAH AH 5 4顺序结构的程序设计 MOVAL NUMDECALADDBX AX BX加上学号指向要查的成绩MOVAL BX 查到成绩MOVMATH AL 存结果MOVAH 4CH 返回DOSINT21HCODEENDSENDSTART上述程序中 学号NUM是从1开始 因此需将学号减1以获得成绩在表中的偏移量 开始 如果程序使用换码指令XLAT 则长度还可缩短 可替换成 XLAT 27 03 2020 第1章汇编语言基础知识5章基本程序设计 27 换码指令格式为 XLAT指令功能 AL BX AL 不影响标志位 XLAT指令可将AL中的一个值转换为存储器表格中的一个值后 再送回AL中 使用XLAT指令之前 要求将表首地址的偏移量送人BX中 待查项与表首地址之间的字节距离送入AL 0 255 中 这样 以上程序中代码段的有关指令语句可以改为 BEGIN MOVAX DATAMOVDS AXMOVBX OFFSETTABLEMOVAL NUMDECALXLATMOVMATH AL 5 4顺序结构的程序设计 27 03 2020 第1章汇编语言基础知识5章基本程序设计 28 例用查表方法将hex单元中低4位16进制数转化为相应的ASCII并显示 调试 27 03 2020 第1章汇编语言基础知识5章基本程序设计 29 例将HEX单元的内容拆成2段 每段4位 将其存入result result 1两个单元 datasegmenthexdb7AHresultdb dat
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年电池电源行业当前竞争格局与未来发展趋势分析报告
- 2025年检验检测行业当前市场规模及未来五到十年发展趋势报告
- 支委会的召开课件
- 操作安全知识培训课件
- 2025年部编版新教材语文七年级上册期末复习计划
- (2025)中小学教师资格证考试教育学心理学试题库及参考答案
- 2025全国企业员工全面质量管理知识考试试题库及参考答案
- (2025)物权法试题库及参考答案
- 2025年保育员(中级)操作证考试试题及答案
- 2024年土木工程师:“房屋建筑及施工”专业知识试题及答案
- 二零二五版知识产权保护与保密协议
- 功率放大器测试培训课件
- 全域土地综合整治实施方案
- 美容中医课件模板
- 小学生校园文明礼仪常规教育主题班会
- 人体脚部解剖课件
- 资料员考试题库及答案
- 会议管理实务培训课件
- 2025年广西专业技术人员继续教育公需科目(二)答案
- 护理学解剖课件
- 2025至2030年中国磷系水处理剂行业市场分析研究及产业需求研判报告
评论
0/150
提交评论