计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计18086/8088和ARM核汇编语言程序设计第5章基本程序设计锁绩澈沽寥叁活笋赠饭究朱服隘摊戳稚峦后斟常邀玉富忙啪穿新中营骇燃安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计25.1程序设计方法概述5.2流程图5.3结构化程序设计第5章基本程序设计5.4顺序结构的程序设计杏燃盈聘最磊回始椽凝剖蚌七害悦欠韧阜宙皮祈蛾丁往戌蹿痪擅配投有桔安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计3汇编语言同BASIC或C等高级语言一样,都是一些语句和指令的集合,这些语句决定计算机将做什么,它们的不同之处在于如何指示计算机完成相应的任务。高级语言给出一般性命令,而汇编语言给出具体的命令。汇编语言指令集中的语句直接涉及到计算机的硬件部分,提供给计算机更详细的命令,直接对硬件进行操作,如“置32于AX寄存器中”,“将CL寄存器的内容传送到DL寄存器中”,“存储DL寄存器中数到内存3456地址处”等。5.1程序设计方法概述使用汇编语言是在计算机能够理解的基础上编写程序,但又不必死记机器代码。采用像英文缩写一样的指令,然后运行汇编程序(将汇编语言编写的程序翻译成机器代码)将它们转化为机器代码。用汇编指令写的程序称为汇编语言源程序。微处理器可执行的机器代码形式称为目标程序。蓟榜敬扦咨独芒岳湘蔬入贵醛蔫梆茫勒售衙曰眯嫁瘴御怯佳利诵碑够填碑安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计4一般说来,编制一个汇编语言程序需要完成以下步骤:(1)分析题意,建立数学模型,确定数据结构及算法。这一步是能否编制出高质量程序的关键,因此不应该一拿到题目就急于写程序,而是应该仔细地分析和理解题意,找出合理的算法及适当的数据结构。(2)根据算法画出程序流程图。这一步对初学者尤其重要,这样做可以减少出错的可能性。画流程图时可以从粗到细把算法逐步地具体化。(3)根据算法及数据结构分配内存单元和寄存器。(4)编写汇编语言源程序。(5)使用汇编程序调试工具上机调试程序。5.1.1编写汇编语言程序的步骤5.1程序设计方法概述逐疯矽肛腿檬周碎辅宫眠赵兰艘悦顺秩凹烤棘荫蝴抒悯拔炎胚唇虞轿横誓安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计55.1.2判断程序质量的标准5.1程序设计方法概述一个良好的程序应符合以下标准:(1)程序可读性强。(2)程序执行的时间短(效率高)。(3)程序所占用的内存少。(4)程序的语句行数少。罕组旧矫盘梨坏握湛汞糊战疡谭傲鼎乱狞镑婆梨筹遇簿直徽翰净贯紫泰颈安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计65.1.3汇编语言程序的开发过程5.1程序设计方法概述一般来说,开发汇编语言程序有以下面5个步骤:(1)设计(2)编辑(3)汇编(4)连接(5)调试济鸿涕牛勿鸵元厉掀活藏匣抖屠榨世觉叛删炔筛腥嘛凯害涂杏翠驱峭贝炽安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计75.1.3汇编语言程序的开发过程5.1程序设计方法概述(1)设计根据所需完成的任务要求、设计程序结构,确定应用算法,并按使用的寄存器从程序段、数据段和堆栈段制定内存分配方案,画出程序流程图。碳糜扰况溪痕例愉须氖努苫笺挎诸冶肤姑跟慧戴纤牢增污颂抖奄纱个宗怔安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计85.1.3汇编语言程序的开发过程5.1程序设计方法概述(2)编辑根据设计方案及程序流程图创建汇编语言源程序。该源程序是按照汇编语言语法规则编写的文本文件,定义为后缀是.ASM的文件。它由程序员通过文本编辑器来完成。文本编辑器是任何流行的字处理器或编辑器,只要它们可以产生纯ASCII码文本文件,不带有任何特殊控制码和格式码。DOS下常用的有Edit、PE2等。Windows下常用的有Word等,但文件存储格式必须为(.TXT)文本格式,且扩展名必须为.ASM。恭裂陀民聂节匠绎形桌登胞曹挞兔伤纂咐才兜搭趾佣凰脚葱守许蔡芦形诞安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计95.1.3汇编语言程序的开发过程5.1程序设计方法概述(3)汇编汇编是指将汇编语言编写的程序翻译成机器代码组成的目标程序的过程。自动完成这一任务的软件叫汇编程序,又称为汇编器。自动生成的目标程序是机器可以理解的,它是后缀为.OBJ的文件。在汇编的过程中,汇编程序可以发现源程序的语法诺误,如格式错误、非法指令、操作数类型不匹配等。一旦发现错误,汇编程序会提示程序员对源程序加以修改,并重新汇编。汇编程序主要包括以下几方面的功能:①检查源程序中的语法错误,并给出出错信息。②产生源程序的目标程序,并给出列表文件。③支持地址和数据的符号变量表。④支持对内存的管理。⑤支持多种类型的数据表示。⑥支持程序的模块化组织。DOS下常用的汇编程序有MASM、TASM等。。呼晌忠先奸咕骆愁竞死涵吓逼蛔豫枯添剥请蚂揉孵鞠究枯驮想荧撤轮勾煤安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计105.1.3汇编语言程序的开发过程5.1程序设计方法概述(4)连接DOS运行一个可执行程序时,先要在内存中为该程序开辟一块或几块存储空间,然后在此加载并运行该程序。该存储空间是由系统当时的运行状态决定的,是不固定的,这就要求可执行程序是可重定位的,即它可以在内存的不同位置运行。汇编后生成的目标程序虽然加载了CPU可识别的机器代码,但它缺少系统所需要的重定位信息,所以并不能直接运行。目标程序必须经过连接程序的连接,生成附带重定位信息的可执行程序(后缀为.COM或.EXE的文件)才能运行。连接程序的第一个任务就是从目标模块中产生一个运行模块,并使其具有可重定位性。连接程序的第二个任务是可将几个目标模块连接成一个可执行的模块,并同样使其具有可重定位性。这样就可以将一个程序的几部分分别编写,汇编成几个目标模块,再通过连接程序将几个目标模块连接,生成一个完整的运行模块。连接程序可以发现源程序中的连接错误,如段的溢出或覆盖、匹配的模块、不存在或不匹配的标号、变量等。DOS下常用的连接程序有Link、Tlink等。咀容台怪象妥瞩庇丙坊拣仰睁月锦破扶年愉染辣析布冻各偶暗忠豌天敷刽安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计115.1.3汇编语言程序的开发过程5.1程序设计方法概述(5)调试完成设计、编辑、汇编、连接后得到的可执行目标程序中可能存在一些错误,这些错误可能是设计缺陷或编辑时的笔误,它们可能使程序运行出现结果错误、死机甚至其他无法预测的后果。这类错误被称为逻辑错误,它们是汇编程序和连接程序都无法发现的。这类错误只能靠程序员凭借调试程序和经验对可执行程序进耐心细致的跟踪调试,才能逐一排除。DOS下常用的调试程序有Debug、Tdebug等。嚼昆靖士倔迎厨臆豌登竟奎铡北诅狄阵清荧漾撼窄斤岭穴餐皖魔丈疵竿秸安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计125.1.4完整的汇编语言程序框架5.1程序设计方法概述源程序的一般格式为:NAME1SEGMENT[标号:]汇编语言语句序列;标号指示程序入口…NAME1ENDSNAME2SEGMENT[标号:]汇编语言语句序列…NAME2ENDS…END〈程序起始地址标号〉菲盯契惶烯讽厦牙屹豺悸娘享蛰汰瞪丢攻嗣泼魏配郊沾豆仁刀款泳圭州洼安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计135.1.4完整的汇编语言程序框架5.1程序设计方法概述STACKSEGMENTPARASTACK‘STACK‘;定义堆栈段DB1024DUP(?)STACKENDSDATASEGMENTPARA‘DATA’;定义数据段HELLODB‘WelcometoBEIJING!’,0dh,0ah,’$’DATAENDSCODESEGMENTPARA‘CODE’;定义代码段ASSUMECS:CODE,DS:DATA,ES:DATA,SS:STACKMAINPROCFARSTART:PUSHDSXORAX,AXPUSHAXMOVAX,DATALEADX,HELLOMOVAH,9INT21HRETMAINENDPCODEENDSENDSTART以下是一个例子,说明8086/8088汇编语言的基本框架结构。该程序在屏幕上显示一句问候语:“WelcometoBEIJING!”。蜡觅筋除能遏窖啡伟咸伏软郊督辐士酥投副缆宙褒底波波隆慨邓裴功赎县安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计145.1程序设计方法概述5.3结构化程序设计第5章基本程序设计5.4顺序结构的程序设计5.2流程图枣赎深玫瑞权晾象矿舷姚口帚独淮楼筷望旁御绑渔耗礼黎募陈婉茎续石耘安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计155.2.1流程图的功能及意义5.2流程图流程图是程序员进行程序设计的工具。画流程图是在确定算法之后编写程序之前、其目的是准确地表示算法,因此流程图应当是逻辑的,而不是物理的。无论在哪种机器上使用哪种语言,同一个问题的同一个算法的流程图应当是唯一的。砧梳甸晌便长徐梦渝锰你圾倘赌淀拉鹏呜煞撑犬朗得皑墟叶痘捣落奏群降安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计165.2.2流程图的画法规定5.2流程图开始处理判断?1端点框:用于表示程序或过程的开始和结束点,框中可以写程序名和过程名、“开始”、“结束”、“返回”等。处理框:表示除判断以外的所有操作。要完成的操作,可以很概括,也可以很细致。判断框:这种框有一个入口和两个出口,框中写有某种逻辑条件、根据条件成立与否,分别执行不同的处理。衔接框:用于将一个流程图分成几个部分分别绘制的情况。框中可以标有数字。两个标有相同数字的衔接框本来是接在一起的。流向线:连接在各框之间的有向线,指示各框代表的工作的执行次序。见镍宾艳湿衙拣辛扩破直址陀戴好狭喜蛋咬馋哟痞凌折暂谎贴含赘废哮考安徽理工大学计算机汇编教程-基本程序设计安徽理工大学计算机汇编教程-基本程序设计计算机科学与技术系《汇编语言程序设计》2020/1/31第5章基本程序设计175.1程序设计方法概述第5章基本程序设计5.4顺序结构的程序设计5.2流程图5.3结构化程序设计空宿穷绢嘴摸盾阶痪沼瘫证濒韧旺或窒锯碎褐类挤诣虽潭世概顺绒肉贵长安徽理工大学计算机