首页 汇编语言程序设计教材

汇编语言程序设计教材

举报
开通vip

汇编语言程序设计教材工程4汇编语言程序设计什么是程序设计?程序设计=结构+算法。程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你假设想盖房子首先必须有原料〔数据结构〕,但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸〔算法〕上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,程序设计时你得按照程序规定的功能去编写,而程序的功能是实现就是算法的具体表达。所以通俗地说:你必须按照特定的规那么,把特定的功能语句和根本结构按照特定的顺序排列起来,形成一个有特定功能的程序,这就是:程序设计=结构+算法。...

汇编语言程序设计教材
工程4汇编语言程序 设计 领导形象设计圆作业设计ao工艺污水处理厂设计附属工程施工组织设计清扫机器人结构设计 什么是程序设计?程序设计=结构+算法。程序设计就像盖房子,数据结构就像砖、瓦,而算法就是设计图纸。你假设想盖房子首先必须有原料〔数据结构〕,但是这些原料不能自动地盖起了你想要的房子;你必须按照设计图纸〔算法〕上的说明一砖一瓦地去砌。这样你才能拥有你想要的房子。程序设计也一样,程序设计时你得按照程序规定的功能去编写,而程序的功能是实现就是算法的具体表达。所以通俗地说:你必须按照特定的规那么,把特定的功能语句和根本结构按照特定的顺序排列起来,形成一个有特定功能的程序,这就是:程序设计=结构+算法。 一般说来,计算机程序设计语言种类很多,不仅有机器语言和汇编语言,还有很多高级语言。对单片机而言,通常使用汇编语言或C语言进行程序设计,程序较大时一般采用C语言编写,但用汇编语言编写的程序执行的效率较高。程序设计完成后,然后利用计算机或人工 方法 快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载 将汇编语言或C语言程序转化为单片机可以执行的机器语言。转换前的汇编语言或C语言程序被称为源程序,转换后的机器语言程序被称为目标程序,转换过程也叫汇编过程,通过计算机或人工转换的方法又被称为计算机汇编或手工汇编。计算机汇编要使用专门的软件,叫汇编软件。工程4汇编语言程序设计4.1源程序的编制4.1.1程序设计 步骤 新产品开发流程的步骤课题研究的五个步骤成本核算步骤微型课题研究步骤数控铣床操作步骤 在对单片机系统进行程序设计时,必须考虑硬件资源的配置,当硬件系统设计完成后,可以按照以下步骤进行程序设计。1.预完成任务的分析2.进行算法的优化3.绘制程序流程图4.分配资源5.编写源程序6.程序优化7.编译,调试,修改和最后确定源程序工程4汇编语言程序设计用图形符号将总体设计思路及程序流向绘制在平面图上。从而使程序的结构关系直观明了,便于检查和修改,它直观清晰的表达了程序的设计思路,是程序设计的依据。绘制流程图时,首先画出简单的功能流程图粗框图,再对功能流程图进行扩充和具体化,即对存储器标志位等单元做具体的分配和说明,把功能图上的每一个粗框图转化为具体的存储器或地址单元,从而绘制出详细的程序流程图。流线程序执行顺序流向线表示处理功能端点符号程序的开始和结束符号表示判断功能判断符号处理符号连接符号用来实现流程图之间的连接程序流程图的绘制工程4汇编语言程序设计4.1.2汇编语言源程序的格式汇编语言源程序是由假设干语句组成的,每一语句可由4个局部组成:标号、操作码、操作数及注释。每一局部间以不同的分隔符分隔,语句格式如下:[标号]:操作码[目的操作数][源操作数];[注释]其中[]项为可选项,视具体的指令选用.标号是表示该语句所在地址的标志符号,使用标号可方便程序中的其他语句访问该语句。标号由字母打头的1-8个字母数字串组成,但指令保存符、存放器名、位址记忆符、伪指令符等都不能作标号使用。操作码表示操作的性质,它是汇编指令中唯一不能缺省的局部。操作数表示操作的对象,在一条语句中,操作数可能是空白或以逗号分开的几个。注释是对语句或程序段功能的解释说明有助于的阅读和维护。工程4汇编语言程序设计4.1.3汇编语言源程序的汇编将汇编语言源程序“翻译〞成机器语言目标程序的过程称为汇编,对单片机助记符的汇编有两种方法:人工汇编和机器汇编。人工汇编是用人工查表将源程序译成机器码。一般分为两步进行。第一步将源程序中的指令逐条译成目标码,指令中的标号地址待求。第二步由伪指令求出标号所代表的具体地址,进行有关程序存储区的数据操作并进行偏移量的计算。机器汇编是将源程序输入计算机后,由汇编程序实现翻译工作,产生相应的机器码。这是一种非常高效和方便的方法。工程4汇编语言程序设计4.1.4伪指令在机器汇编时,对汇编过程进行控制和指导的指令称为伪指令。在汇编过程中,伪指令供汇编程序识别和执行但不产生可执行的目标代码。如规定汇编生成的目标代码在ROM中的存放区域,给源程序符号、标号赋值,指示汇编结束等。每种汇编程序都有自己的伪指令, 标准 excel标准偏差excel标准偏差函数exl标准差函数国标检验抽样标准表免费下载红头文件格式标准下载 的MCS-51定义的伪指令常用的有以下7条。1.汇编其始地址伪指令——ORG(Origin)格式:ORG16位地址功能:规定该指令后的下一段源程序经汇编后生成的代码存放的起始地址。例如:ORG0500HSTART:MOVA,R0……ENDORG伪指令总是出现在每段源程序或数据块的开始,汇编语言源程序中多处使用ORG指令,可使程序员把子程序、数据块存放在ROM的任何位置。每当ORG出现时,下条指令的存放地址由此重新定位,所以ORG定义地址的顺序应有小到大,且不能重叠。工程4汇编语言程序设计2.汇编结束伪指令-END〔EndofAssembly〕指令格式:[标号]:END功能:结束汇编语言源程序的操作。在源程序中只能有一条END,END后所写的指令,汇编程序不予处理。工程4汇编语言程序设计3.符号赋值伪指令——EQU(EQUate)指令格式:字符名称EQU数或汇编符号功能:将一个数或特定的汇编符号赋给指定的字符名称。字符名称为一自定的符号,而不是标号,字符名称后无“:〞。字符名称可用来作数据地址,立即数,位地址或者是一代码地址,其值可以是一个8位数,也可以是16位数。例如:TESTEQU20HMOVA,TEST这里字符名称TEST就代表了内部RAM20H地址单元。又例如:A1EQU10HMOVA,A1这里A1代表片内RAM的直接地址单元10H。使用EQU伪指令可以把抽象的数字地址表示成有一定意义的符号,增强程序的可读性。工程4汇编语言程序设计4.定义数据字节伪指令——DB(DefineByte)格式:[标号:]DB<项或项表>项或项表是指一个字节,逗号隔开的8位二进制的数或字符串,或撇号’括起来的ASCII字符串。功能:从标号指定的地址单元开始,在程序存储器中存入一组8位二进制数,或者将一个数据表格存入程序存储器。这条伪指令汇编后影响程序存储器的内容。例如:ORG1100HTAB:DB01H,04H,09H,10HDB00001111B,‘1’,‘A’,‘BC’工程4汇编语言程序设计5.定义数据字命令——DW(DefineWord)格式:[标号:]DW<项或项表>功能:DW的功能和DB类似,DW是从标号指定的地址开始存放16位而非8位二进制数,存放时,数据字的高8位在前〔低地址〕,低8位在后〔高地址〕。例如:ORG5000HMOVA,#30H………ORG5020HADDTAB:DW1234H,100H,10………;END一条DB和DW语句定义的数表其数的个数不得超过80个。当数据的数目较多时,可使用多个定义命令。在MCS-51程序设计应用中,常以DW来定义地址。工程4汇编语言程序设计6.预留存储区伪指令——DS(DefineStorage)格式:[标号:]DS<表达式>功能:本命令用于从指定地址开始,保存DS之后表达式的值所需数目的字节单元作为存储区以备后用。汇编时,对这些单元不赋值。例如:ORG0100HMOVA,#50H………ADDRTABL:DS05HDB20HEND从标号ADDRTABL代表的地址开始,保存5个连续的ROM地址单元,第6个单元存放20H。对MCS-51单片机来说,DB,DW,DS伪指令只能对程序存储器使用,而不能对数据存储器进行初始化。工程4汇编语言程序设计7.位地址赋值伪指令——BIT格式:[字符名称]BIT<位地址>功能:本命令用于给字符名称赋以位地址。其中<位地址>可以是绝对地址,也可以是符号地址〔即位符号名称〕。例如:AQBITP1.0A2BIT07H这两条指令分别把P1.0的位地址赋给变量AQ,位地址07H赋给符号名A2,在其后的编程中AQ和A2就可以作为位地址使用。工程4汇编语言程序设计4.1.5程序设计技巧1.模块化程序设计方法单片机应用系统的程序一般由包含多个模块的主程序和各种子程序组成。每一程序模块都要完成一个明确的任务,实现某个具体的功能,如发送、接收、延时、打印、显示等。采用模块化的程序设计方法,就是将这些不同的具体功能程序进行独立的设计和分别调试,最后将这些模块程序装配成整体程序并进行联调。工程4汇编语言程序设计把一个多功能的、复杂的程序划分为假设干个简单的、功能单一的程序模块的程序设计方法具有明显的优点:1〕单个模块结构的程序功能单一,易于设计、编写、调试及修改;2〕有利于程序的优化和分工,从而可使多个程序员同时进行程序的编写和调试,加快软件研制进度;3〕提高了程序的阅读性和可靠性,使程序的结构层次一目了然,同时4〕对程序的修改可局部进行,其他局部可以保持不变,便于功能扩充和版本升级;5〕对于使用频繁的子程序可以建立子程序库,便于多个模块调用。工程4汇编语言程序设计模块的划分有很大的灵活性,但也不能随意划分。划分时应遵循下述原那么:1〕每个模块应具有独立的功能,能产生一个明确的结果,这就是单模块的功能高内聚性。2〕模块之间的控制耦合应尽量简单,数据耦合应尽量少,这就是模块间的低耦合性。控制耦合是指模块进入和退出的条件及方式,数据耦合是指模块间的信息交换(传递)方式、交换量的多少及交换的频繁程度。3〕模块长度适中。模块语句的长度通常在20条~100条的范围较适宜。模块太长时,分析和调试比较困难,失去了模块化程序结构的优越性;过短那么模块的连接太复杂,信息交换太频繁,因而也不适宜。工程4汇编语言程序设计2.程序设计技巧1〕尽量采用循环结构和子程序。2〕尽量少用无条件转移指令。3〕对于通用的子程序,考虑到其通用性,除了用于存放子程序入口参数的存放器外,子程序中用到的其他存放器的内容应压入堆栈(返回前再弹出)进行现场保护,并要特别注意堆栈操作的压入和弹出的平衡。一般不必把标志存放器压入堆栈。4〕对于中断处理子程序除了要保护程序中用到的存放器外,还应保护标志存放器。5〕累加器是信息传递的枢纽。工程4汇编语言程序设计4.2程序结构4.2.1顺序程序顺序结构是按照逻辑操作顺序,从某一条指令开始逐条顺序执行,直至某一条指令为止,无分支,也无循环。顺序结构是所有程序设计中最根本、最单纯的程序结构形式,在程序设计中使用最多,因而是一种最简单且应用最普遍的程序结构。一般实际应用程序远比顺序结构复杂得多,但它是组成复杂程序的根底和主干。工程4汇编语言程序设计【例4.1】将两个半字节数合并成一个一字节数。设内部RAM40H、41H单元中分别存放着8位二进制数。要求取出两个单元的低半字节,合并成一个字节后,存入42H单元。开始(40H)内容送A,屏蔽高位A与R1或后送入(42H)交换高低位,送入R1(41H)内容送A,屏蔽高位返回图4-1例1程序流程图工程4汇编语言程序设计【例4.2】用顺序结构程序编写三字节无符号数的加法程序。设被加数存放在:40H(高字节),41H(中字节),42H(低字节)加数存放在:43H(高字节),44H(中字节),45H(低字节)运算结果仍存在被加数单元中。开始取低字节数据返回相加后送回被加数单元取中字节数据带进位位相加后送回被加数单元取高字节数据带进位位相加后送回被加数单元图4-2例2程序流程图工程4汇编语言程序设计4.2.2分支程序通常,单纯的顺序结构程序只能解决一些简单的算术、逻辑运算,或者简单的查表、传送操作等。实际问 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 一般都是比较复杂的,总是伴随有逻辑判断或条件选择,要求计算机能根据给定的条件进行判断,选择不同的处理路径,从而表现出某种智能。根据程序要求改变程序执行顺序,即程序的流向有两个或两个以上的出口,根据指定的条件选择程序流向的程序结构我们称为分支程序结构。通常根据分支程序中出口的个数分为单分支结构程序〔两个出口〕和多分支结构程序〔三个或三个以上出口〕。在MCS-51指令系统中,通过条件判断实现单分支程序转移的指令有JZ、JNZ、CJNE和DJNZ等。此外,还有以位状态为条件,进行程序分支的指令JC、JNC、JB、JNB和JBC等。使用这些指令,可以完成或为0、1,或为正、为负,以及相等、不相等各种条件判断,以实现程序有条件地转移。工程4汇编语言程序设计1.两分支程序设计【例4.3】两个无符号数比较〔两分支〕。内部RAM的30H单元和31H单元各存放了一个8位无符号数,请比较这两个数的大小,大数放在32H中。开始X-YCy=1?30H→32H31H→32HYN结束4-3两数比较流程图工程4汇编语言程序设计2.三分支程序设计【例4.4】两个无符号数比较〔三分支程序〕。内部RAM的20H单元和30H单元各存放了一个8位有符号数,根据以下条件编程点亮相应的发光二极管,电路如图4-4所示,。假设〔20H〕=〔30H〕,那么P2.0管脚连接的黄色LED发光;假设〔20H〕>〔30H〕,那么P2.1管脚连接的绿色LED发光;假设〔20H〕<〔30H〕,那么P2.2管脚连接的红色LED发光。开始X=Y?X>Y?黄灯点亮YN结束NY红灯点亮绿灯点亮工程4汇编语言程序设计3.散转程序散转程序是指经过某个条件判断之后,程序有多个流向〔三个以上〕。MCS-51单片机指令系统中专门提供了散转指令,使得散转程序的编制更加简洁。【例4.5】在例4.4的电路的根底上加两个开关组成简单的信号灯电路,如图4-6所示,试编程实现以下功能。K0K100都按下,红黄绿灯全亮〔状态1〕01K0单独按下,红灯亮〔状态2〕10K1单独按下,绿灯亮〔状态3〕11都未按下,黄灯亮〔状态4〕工程4汇编语言程序设计开始读P1口引脚状态→A转移指令表基地址→DPTR屏蔽无关位散转移状态1状态2状态3状态4返回返回返回返回工程4汇编语言程序设计4.2.3循环程序循环结构程序是把需要屡次重复使用的程序段,利用转移指令反复转向该程序段,从而大大缩短程序代码,减少占用程序空间,程序结构也大大优化。循环程序可以分为单重循环和多重循环,其通常有两种编制方法:一种是先执行后判断,另一种是先判断后执行。如图4-8所示。开始初始化循环处理循环控制循环完成?NY循环结束结束开始初始化循环控制循环完成?NY循环结束结束循环处理工程4汇编语言程序设计1.单重循环程序设计【例4.6】数据极值查找程序。设内部RAM从30H单元开始存放有8个数,找出其中最大的数,放到60H单元。解:极值查找操作的主要内容是进行数值大小比较。假定在比较过程中,以A存放大数,与之逐个比较的另一个数放在50H单元。采用先执行后判断的结构,首先设定比较次数,在比较结束后,把查找到的最大数送到60H单元。程序流程图如图4-9所示。开始数据区首地址→R0读下一个数→50H(50H)→A(A)>(50H)?NYA→(60H)结束数据个数→R7读第一个数→AR7-1→R7R7-1=0?NY工程4汇编语言程序设计【例4.7】将内部RAM中30H单元开始的数据传送到外部RAM1200H开始的存储空间内,直到发现数据‘100’停止传送。开始A=100?取内部RAM数据→AYN结束传送数据到外部RAM图4-10例4.7流程图解:由于循环次数事先不知道,但是循环条件可以测试到,可以采用先判断后执行的程序结构。流程图如图4-10所示。开始A=100?取内部RAM数据→AYN结束传送数据到外部RAM图4-10例4.7流程图工程4汇编语言程序设计2.多重循环程序设计—定时程序在循环内套循环的程序结构称多重循环,或称循环嵌套。假设把每重循环的内部看作一个整体,那么多重循环的结构与单重循环的结构是一样的,也由四局部组成。多重循环的执行过程是从内向外逐层展开的。内层执行完全部循环后,外层那么完成一次循环,逐次类推。因此,每执行一次外层循环,内层必须重新设置初值,故每层均包含完整的循环程序结构。层次必须清楚,层次之间不能有交叉;否那么,将产生错误。定时程序是一种很典型的多重循环程序,其在单片机汇编语言程序设计中使用非常广泛,例如定时检测、定时扫描、定时中断等。所谓定时就是让CPU做一些与主程序功能无关的操作〔例如将一个数字逐次减1直到为0〕来空耗掉CPU的时间来到达延时的目的。由于我们知道CPU执行每条指令的准确时间,因此执行整个延时程序的时间也可以精确计算出来。也就是说,我们可以写出延时长度任意而且精度相当高的延时程序。工程4汇编语言程序设计【例4.8】设计一个延时50ms的程序,设单片机时钟晶振频率为fosc=12MHz。解:延时程序一般采用循环程序结构编程,通过确定循环程序中的循环次数和循环程序段两个因素来确定延时时间。题目给定fosc=12MHz,那么机器周期的计算方法:T机器=12T时钟=12×(1/12M)=1µs。下面就是一个最简单的单循环定时程序:MOVR7,#TIMELOOP:NOPNOPDJNZR7,LOOPNOP指令的机器周期为1,用来提高定时精度,DJNZ指令的机器周期为2,故一次循环共4个机器周期。一个机器周期是1µS,那么一次循环的延迟时间为4µS。上面程序总的延迟时间为4×time(µS)。本程序的实际延迟时间取决于装入存放器R7的定时时间常数time。R7是8位存放器,故这个程序的最长定时时间为256×4=1020〔µS〕,即定时范围是4~1024µS。可见单循环定时程序的时间延迟较小。工程4汇编语言程序设计为了加长定时时间,通常采用多重循环方法。流程图如图4-11所示。开始外循环次数TIME1→R7内循环次数TIME2→R6空操作R6-1=0?NYR7-1=0?NY返回图4-11多重循环流程图程序如下:MOVR7,#TIME1LOOP2:MOVR6,#TIME2LOOP1:NOPDJNZR6,LOOP1DJNZR7,LOOP2RET最大定时时间计算公式为:〔256×2+2+2〕×256+1=132097〔µS〕假设定时50ms,采取适宜的TIME1和TIME2即可,如TIME1=200和TIME2=123。工程4汇编语言程序设计循环控制:在重复执行循环体的过程中,不断修改和判别循环变量,直到符合循环结束条件。一般情况下,循环控制有以下几种方式:〔1〕计数循环——如果循环次数,用计数器计数来控制循环次数,这种控制方式用得比较多。循环次数要在初始化局部予置,在控制局部修改,每循环一次计数器内容减1。〔2〕条件控制循环——在循环次数未知的情况下,一般通过设立结束条件来控制循环的结束。〔3〕循环结束处理:这局部程序用于存放执行循环程序所得结果以及恢复各工作单元的初值等。工程4汇编语言程序设计4.2.4查表程序在微型机控制系统中,有些参数的计算是非常复杂的,用计算法计算不仅程序长,难于计算,而且需要消耗大量时间。还有一些非线性参数,它们不是用一般算术运算就可以计算出来,而是要涉及到指数,对数,三角函数,以及积分,微分等运算。所有这些运算用汇编语言编程计算都比较复杂,有些甚至无法建立相应的数学模型。为了解决这些问题,可以采用查表法。所谓查表法,就是把事先计算或测得的数据按一定顺序编制成表格,查表程序的任务就是根据被测参数的值或者中间结果,查出最终所需要的结果。它具有程序简单,执行速度快等优点。查表程序在微型机控制系统中应用非常广泛,例如,在键盘处理程序中,查找按键相应的命令处理子程序的入口地址;在LED显示程序中,获得LED数码管的显示代码;在一些快速计算的场合,根据自变量的值,从函数表上查找出相应的函数值以及实现非线性修正、代码转换等等。所有这些应用,都需采用查表技术。工程4汇编语言程序设计【例4.8】查表计算函数y=x!(x=0、1、2、…、7)的值xY值Y地址000TABLE00TABLE+1101TABLE+200TABLE+3202TABLE+400TABLE+5306TABLE+600TABLE+7424TABLE+800TABLE+9520TABLE+A01TABLE+B620TABLE+C07TABLE+D740TABLE+E50TABLE+F工程4汇编语言程序设计4.2.5子程序在实际的程序设计中,常会遇到屡次应用的、完成相同的某种根本运算或操作的程序段。如果每用一次都从头编写一次,这不仅麻烦,使程序冗长,而且浪费存储空间,还使程序的出错率增加,给程序的调试带来困难。所以,在实际的程序设计中,将那些需屡次应用的、完成相同的某种根本运算或操作的程序段从整个程序中独立出来,单独编制成一个程序段,尽量使其标准化,并存放于某一存储区域;需要时通过调用指令进行调用。这样的程序段,称为子程序,如我们在实训中的延时子程序。工程4汇编语言程序设计子程序作为一个具有独立功能的程序段,编程时需遵循以下原那么:1.子程序的第一条指令必须有标号,明确子程序入口地址。2.以返回指令RET结束子程序。3.简明扼要的子程序说明局部。4.较强的通用性和可浮动性,尽可能防止使用具体的内存单元和绝对转移地址等。5.注意保护现场和恢复现场。另外,在编制子程序前,最好以程序注释的形式对子程序进行说明,说明内容如下:1.子程序名:提供给主程序调用的名字。2.子程序功能:简要说明子程序能完成的主要功能。3.入口参数:主程序需要向子程序提供的参数。4.出口参数:子程序执行完之后向主程序返回的参数。5.占用资源:该子程序中使用了那些存储单元、存放器等。工程4汇编语言程序设计
本文档为【汇编语言程序设计教材】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
幸福自在
暂无简介~
格式:ppt
大小:325KB
软件:PowerPoint
页数:36
分类:企业经营
上传时间:2022-05-16
浏览量:0