第五章汇编程序设计学习教案

上传人:英*** 文档编号:83456758 上传时间:2022-05-01 格式:PPTX 页数:45 大小:894.87KB
收藏 版权申诉 举报 下载
第五章汇编程序设计学习教案_第1页
第1页 / 共45页
第五章汇编程序设计学习教案_第2页
第2页 / 共45页
第五章汇编程序设计学习教案_第3页
第3页 / 共45页
资源描述:

《第五章汇编程序设计学习教案》由会员分享,可在线阅读,更多相关《第五章汇编程序设计学习教案(45页珍藏版)》请在装配图网上搜索。

1、会计学1第五章汇编程序第五章汇编程序(hu bin chn x)设计设计第一页,共45页。1 1机器语言机器语言2 2汇编语言汇编语言(hu bin y yn)(hu bin y yn)3 3高级语言高级语言汇编语言是一种用助记符来表示的面向机器的程序设计语言。不同的机器所使用的汇编语言一般是不同的。高级语言是一种面向过程而独立于计算机硬件结构的通用计算机语言。机器语言是用二进制代码表示指令和数据的最原始的程序设计语言。计算机能够立即识别并执行这种语言,响应速度最快。但不易看懂,不便记忆。第1页/共45页第二页,共45页。用汇编语言编写的源程序,在交由计算机执行之前,必须将它翻译(fny)成机

2、器语言程序。这一翻译(fny)过程称为汇编。源程序(汇编语言(hu bin y yn)程序)汇编程序(hu bin chn x)目的程序(机器语言程序)第2页/共45页第三页,共45页。1汇编语言源程序的格式如下汇编语言源程序的格式如下(rxi):标号:标号: 操作码操作码 操作数操作数 ;注释;注释标号(bioho)段:1、标号(bioho)是用户设定的一个符号,表示存放指令或数据的存储单元地址。2、标号(bioho)是由字母开始的18个字母或数字串组成。注意,不能用指令助记符、伪指令或寄存器名来作标号(bioho)名。操作码段是指令或伪指令的助记符,用来表示指令的性质。操作数段给出的是参加

3、运算(或其他操作)的数据或数据的地址。 注释段为便于今后阅读和交流,对本指令执行目的和所起作用所做的说明。 第3页/共45页第四页,共45页。2、伪指令、伪指令(zhlng)这些指令这些指令(zhlng)不属于指令不属于指令(zhlng)系统,不产生机器代码,因此称系统,不产生机器代码,因此称为伪指令为伪指令(zhlng)或汇编指令或汇编指令(zhlng)。利用伪指令利用伪指令(zhlng)告诉汇编程序告诉汇编程序如何进行汇编,同时它也为人们编程或修如何进行汇编,同时它也为人们编程或修改程序提供了方便。改程序提供了方便。因不同的编程软件,伪指令因不同的编程软件,伪指令(zhlng)的格式与用法

4、可能会有一些变化的格式与用法可能会有一些变化,请注意。,请注意。第4页/共45页第五页,共45页。2、伪指令、伪指令1)ORG确定目的程序在程序存储器中存放确定目的程序在程序存储器中存放的起始地址。的起始地址。 ORG 表达式表达式(exp)exp必须是必须是16位的地址值位的地址值2)END用在程序的末尾,表示程序已结束用在程序的末尾,表示程序已结束。汇编程序。汇编程序(hu bin chn x)对对END以后的指令不再汇编。以后的指令不再汇编。 第5页/共45页第六页,共45页。2、伪指令、伪指令3)DB(Define Byte)定义字节,从指定单元开始定义定义字节,从指定单元开始定义(存

5、储存储)若干个字节的数值或若干个字节的数值或ASCII码字符码字符(z f)。DB 字节常数或字节常数或ASCII字符字符(z f)4)DW(Define Word)定义字,从指定单元开始定义定义字,从指定单元开始定义(或或存储存储)若干个字的数据或若干个字的数据或ASCII码字符码字符(z f),注意:高位先行。,注意:高位先行。 DW 字常数或字常数或ASCII字符字符(z f)第6页/共45页第七页,共45页。2、伪指令、伪指令5)EQU(Equate) 它的作用它的作用(zuyng)是把操作数段是把操作数段中的地址或数据赋值给标号字段中的标中的地址或数据赋值给标号字段中的标号。号。代号

6、标号代号标号EQU地址或数据地址或数据 6)BIT位地址符号,把位地址赋予所规定的位地址符号,把位地址赋予所规定的字符名称。字符名称。 位地址符号名称位地址符号名称BIT 位地址位地址 G1 EQU R1 ;R1与G1等值 则“MOV A,G1”与 “MOV A,R1”等同(dngtng)例: X EQU 49 MAI EQU 0FC7DH MOV A,#X ;49A LJMP MAI;FC7DHPC第7页/共45页第八页,共45页。2、伪指令、伪指令7)DATA定义标号数值,给标号段中的标号定义标号数值,给标号段中的标号赋以数值。赋以数值。字符名称字符名称(mngchng) DATA 表达式

7、表达式 DATA与与EQU的区别:的区别:DATA可先使用后声明,并登记在符号可先使用后声明,并登记在符号表中表中EQU 不登记在符号表中,必须先声明不登记在符号表中,必须先声明才能才能 使用使用第8页/共45页第九页,共45页。1)熟悉与分析工作任务,明确其要求和要达到的工作目的、技术指标等。2)确定解决问题的计算方法和工作步骤。3)画工作流程图。 (其图形符号规定均同于高级(goj)语言流程图)4)分配内存工作单元,确定程序与数据区存放地址。5)按流程图编写源程序。6)上机调试、修改及最后确定源程序。 第9页/共45页第十页,共45页。编制程序流程图:是指用各种图形、符号、指向线等来说明程

8、编制程序流程图:是指用各种图形、符号、指向线等来说明程序设计的过程。国际通用的图形和符号说明如下:序设计的过程。国际通用的图形和符号说明如下: 椭圆框:开始和结束框,在程序的开始和结束时使用椭圆框:开始和结束框,在程序的开始和结束时使用(shyng)(shyng)。 矩形框:处理框,表示要进行的各种操作。矩形框:处理框,表示要进行的各种操作。 菱形框:判断框,表示条件判断,以决定程序的流向。菱形框:判断框,表示条件判断,以决定程序的流向。 流向线:流程线,表示程序执行的流向。流向线:流程线,表示程序执行的流向。 圆圆 圈:连接符,表示不同页之间的流程连接。圈:连接符,表示不同页之间的流程连接。

9、各种几何图形符号如下图所示各种几何图形符号如下图所示: :第10页/共45页第十一页,共45页。是一种最简单是一种最简单(jindn)、最基本的程、最基本的程序序(也称为简单也称为简单(jindn)程序程序)。特点特点: 按编写的顺序依次往下执行每一按编写的顺序依次往下执行每一条指令,直到最后一条。它能条指令,直到最后一条。它能够解决某些实际问题,或成为够解决某些实际问题,或成为复杂程序的子程序。复杂程序的子程序。第11页/共45页第十二页,共45页。1、压缩(y su)BCD码的概念2、ASCII码09为30H39H。思路:采用把BCD数除以10H的方法,除后相当于把此数右移了4位,刚好把两

10、个(lin )BCD码分别移到A、B的低4位,然后再各自与30H相“或”即变为ASCII码。 例例1 将将20H单元的两个单元的两个BCD码拆开并变成码拆开并变成ASCII码,码,存入存入21H、22H单元。单元。第12页/共45页第十三页,共45页。例例1 将将20H单元单元(dnyun)的两个的两个BCD码拆开并变码拆开并变成成ASCII码,存入码,存入21H、22H单元单元(dnyun)。思路2:采用先把20H中低4位BCD码交换出来加以转换、存放(cnfng),然后再把高4位BCD码交换至低4位加以转换、存放(cnfng)。 第13页/共45页第十四页,共45页。例例2 设有两个设有两

11、个(lin )4位位BCD码,分别存放在码,分别存放在23H、22H单元和单元和33H、32H单元中,求它们的和并单元中,求它们的和并送入送入43H、42H单元中去(以上均为低位在低字单元中去(以上均为低位在低字节,高位在高字节)。节,高位在高字节)。 由于本题中BCD码是分放在高、低位两个(lin )字节中,因而要从低位字节开始相加,且每次进行加法运算,需要进行一次BCD码调整。 第14页/共45页第十五页,共45页。例例3 将片内将片内RAM 30H单元单元(dnyun)中的压缩中的压缩BCD码码转换成二进制数送到片内转换成二进制数送到片内RAM 40H单元单元(dnyun)中。中。 两位

12、压缩BCD码转换成二进制数的算法为:(a1a 0)BCD=10a1a0 程序流程图如右图所示。第15页/共45页第十六页,共45页。第16页/共45页第十七页,共45页。循环结构的程序一般包括以下几部分。1循环初态循环初态(或称初始条件)是设置循环过程中工作单元的初始值。例如,设置循环次数计数器、地址指针初值、存放和数的单元初值等。2循环体重复执行的程序段部分称循环体,完成主要的计算或操作任务(rn wu),同时也包括对地址指针的修改。3循环控制部分该部分用于控制循环的执行和结束。循环次数或条件等判断。第17页/共45页第十八页,共45页。循环程序的结构:循环程序的结构:(1 1)先循环处理)

13、先循环处理(chl)(chl),后循环控制(即先处理,后循环控制(即先处理(chl)(chl)后控制)。如左下图所示。后控制)。如左下图所示。 (2 2)先循环控制,后循环处理)先循环控制,后循环处理(chl)(chl)(即先控制后处理(即先控制后处理(chl)(chl))。如右下图所示。)。如右下图所示。 第18页/共45页第十九页,共45页。外循环外循环中循环中循环内循环内循环外循环外循环内循环内循环外循环外循环内循环内循环内循环内循环(a)嵌套正确)嵌套正确(b)嵌套正确)嵌套正确(c)交叉不正确)交叉不正确第19页/共45页第二十页,共45页。例例4 已知片内已知片内RAM 30H3F

14、H单元中存放了单元中存放了16个二进制无个二进制无符号符号(fho)数,编制程序求它们的累加和,并将其和数存放数,编制程序求它们的累加和,并将其和数存放在在R4, R5中。中。每次求和的过程相同,可以用循环程序实现。16个二进制无符号数求和,循环程序的循环次数应为16次(存放在R2中),它们的和放在R4, R5中(R4存高8位,R5存低8位)。程序流程图如右图所示。第20页/共45页第二十一页,共45页。例例5 从从22H单元单元(dnyun)开始有一无符号数据块开始有一无符号数据块,其长度在,其长度在20H单元单元(dnyun)。求出数据块中最大。求出数据块中最大值,并存入值,并存入21H单

15、元单元(dnyun)。1、先设一个最小值零2、逐个取出队列中的数与最小值相比。3、如果大于最小值,则此值与最小值交换后再继续比较4、如果小于或等于最小值,则恢复(huf)原最小值(因为使用减法指令比较后,还需恢复(huf)原值)再继续比较。当所有数据均比较完之后,则可得到最大值。 第21页/共45页第二十二页,共45页。例例6:80C51单片机使用的晶振频率为单片机使用的晶振频率为6MHZ,设计一软件延时程序设计一软件延时程序(chngx),延时时间为,延时时间为10ms。延时时间(shjin)1+1+(1+1+2)*125+2*10+2*2 s 10066 s1MOV R1,#101DL2:

16、 MOV R0,#1251DL1:NOP1NOP2DJNZ R0 ,DL12DJNZ R1, DL22RET延时程序与MCS-51指令执行时间(循环次数)和晶振频率fOSC有关。晶振确定之后,则关键在于确定循环次数。当fOSC=6MHz时,机器周期为2s,执行一条DJNZ指令需要2个机器周期,时间为4s。 10ms 4s255,因此单重循环程序无法实现,可采用双重循环的方法编写10ms延时程序。第22页/共45页第二十三页,共45页。特点:根据不同的条件,特点:根据不同的条件,确定程序的走向。它主要确定程序的走向。它主要靠条件转移指令、比较转靠条件转移指令、比较转移指令和位转移指令来实移指令和

17、位转移指令来实现现(shxin)。分支程序的。分支程序的结构如右图所示结构如右图所示分支(fnzh)程序的设计要点如下:(1)先建立可供条件转移指令测试的条件。 (2)选用合适的条件转移指令。(3)在转移的目的地址处设定标号。第23页/共45页第二十四页,共45页。1无条件转移程序转移方向由设计者事先安排,与已执行程序的结果无关。使用时只需给出正确的转移目标地址或偏移量即可。2条件转移根据已执行程序对标志位、累加器或内部RAM某位的影响结果,决定程序的走向,形成各种分支。3散 转根据某种已输入的“或”运算的结果,使程序转向各个处理程序中去。 逐次比较和算法处理的方法。80C51单片机专门的散转

18、指令,可以较方便(fngbin)地实现散转功能。第24页/共45页第二十五页,共45页。22110810154115XXYXXX例例1 设设5AH单元中有一变量单元中有一变量X,请编写计算下述函数式的,请编写计算下述函数式的程序,结果程序,结果(ji gu)存入存入5BH单元。单元。根据题意首先计算X2并暂存于R1中,因为X2最大值为225,可只用一个(y )寄存器,然后根据X值的范围,决定Y的值。 MOV R0,A SJMP L4L2: MOV A,R1 ;10的处理的处理 CLR C SUBB A,#01 ;X10,yX21 MOV R0,A L4:MOV 5BH,R0 ;存结果;存结果

19、SJMP END第25页/共45页第二十六页,共45页。散转程序:是一种并行分支程序(多分散转程序:是一种并行分支程序(多分 支程序),它是根据某种输入或运算结果支程序),它是根据某种输入或运算结果,分别转向,分别转向(zhunxing)各个处理程序。各个处理程序。在在MCS-51中用中用JMP A+DPTR指令来实指令来实现程序的散转。转移的地址最多为现程序的散转。转移的地址最多为256个个。其结构如图下所示。其结构如图下所示。第26页/共45页第二十七页,共45页。 散转程序的设计可采用下面两种基本方法:(1)数据指针DPTR固定,根据累加器A的内容,程序转入相应(xingyng)的分支程

20、序中去。(2)累加器A清“0”,根据数据指针DPTR的值,决定程序转向目的地址。DPTR的值可用查表或其他方法获得。 第27页/共45页第二十八页,共45页。1、采用转移指令表 例2 根据R3的内容,转向各个操作程序。 MOV DPTR,#TAB1 MOV A,R3 ADD A,R3 ;R3 X 2 (修正(xizhng)变址值) JNC NOAD ;有进位否 INC DPH NOAD: JMP A+DPTR TAB1: AJMP OPR0 AJMP OPR1 AJMP OPR2 AJMP OPRn偏移量2 ,为什么?若采用(ciyng)LJMP呢?第28页/共45页第二十九页,共45页。2、

21、采用、采用(ciyng)转向地址表转向地址表 例例3 根据根据R2的内容的内容,转向各个操作程序。转向各个操作程序。 MOV DPTR,#TAB4 MOV A,R2 ADD A,R2 ;R2 X 2 JNC NADD INC DPHNADD: MOV R3,A ;暂存暂存 MOVC A,A+DPTR XCH A,R3 INC A ;指向下一字节指向下一字节 MOVC A,A+DPTR第29页/共45页第三十页,共45页。1、单字节查表例1 设计一个将十六进制(sh li jn zh)数转变为ASCII码的子程序。设十六进制(sh li jn zh)数存放在R0中的低四位,转换后仍送R0。H_A

22、SC: MOV A,R0 ANL A,#0FH ADD A,#2 MOVC A,A+PC MOV R0,A RET TAB:DB 30H,31H,32H,33H,34H DB 35H,36H,37H,38H,39H DB 41H,42H,43H,44H,45H,46H第30页/共45页第三十一页,共45页。2、 多字节多字节Y值的查表程序值的查表程序例例2某仪器的键盘程序中,其键值与对应程序入口某仪器的键盘程序中,其键值与对应程序入口地址的关系地址的关系(gun x)如下:如下:KEY: MOV DPTR,#TABMOV A,20HRL AMOV 20H,AINC AMOVC A,A+DPTR

23、 MOV 22H,AINC DPTRMOV A,20H MOVC A,A+DPTRMOV 23H,ARET第31页/共45页第三十二页,共45页。 是一种具有某种功能的程序(chngx)段(如多字节乘法、数制编码转换等),其资源需要为所有调用程序(chngx)共享。采用子程序(chngx)可以达到简化程序(chngx)结构的作用。通过寄存器、堆栈传递参数通过堆栈、工作寄存器保护现场第32页/共45页第三十三页,共45页。第33页/共45页第三十四页,共45页。第34页/共45页第三十五页,共45页。得到所需结果。NoImage22bac第35页/共45页第三十六页,共45页。第36页/共45页

24、第三十七页,共45页。MOV 40H , AEND第37页/共45页第三十八页,共45页。请同学们自已学习(xux)各例题,并试运行,仔细观察运行结果。第38页/共45页第三十九页,共45页。例:设51单片机内部RAM起始地址为30H的数据块中共存有64个无符号数,编程使其按从小到大的顺序排列。解:设64个无符号数在数据块中的顺序为:e64, e63, e2, e1,使他们从小到大顺序排列的方法很多,现以冒泡法为例进行介绍(jisho)。 冒泡法又称两两比较法。它先使e64和e63比较,若e64e63,则两个存储单元中的内容交换,否则就不交换。然后使e63和e62比较,按同样的原则决定是否交换

25、。一直比较下去,最后完成e2和e1的比较及交换,经过N1=63次比较(常用内循环63次来实现)后,e1的位置上必然得到数组中的最大值,犹如一个气泡从水低冒出来一样,如下页图所示(图中只画出了6个数的比较过程)。第39页/共45页第四十页,共45页。第40页/共45页第四十一页,共45页。 第二次冒泡过程(guchng)和第一次完全相同,比较次数也可以是63次(其实只需要62次,因为e1的位置上是数据块中的最大数,不需要再比较),冒泡后在e2的位置上得到数组中的次大数,如上页图所示。如此冒泡(即大循环)共63次(内循环6363次)便可完成64个数的排序。 实际编程时,可通过设置“交换标志”用来控

26、制是否再需要冒泡,若刚刚进行完的冒泡中发生过数据交换(即排序尚未完成),应继续进行冒泡;若进行完的冒泡中未发生过数据交换(即排序已经完成),冒泡应该停止。例如:对于一个已经排好序的数组:1, 2, 3, 63, 64,排序程序只要进行一次循环便可根据“交换标志”的状态而结束排序程序的再执行,这自然可以减少631=62次的冒泡时间。 冒泡法程序流程图如右图所示。 第41页/共45页第四十二页,共45页。程序如下:程序如下: ORG 1000HMOV R0, #30H ; 数据区首地址送数据区首地址送R0MOV R3, #63H ; 设置外循环次数在设置外循环次数在R3中中LP0: CLR 7FH

27、 ; 交换标志位交换标志位2FH.7清清0MOV A, R3 ; 取外循环次数取外循环次数MOV R2, A ; 设置内循环次数设置内循环次数MOV R0,#30H ; 重新设置数据区首址重新设置数据区首址LP1: MOV 20H, R0 ; 数据区数据送数据区数据送20H单元中单元中MOV A, R0 ; 20H内容送内容送AINC R0 ; 修改地址指针(修改地址指针(R0+1)MOV 21H, R0 ; 下一个下一个(y )地址的内容送地址的内容送21HCLR C ; Cy清清0 SUBB A, 21H ; 前一个前一个(y )单元的内容与下一个单元的内容与下一个(y )单元的内容比较单

28、元的内容比较JC LP2 ; 若若Cy =1,前者小,程序转移到,前者小,程序转移到LP2处执行,处执行, 若若Cy =0,前者大,不转移,程序往下执,前者大,不转移,程序往下执行行第42页/共45页第四十三页,共45页。 MOV R0, 20H ; 前、后内容交换DEC R0MOV R0, 21H INC R0 ; 修改地址指针(R0+1)SETB 7FH ; 置位交换标志位2FH.7为1LP2: DJNZ R2, LP1 ; 修改内循环次数R2(减少), 若R20,则程序(chngx)转到LP1 处仍执行循环, 若R2=0,程序(chngx)结束循环,程序(chngx)往下执行JNB 7FH, LP3 ; 交换标志位7FH为0,则程序(chngx)转到LP3处结束循环DJNZ R3, LP0 ; 修改外循环次数R3(减少), 若R30,程序(chngx)转到LP0处, 执行仍循环, 若R3=0,程序(chngx)结束循环,往下执行LP3: SJMP $ ; 程序(chngx)执行完,“原地踏步”END第43页/共45页第四十四页,共45页。习题(xt):P1303、5、6、7、9、11、20第44页/共45页第四十五页,共45页。

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!