程序设计.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《程序设计.ppt》由会员分享,可在线阅读,更多相关《程序设计.ppt(33页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第四章第四章 汇编语言程序设计汇编语言程序设计4-1 汇编程序的约定汇编程序的约定4-2 程序设计步骤程序设计步骤4-3 直线程序直线程序4-4 分支程序分支程序4-5 循环程序循环程序4-6 子程序子程序 4-14-1 汇编程序约定汇编程序约定汇编语言程序:汇编语言程序:用汇编语言编写的、用汇编语言编写的、完成特定功能的指令序列。完成特定功能的指令序列。汇编程序:汇编程序:能能将将汇汇编编语语言言源源程程序序转转换换成成机机器器语语言言目目标标程程序序的的系统软件。系统软件。汇编语言程序到机器语言程序的转换过程称为汇编。汇编语言程序到机器语言程序的转换过程称为汇编。1.手工汇编手工汇编:人工
2、查指令表汇编。用于设计短小程序:人工查指令表汇编。用于设计短小程序或调试程序的场合。或调试程序的场合。2.机器汇编机器汇编:用汇编程序进行汇编:用汇编程序进行汇编。源程序使用机器汇编要考虑汇编程序的约定源程序使用机器汇编要考虑汇编程序的约定1 1)按指令格式和语法规则编写程序。按指令格式和语法规则编写程序。常数的表示:常数的表示:十进制数:十进制数:2020十六进制数:十六进制数:8787H H,0F0H0F0H二进制数:二进制数:0101100101011001B B字符:字符:H H字符串:字符串:“HelloHello”。2 2)使用伪指令提供汇编信息使用伪指令提供汇编信息。汇编的主要任
3、务:汇编的主要任务:1 1)确定程序中每条汇编语言指令的指令机器码。确定程序中每条汇编语言指令的指令机器码。2 2)确定每条指令在存储器中的存放地址。确定每条指令在存储器中的存放地址。3 3)提供错误信息。提供错误信息。4 4)提提供供目目标标执执行行文文件件(*.*.OBJOBJ/*./*.HEX)HEX)和和列列表表文文件件(*.*.LSTLST)。)。b一一.汇编语言指令类型汇编语言指令类型1 1.机器指令机器指令:指令系统中的全部指令,每条指令有对应的机器代码。指令系统中的全部指令,每条指令有对应的机器代码。2 2.伪指令伪指令:汇编控制指令,仅提供汇编信息,没有指令代码。汇编控制指令
4、,仅提供汇编信息,没有指令代码。一一.汇编语言指令类型汇编语言指令类型3 3.宏指令宏指令:宏汇编功能:将需要多次反复执行的程序段定义成一宏汇编功能:将需要多次反复执行的程序段定义成一个宏指令名(宏定义),编程时,可在程序中使用个宏指令名(宏定义),编程时,可在程序中使用宏指令名来替代一段程序(宏调用)。宏指令名来替代一段程序(宏调用)。b宏定义过程宏定义过程:b宏指令名宏指令名 MACRO 形式参数形式参数b ;定义程序段;定义程序段b ENDMb宏调用过程:宏调用过程:b b 宏指令名宏指令名 实际参数实际参数b b 宏指令名宏指令名 实际参数实际参数 二二汇编控制指令汇编控制指令(伪指令
5、伪指令)常用伪指令及其功能:常用伪指令及其功能:1.1.ORGORG起始地址指令:指明程序和数据块起始地址。起始地址指令:指明程序和数据块起始地址。指令地址指令地址 机器码机器码源程序源程序ORGORG 2000H 2000H 2000H 78 30 2000H 78 30 MAIN MAIN:MOV R0MOV R0,#30H#30H 2002H E6 2002H E6MOV AMOV A,R0R0 ORG 3000HORG 3000H 3000H 23 3000H 23DB 23HDB 23H,100100,A A 3001H 64 3001H 64 3002H 3002H4141b2.2
6、.DB DB 定定 义义 字字 节节 型型 常常 数数 指指 令令。例:例:DB 12HDB 12H,100100,A A 4.4.EQU EQU 等值。为标号或标识符赋值。等值。为标号或标识符赋值。X1 X1 EQU 2000HEQU 2000HX2 X2 EQU 0FHEQU 0FH MAIN:MAIN:MOV DPTRMOV DPTR,#X1#X1 ADD AADD A,#X2#X2b 5.5.ENDEND 结束汇编指令。结束汇编指令。b例:例:STARTSTART:b b END END START STARTb3.3.DW DW 定定义义字字型型常常数数指指令令。例:例:DW 123
7、4HDW 1234H,5678H5678H4-24-24-24-2 汇编语言程序设计步骤汇编语言程序设计步骤汇编语言程序设计步骤汇编语言程序设计步骤一一.确定方案和计算方法确定方案和计算方法二二.了解应用系统的硬件配置、性能指标。了解应用系统的硬件配置、性能指标。三三.建立系统数学模型,确定控制算法和操作步骤。建立系统数学模型,确定控制算法和操作步骤。四四.画程序流程图画程序流程图 表示程序结构和程序功能表示程序结构和程序功能 五五.编制源程序编制源程序1.1.合理分配存储器单元和了解合理分配存储器单元和了解I/OI/O接口地址。接口地址。2.2.按功能设计程序,明确各程序之间的相互关系。按功
8、能设计程序,明确各程序之间的相互关系。3.3.用注释行说明程序,便于阅读和修改调试和修改。用注释行说明程序,便于阅读和修改调试和修改。开始开始1 YN?常用程序结构常用程序结构常用程序结构常用程序结构:直线程序、分支程序、循环程序、子程序直线程序、分支程序、循环程序、子程序4-34-34-34-3 直线程序直线程序直线程序直线程序b直线程序又称简单程序,程序走向只有一条路径。直线程序又称简单程序,程序走向只有一条路径。双双字字节节变变补补程程序序(设设数数据据在在R4R5R4R5中中):bMOVMOV A A,R5R5;取低字节取低字节bCPLCPL A AbADDADD A A,#1#1;低
9、字节变补低字节变补bMOVMOV R5 R5,A AbMOVMOV A A,R4R4;取高字节取高字节bCPLCPL A AbADDC AADDC A,#0#0;高字节变补高字节变补bMOVMOV R4 R4,A A例例4-3-4 4-3-4 压缩式压缩式BCDBCD码分解成为单字节码分解成为单字节BCDBCD码。码。bMOVMOV R0 R0,#40H#40H;设指针设指针bMOVMOV A A,R0R0;取一个字节取一个字节bMOVMOV R2 R2,A A;暂存暂存bANLANL A A,#0FH#0FH;清清0 0高半字节高半字节bINCINC R0 R0bMOVMOV R0 R0,A
10、 A ;保存数据个位保存数据个位bMOVMOV A A,R2R2bSWAP ASWAP A ;十位换到低半字节十位换到低半字节bANLANL A A,#0FH#0FHbINCINC R0 R0bMOVMOV R0 R0,A A;保存数据十位保存数据十位十十 个个4-44-44-44-4 分支程序分支程序分支程序分支程序由条件转移指令构成程序判断框部分,形成程序分支结构。由条件转移指令构成程序判断框部分,形成程序分支结构。4-4-24-4-2单重分支程序单重分支程序一个判断决策框,程序有两条出路。一个判断决策框,程序有两条出路。两种分支结构:两种分支结构:条件满足?N影响条件Y处理段条件满足?N
11、影响条件Y处理1处理2例例 求求R2R2中补码绝对值,正数不变,中补码绝对值,正数不变,负数变补。负数变补。MOV AMOV A,R2R2 JNB ACC.7JNB ACC.7,NEXTNEXT;为正数?为正数?CPL ACPL A ;负数变补负数变补 INC AINC A MOV R2MOV R2,A ANEXTNEXT:SJMP NEXT SJMP NEXT ;结束结束行李计价:行李计价:当当G5,M=G3;当当G5,M=G3+(G-5)(5-3)FRT:MOV A,40H;取行李重量计价单位取行李重量计价单位G MOV R3,A MOV B,#03H;M=G3 MUL AB MOV R2
12、,A;暂存;暂存3G MOV A,R3;取回;取回G CJNE A,#05H,L1;G5?SJMP WETCL1:JC WETC;是,转至;是,转至WETC SUBB A,#05H;否则;否则M=3G+2(G-5)RLC A ADD A,R2WETC:MOV 41H,A;存结果;存结果M RET4-4-34-4-3 多重分支程序多重分支程序一多次使用条件转移指令一多次使用条件转移指令,形成两个以上判断框。,形成两个以上判断框。例例 求符号函数求符号函数Y=SGN(X)Y=SGN(X)+1 +1 当当 X0X0SGN(X)=0 SGN(X)=0 当当 X=0X=0 -1 -1 当当 X0X0X0
13、?Y取XNY=0Y=+1开始Y=1X0?NY保存Y结束图4-4-4求符号函数流程图SYMB:MOV A,40H;取取X JZ STOR ;X=0,Y=X JB ACC7,MINUS;X0 MOV A,#1 ;X0,Y=+1 SJMP STORMINUS:MOV A,#0FFH;X0,Y=-1STOR:MOV 41H,A;保存保存Y RET二按分支号转移二按分支号转移如:分支号如:分支号=0,程序转移到,程序转移到ADDR0处;当分支号处;当分支号=1,程序转移到程序转移到ADDR1处;处;。(1)用地址表法。设分支号已存入用地址表法。设分支号已存入A。MTJS:MOV DPTR,#TAB ;取
14、表首地址取表首地址 CLR C ;分支号分支号2 RLC A MOV R2,A MOVC A,A+DPTR;取分支地址低位取分支地址低位 PUSH ACC ;入栈保存入栈保存 MOV A,R2 INC A MOVC A,A+DPTR;取分支地址高位取分支地址高位 PUSH ACC ;入栈保存入栈保存 RET ;分支地址分支地址PC,转移转移TAB:DW ADDR0 ;分支地址表分支地址表 DW ADDR1 ADDR0:;程序段程序段0 A=?0处理一处理二处理1n(2)转移表法。转移表法。用分支转移指令用分支转移指令 JMP A+DPTRJMP A+DPTR。设设R7R6=分支号分支号MTJS
15、:MOV DPTR,#TAB;指向表首地址指向表首地址 MOV A,R7 ;分支号高字节分支号高字节3 MOV B,#03H MUL AB ;乘积不超过乘积不超过1字节字节 ADD A,DPH MOV DPH,A MOV A,R6 ;分支号低字节分支号低字节3 MOV B,#03H MUL AB XCH A,B ADD A,DPH ;DPHDPH+(R7、R6)3)高字节高字节 MOV DPH,A XCH A,B ;A(R7、R6)3)低字节低字节 JMP A+DPTR ;实现多分支转移实现多分支转移TAB:LJMP ADDR0 ;转移表转移表 LJMP ADDR1 LJMP ADDRNADD
16、R0:;程序段程序段0 A+DPTRTAB+R7R63A+DPTRTAB+R7R63DPTRTABDPTRTABJMP A+DPTRJMP A+DPTRLJMP ROUT0LJMP ROUT0 LJMP ROUT1LJMP ROUT1LJMP ROUTnLJMP ROUTnR6R6R7R73 3DPLDPLDPHDPHA A+4-54-54-54-5 循环程序循环程序循环程序循环程序包含多次重复执行的程序段,循环结构使程序紧凑。包含多次重复执行的程序段,循环结构使程序紧凑。4-5-14-5-1 循环程序的构成循环程序的构成循环控制?循环工作循环结束循环初始化YN各个环节任务:各个环节任务:一初
17、始化部分一初始化部分循环准备工作。如:清结果单元、循环准备工作。如:清结果单元、设指针、设循环控制变量初值等。设指针、设循环控制变量初值等。二循环体二循环体循环工作部分:循环工作部分:需多次重复处理的工作。需多次重复处理的工作。循环控制部分:循环控制部分:1.1.修改指针和循环控制变量。修改指针和循环控制变量。2.2.检测循环条件:满足循环条件,继续循环,否则退出循环。检测循环条件:满足循环条件,继续循环,否则退出循环。三三.结束部分结束部分 处理和保存循环结果。处理和保存循环结果。允许允许0 0次循环的循环结构:在循环工作之前检测循环条件。次循环的循环结构:在循环工作之前检测循环条件。4-5
18、-24-5-2 单重循环单重循环简单循环结构:循环体中不套循环。简单循环结构:循环体中不套循环。b例:求例:求n n个单字节数据的累加,设数据串已在个单字节数据的累加,设数据串已在4343H H起始单元,起始单元,数据串长度在数据串长度在4242H H单元,累加和不超过单元,累加和不超过2 2个字节。个字节。SUMSUM:MOVMOVR0R0,#42H#42H;设指针设指针MOVMOVA A,R0R0MOVMOVR2R2,A A ;循环计数器循环计数器n nCLRCLRA A ;结果单元清结果单元清0 0MOVMOVR3R3,A AADD1ADD1:INCINCR0R0 ;修改指针修改指针AD
19、DADDA A,R0 R0 ;累加累加JNC NEXTJNC NEXT ;处理进位处理进位INCINCR3R3 ;有进位,高字节加有进位,高字节加1 1NEXT:NEXT:DJNZ DJNZ R2,ADD1 R2,ADD1;循环控制:数据是否加完循环控制:数据是否加完?MOVMOV40H40H,A A ;循环结束,保存结果循环结束,保存结果MOVMOV41H41H,R3R3RETRET循环控制方法:计数控制、特征标志控制。循环控制方法:计数控制、特征标志控制。一一.计数控制:计数控制:设循环计数器,控制循环次数。正计数和倒计数两种方式。设循环计数器,控制循环次数。正计数和倒计数两种方式。例例:
20、为为一一串串7 7位位ASCIIASCII码码数数据据的的D D7 7位位加加上上奇奇校校验验,设设数数据据存存放放在片外在片外RAMRAM的的21012101H H起始单元,数据长度在起始单元,数据长度在21002100H H单元。单元。MOV DPTRMOV DPTR,#2100H#2100HMOVX AMOVX A,DPTRDPTRMOV R2MOV R2,A ANEXTNEXT:INC DPTRINC DPTRMOVX AMOVX A,DPTRDPTRORL AORL A,#80H#80HJNB PJNB P,PASSPASSMOVX DPTRMOVX DPTR,A APASSPASS
21、:DJNZ R2DJNZ R2,NEXTNEXTDONEDONE:SJMP DONESJMP DONE二二.特征控制:设定循环结束标志实现循环控制。特征控制:设定循环结束标志实现循环控制。例:找正数表最小值。正数表存在片外例:找正数表最小值。正数表存在片外RAMRAM中以中以LISTLIST为起为起始单元,用始单元,用-1-1作为结束标志。作为结束标志。STARTSTART:MOVMOVDPTRDPTR,#LIST#LIST ;数表首地址数表首地址 MOVMOVB B,#127#127 ;预置最小值预置最小值NEXTNEXT:MOVX A MOVX A,DPTRDPTR ;取数取数 INCIN
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 程序设计
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内